Repository navigation
🐣 Good first issue: contribute a new MCP adapter #982
Description
👋 New here? Adding a pre-built MCP adapter is the most beginner-friendly way to contribute. It's typically a single JSON file and takes ~30 minutes once you've picked a target.
Claimed targets
Comment below to claim one. A claim without a PR for 14 days goes back in the pool, no hard feelings, life happens.
| target | who | since | PR |
|---|---|---|---|
| 30 Aug 2026 | claim lapsed 20 Sep, shipped by us | ||
| Directus | @dor1smeow | 20 Sep 2026 | #697 ✅ merged |
| Baserow | @7k777 | 23 Sep 2026 | #828 ✅ merged |
| Gitea | @abdd8433 | 15 Oct 2026 | #1275 ✅ merged |
| Prometheus | @Parth-Jadhav-2004 | 21 Oct 2026 | in progress |
| Strapi | @YYDW-1211 | 24 Oct 2026 | in progress |
| Ollama | @srinivasa-reddy25 | 25 Oct 2026 | #1250 ✅ merged |
| NocoDB | @Manideep667320 | 25 Oct 2026 | #1254 ✅ merged |
| Home Assistant | @GallaGit | 25 Oct 2026 | #1285 ✅ merged |
| Immich | @GallaGit | 27 Oct 2026 | in progress (#1238) |
| Sentry | @Nagharjun17 | 12 Sep 2026 | #551 ✅ merged |
| Airtable | @Rudra-G-23 | 13 Sep 2026 | #610 ✅ merged |
| @dor1smeow | 16 Sep 2026 | #641 — superseded by us, see below. Our mistake. |
Pick a target
⚠️ 19 Sep 2026 — we shipped 64 adapters at once and it cost @dor1smeow a claimA large connector wave landed in #642 and #647. It included Odoo, Kaufland Marketplace, Zalando Partner and Matomo — four of the six targets this section was advertising as free, and Matomo was assigned to @dor1smeow six days earlier, with a spec from me in the thread below. Their PR #641 was finished, correct, and closed as a duplicate of work they never knew was coming.
That is not a collision, it is us failing to say what we were building. I am sorry. The list below has been rebuilt and every entry was checked against the catalogue on 19 Sep, slug by slug, with a script rather than from memory. If you are mid-way through something and we have just landed on top of it, say so here and I will make it right.
Anything with a public API is welcome. Verified free as of 22 Oct 2026:
Dev & project tooling — GitLab (shipped), Bitbucket (shipped), Gitea (shipped), Confluence (covered by the Atlassian connector), Sonarqube (own issue: #1240), Monday.com (shipped), Smartsheet, Pipefy, Podio
Self-hosted & infra — Grafana (shipped), Prometheus (claimed 21 Oct), Home Assistant (shipped), Immich (claimed 27 Oct, #1238)
Content & data platforms — Strapi (claimed 24 Oct), Directus (merged), Baserow (merged), NocoDB (merged), Figma (shipped), Miro (shipped)
Finance & payments — Xero (shipped), Zoho Books (shipped), Qonto (shipped), Revolut Business (shipped), SumUp, Klarna
Scheduling & documents — Cal.com (shipped), Docusign (shipped)
Hard-protocol, for the adventurous — Twinfield (SOAP headers), Firebird, DB2/IBM i. These need engine work first; comment before starting and I will tell you what is missing.
onOffice has moved out of that group: v0.10.0 added HMAC request signing (authType: "HMAC"), so an adapter can now describe the canonical string its vendor signs instead of waiting on engine work. kaufland.json is the worked example. It is free and it is a good one.
Before you claim one, still check packages/backend/src/adapters/ for the slug — 257 adapters ship today and this list ages. The community wishlist is the place to propose others. Check the table above and the open PRs so we don't duplicate effort, then comment here saying which one you'll work on.
Step-by-step
- Fork the repo and create a branch (
adapter/<saas-slug>). - Pick an existing adapter close to yours as a template, they all live under
packages/backend/src/adapters/<region>/:- For a REST API with a token:
intl/coingecko.jsonorde/dhl-tracking.json - For a REST API where an account id has to go into the path:
intl/whatsapp-business.json(see the{{ENV_VAR}}placeholders) - For a GraphQL service:
intl/shopware-6.json - For an API without auth at all:
de/vies-vat.json
- For a REST API with a token:
- Copy it, rename it
your-saas.json, and updateslug,name,description,instructions,baseUrl, theauthType/authConfigblock andrequiredEnvVars, then thetools[], one entry per endpoint you want to expose. - Run
node scripts/regenerate-catalog.mjs. It rewritespackages/backend/src/adapters/catalog.tsfor you, please don't edit that file by hand. - Run
node scripts/validate-adapters.mjsandnpm test -w packages/backend. The validator now prints a rule id, the JSON path and a suggested fix for every blocking error, so read its output before asking. The parametrisedpackages/backend/src/adapters/catalog.spec.tsvalidates every adapter. If yours talks to a live API you can add an opt-in live spec next to it,intl/nominatim.live.spec.tsshows the pattern (skipped unless an env flag is set). - Open a PR. Tag
@keysersoftfor review.
What we look for in a good adapter
- ✅ Real, useful tools (not just "list everything")
- ✅ Clear
descriptionstrings, the AI uses them to decide when to call the tool - ✅ Path/query/body parameters mapped explicitly (don't rely on auto-detection alone)
- ✅ Auth correctly scoped (least privilege wins). If every call needs an account or org id, make it an env var and use
{{MY_VAR}}in the path instead of a tool parameter - ✅ At least one example value per tool
- ✅ Read-only first. Write tools are fine in a second PR once the read side works
You don't need to touch the website: the guide page, logo and marketplace listing are generated on our side after the merge.
Resources
- 📖 Tool Definition Format, the JSON schema
- 📖 Connector Guides
- 📖 Existing adapters, copy-paste-friendly templates
- 💬 Stuck? Ping us in Discussions / Q&A
We're happy to pair on the first PR, don't be shy 🙌
Activity
abdd8433 commentedon Oct 15, 2026
Hi! I'd like to claim Gitea. I'll open a PR within 14 days. Thanks!
helpcodeai commentedon Oct 15, 2026
@abdd8433 Gitea is yours: claimed on 15 Oct, I added you to the table above. Please open the PR by 29 Oct.
We checked that no adapter for Gitea (or Forgejo) is in the catalogue or planned in our own connector batches, so nobody will land on top of your work.
A few pointers:
intl/coingecko.jsonis a good template for a REST API with a token. Gitea takesAuthorization: token <TOKEN>; please make the instance URL an env var (e.g.GITEA_URL), since most Gitea servers are self-hosted.node scripts/regenerate-catalog.mjsandnode scripts/validate-adapters.mjsbefore opening the PR, and tag @keysersoft for review.Thanks for contributing!
Parth-Jadhav-2004 commentedon Oct 21, 2026
I'd like to claim Prometheus, checked and there's no adapter for it under adapters/. Plan is a read-only HTTP API adapter (instant/range queries, series, labels, targets, alerts) with optional bearer/basic auth, plus a live spec behind
RUN_PROMETHEUS_LIVE. PR within the 14 days.helpcodeai commentedon Oct 21, 2026
@Parth-Jadhav-2004 Prometheus is yours, thanks! I added you to the table above, so the PR is due by 4 Nov. We checked: there's no Prometheus adapter in the catalogue and nothing planned on our side, so nobody will land on top of your work.
A few pointers:
PROMETHEUS_URL), since almost every Prometheus is self-hosted. On AnythingMCP Cloud it has to be reachable from the internet, worth a line in the instructions.intl/grafana.json, which can run PromQL through a Grafana data source. Please word the descriptions so the AI knows this one talks to Prometheus directly. Otherwise it picks the wrong tool when both are installed.authType. Most Prometheus servers have no auth, and the ones that do use basic auth or sit behind a proxy with a token. Have a look at howde/destatis-genesis.jsonusesoptionalEnvVars, pick what keeps setup simplest and tell us in the PR. We can sort out the details in review.stepa sensible default and use short time ranges in the examples.intl/grafana.live.spec.tsis a good pattern for theRUN_PROMETHEUS_LIVEspec.Then the usual:
node scripts/regenerate-catalog.mjs,node scripts/validate-adapters.mjs, and open the PR.sharmis-tp commentedon Oct 22, 2026
I'd like to claim a target from the pool. I'd add the adapter as a single JSON file following the existing pre-built adapters and test each tool against a real account or instance of the service, opening the PR well within the 14-day window. Which targets are still free after the #642 and #647 wave, so I don't pick one that already shipped?
helpcodeai commentedon Oct 22, 2026
@sharmis-tp thanks for asking first, and sorry: the list in the issue body was out of date. Since 19 Sep we shipped GitLab, Bitbucket, Monday.com, Grafana, Figma, Miro, Xero, Zoho Books, Qonto, Revolut Business, Cal.com and DocuSign ourselves, and Confluence is covered by the Atlassian connector. Gitea and Prometheus are claimed (see the table). I've just cleaned up the list above.
I checked the rest against main this morning. These are still free and we have nothing planned for them: SonarQube, Smartsheet, Pipefy, Podio, Home Assistant, Immich, Strapi, NocoDB, SumUp, Klarna and onOffice.
Since you want to test every tool for real, pick one you have an account or an instance for. If you don't, Home Assistant, Immich, Strapi, NocoDB and SonarQube all run locally in Docker in a few minutes. onOffice is the trickiest one because it signs requests with HMAC,
de/kaufland.jsonshows how that works.Tell me which one here and I'll add you to the table with today's date. Then follow the "Add an adapter" steps in AGENTS.md, starting from
npm run adapter:new.YYDW-1211 commentedon Oct 24, 2026
I'd like to claim Strapi. I checked the current adapter catalogue, the claim table, comments, and open pull requests and couldn't find an existing Strapi adapter or active implementation. I plan to add a token-authenticated REST adapter covering useful core content API operations, validate it against a local Strapi instance, regenerate the catalogue, and run the adapter validator and backend tests. I can open the PR within the 14-day window.
helpcodeai commentedon Oct 24, 2026
@YYDW-1211 Strapi is yours, thanks for checking the catalogue and the open PRs first. I've added you to the table above.
A few pointers:
intl/directus.jsonis the closest existing adapter: a headless CMS with a user-supplied base URL, a static token inAuthorization: Bearer, read-only tools. Copy its shape and the tone of itsinstructions.{{STRAPI_URL}}base URL so both Strapi Cloud and self-hosted instances work. Ininstructions, say that an instance on a private network must be allowed throughSSRF_ALLOWED_HOSTSon a self-hosted AnythingMCP, and that only publicly reachable instances work on Cloud.instructions(v4 responses are shaped differently). A read-only API token is enough for a first version; keep create, update and delete out of scope.AGENTS.md("Add an adapter") and aintl/strapi.live.spec.tswith live calls behindRUN_STRAPI_LIVE=1.The window is 14 days, so a PR by 7 Nov. If you need longer, just say so here.
srinivasa-reddy25 commentedon Oct 25, 2026
I'd like to claim Ollama. I checked the catalogue, the claim table and open PRs: there's no Ollama adapter (the closest are
intl/huggingface.jsonandintl/mistral.json, which are hosted APIs). Plan: a REST adapter on a user-suppliedOLLAMA_URL(defaulthttp://localhost:11434, with the SSRF_ALLOWED_HOSTS note for local/private hosts) and an optionalOLLAMA_API_KEYsent as a Bearer token for Ollama Cloud or an authenticating proxy. Tools: version (probe), list local and running models, show model details, chat, generate and embed, all non-streaming. No pull/delete/copy/push, so the adapter never changes which models are installed. Includes a live spec gated behindRUN_OLLAMA_LIVE=1. PR shortly.helpcodeai commentedon Oct 25, 2026
@srinivasa-reddy25 Ollama is yours, thanks for checking first. I'm reviewing #1250 now.
Add the Strapi 5 read-only adapter (#982) (#1307)