👋 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.
Pick a target
Anything with a public API is welcome. The ones we'd be happiest about right now, because people ask for them and nobody has them yet: GitLab, Odoo, Kaufland Marketplace, Zalando Partner, Matomo, Business Central. Before you claim one, check packages/backend/src/adapters/ for the slug: the list above used to name OpenWeather, Freshdesk, Toggl and Harvest, which have all shipped since, and that cost someone a wasted claim. 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.json or de/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
- Copy it, rename it
your-saas.json, and update slug, name, description, instructions, baseUrl, the authType/authConfig block and requiredEnvVars, then the tools[], one entry per endpoint you want to expose.
- Run
node scripts/regenerate-catalog.mjs. It rewrites packages/backend/src/adapters/catalog.ts for you, please don't edit that file by hand.
- Run
node scripts/validate-adapters.mjs and npm 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 parametrised packages/backend/src/adapters/catalog.spec.ts validates every adapter. If yours talks to a live API you can add an opt-in live spec next to it, intl/nominatim.live.spec.ts shows the pattern (skipped unless an env flag is set).
- Open a PR. Tag
@keysersoft for review.
What we look for in a good adapter
- ✅ Real, useful tools (not just "list everything")
- ✅ Clear
description strings, 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
We're happy to pair on the first PR, don't be shy 🙌
👋 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.
Pick a target
Anything with a public API is welcome. The ones we'd be happiest about right now, because people ask for them and nobody has them yet: GitLab, Odoo, Kaufland Marketplace, Zalando Partner, Matomo, Business Central. Before you claim one, check
packages/backend/src/adapters/for the slug: the list above used to name OpenWeather, Freshdesk, Toggl and Harvest, which have all shipped since, and that cost someone a wasted claim. 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
adapter/<saas-slug>).packages/backend/src/adapters/<region>/:intl/coingecko.jsonorde/dhl-tracking.jsonintl/whatsapp-business.json(see the{{ENV_VAR}}placeholders)intl/shopware-6.jsonde/vies-vat.jsonyour-saas.json, and updateslug,name,description,instructions,baseUrl, theauthType/authConfigblock andrequiredEnvVars, then thetools[], one entry per endpoint you want to expose.node scripts/regenerate-catalog.mjs. It rewritespackages/backend/src/adapters/catalog.tsfor you, please don't edit that file by hand.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).@keysersoftfor review.What we look for in a good adapter
descriptionstrings, the AI uses them to decide when to call the tool{{MY_VAR}}in the path instead of a tool parameterYou don't need to touch the website: the guide page, logo and marketplace listing are generated on our side after the merge.
Resources
We're happy to pair on the first PR, don't be shy 🙌