OpenCastle has 33 integrations. Each one adds a skill, an MCP server where
the tool has one, and the tools its agents may call — and each is an
Agent Plugin 1.0 directory, with its skill in
skills/<name>/SKILL.md and its server in mcp.json where it can be
shared (Teams' needs your tenant ID).
init adds the ones it detects; opencastle add <name> adds another.
Select a category from the sidebar or browse them all below.
npx --no), or a package pinned to an exact version —
never @latest. Every teammate and every CI run starts the same
server version, and an upgrade arrives as a reviewable diff. opencastle doctor
audits servers you add yourself by the same rules.
.env in the project
root. Claude Code, Cursor, Windsurf (Devin Desktop), OpenCode, Codex and Antigravity read them from the
environment they were started in — export them in your shell, or load .env
with a tool such as direnv, before you start the assistant. opencastle explain
lists the ones your project's MCP servers still need.
init writes to VS Code's
.vscode/mcp.json. Every other assistant gets the same server in its own file
and syntax; opencastle explain names the files for your project.
CMS
Sanity
GROQ queries, real-time collaboration.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
OAuth | HTTP/OAuth | sanity.io/docs |
MCP Config
{
"servers": {
"Sanity": {
"type": "http",
"url": "https://mcp.sanity.io"
}
}
} Contentful
GraphQL / REST API, structured content.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
| None set | @contentful/mcp-server | contentful.com/developers/docs |
MCP Config
{
"servers": {
"Contentful": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@contentful/mcp-server@1.23.2"
]
}
}
} Strapi
Open-source headless CMS.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
| None set | strapi-mcp | docs.strapi.io |
MCP Config
{
"servers": {
"Strapi": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"strapi-mcp@0.2.3"
]
}
}
} Databases
Supabase
Postgres + Auth + RLS + Edge Functions.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
OAuth | HTTP/OAuth | supabase.com/docs |
MCP Config
{
"servers": {
"Supabase": {
"type": "http",
"url": "https://mcp.supabase.com/mcp"
}
}
} Convex
Reactive backend with real-time sync.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
| No auth | Bundled with convex — your project's own copy | docs.convex.dev |
MCP Config
{
"servers": {
"Convex": {
"type": "stdio",
"command": "npx",
"args": [
"--no",
"convex",
"mcp",
"start"
]
}
}
} Prisma
Type-safe ORM with migrations and schema management.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
| No auth | Bundled with prisma — your project's own copy | prisma.io/docs |
MCP Config
{
"servers": {
"Prisma": {
"type": "stdio",
"command": "npx",
"args": [
"--no",
"prisma",
"mcp"
]
}
}
} Drizzle
TypeScript ORM with SQL-like query builder.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
| No auth | — | orm.drizzle.team |
Frameworks
Next.js
React framework with App Router, Server Components, and MCP devtools.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
| No auth | next-devtools-mcp | nextjs.org/docs |
MCP Config
{
"servers": {
"next-devtools": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"next-devtools-mcp@0.4.0"
]
}
}
} Astro
Content-driven web framework with islands architecture.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
| No auth | HTTP (hosted) | docs.astro.build |
MCP Config
{
"servers": {
"Astro docs": {
"type": "http",
"url": "https://mcp.docs.astro.build/mcp"
}
}
} Expo
React Native framework with EAS builds and OTA updates.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
OAuth | HTTP/OAuth | docs.expo.dev |
MCP Config
{
"servers": {
"Expo": {
"type": "http",
"url": "https://mcp.expo.dev/mcp"
}
}
} Deployment
Vercel
Deployment and hosting platform.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
OAuth | HTTP/OAuth | vercel.com/docs |
MCP Config
{
"servers": {
"Vercel": {
"type": "http",
"url": "https://mcp.vercel.com"
}
}
} Netlify
Deployment, serverless functions, edge config.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
OAuth | @netlify/mcp | github.com/netlify/netlify-mcp |
MCP Config
{
"servers": {
"Netlify": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@netlify/mcp@1.17.0"
]
}
}
} Cloudflare
Edge computing, CDN, DNS, and serverless platform.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
OAuth | HTTP/OAuth | developers.cloudflare.com |
MCP Config
{
"servers": {
"Cloudflare": {
"type": "http",
"url": "https://mcp.cloudflare.com/mcp"
}
}
} Coolify
Self-hosted deployment platform.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
API Key | @masonator/coolify-mcp | coolify.io/docs |
COOLIFY_ACCESS_TOKEN — generate in your Coolify dashboard → API Tokens.COOLIFY_BASE_URL — your Coolify instance URL (e.g. https://coolify.example.com).For VS Code, add both to
.env; for any other assistant, to its environment:
COOLIFY_ACCESS_TOKEN="your-token-here"
COOLIFY_BASE_URL="https://coolify.example.com" MCP Config
{
"servers": {
"Coolify": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@masonator/coolify-mcp@3.7.0"
],
"envFile": "${workspaceFolder}/.env"
}
}
} Hetzner Cloud
Servers, volumes, private networks and firewalls, through the hcloud CLI or Pulumi.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
API Key | — | docs.hetzner.com/cloud |
hetzner-cloud skill
and no MCP server. Agents run the hcloud CLI or Pulumi in a terminal.
HCLOUD_TOKEN — Hetzner Cloud Console → project → Security → API tokens (read-write).The hcloud CLI and Pulumi read it from the shell the agent runs them in, so export it there. No MCP config passes it, and
opencastle explain does not list it.
Codebase Tools
NX
Monorepo build system.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
| No auth | Bundled with nx — your project's own copy | nx.dev/getting-started |
MCP Config
{
"servers": {
"Nx": {
"type": "stdio",
"command": "npx",
"args": [
"--no",
"nx",
"mcp"
]
}
}
} Turborepo
Monorepo build system with remote caching.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
| No auth | — | turbo.build/repo/docs |
Testing
Vitest
Vite-native unit and integration testing.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
| No auth | — | vitest.dev |
Playwright
Cross-browser E2E testing by Microsoft.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
| No auth | @playwright/mcp | playwright.dev/docs |
MCP Config
{
"servers": {
"Playwright": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@playwright/mcp@0.0.83"
]
}
}
} Cypress
E2E and component testing in the browser.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
| No auth | — | docs.cypress.io |
Chrome DevTools
Browser testing, screenshots, DOM inspection.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
| No auth | chrome-devtools-mcp | developer.chrome.com |
MCP Config
{
"servers": {
"chrome-devtools": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@1.10.1"
]
}
}
} Issue Trackers
Linear
Issue tracking with MCP integration.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
OAuth | HTTP/OAuth | linear.app/docs/mcp |
.env.
MCP Config
{
"servers": {
"Linear": {
"type": "http",
"url": "https://mcp.linear.app/mcp"
}
}
} Jira
Atlassian issue tracking via Rovo MCP.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
OAuth | HTTP/OAuth | developer.atlassian.com |
MCP Config
{
"servers": {
"Jira": {
"type": "http",
"url": "https://mcp.atlassian.com/v1/mcp"
}
}
} Trello
Visual board task management via MCP.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
API Key | @delorenj/mcp-server-trello | developer.atlassian.com |
TRELLO_API_KEY — create at trello.com/app-key → API Key.TRELLO_TOKEN — generate at trello.com/app-key → Token.For VS Code, add both to
.env; for any other assistant, to its environment:
TRELLO_API_KEY="your-api-key-here"
TRELLO_TOKEN="your-token-here" MCP Config
{
"servers": {
"Trello": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@delorenj/mcp-server-trello@1.8.1"
],
"envFile": "${workspaceFolder}/.env"
}
}
} Code Hosting
GitHub
Pull requests, review threads, failing checks and stacked pull requests, through GitHub's own MCP server and the gh CLI.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
OAuth in VS Code, Token elsewhere | HTTP | github/github-mcp-server |
GITHUB_PERSONAL_ACCESS_TOKENGitHub's server accepts OAuth only from VS Code. For Claude Code, Cursor, Windsurf (Devin Desktop), OpenCode and Codex,
init writes the same URL with an
Authorization: Bearer header that reads the token from the environment.
Create a fine-grained token at github.com → Settings → Developer settings →
Personal access tokens. Limit it to the repositories your agents work in, and give it
Contents, Pull requests and Issues read
and write. Antigravity can't read variables in its MCP config. Put the header with your
token in your own ~/.gemini/config/mcp_config.json, never in the project's
config, which is committed. opencastle doctor gives the same advice.
GITHUB_PERSONAL_ACCESS_TOKEN="github_pat_your-token-here" actions for CI logs, add an
X-MCP-Toolsets header to the entry. sync doesn't overwrite an
entry you've edited.
github-platform skill splits a
change too big for one review into a chain of PRs, each on the branch below, with
GitHub's gh stack extension
(gh extension install github/gh-stack). For review threads and job logs it
uses the gh CLI, which signs in on its own (gh auth login).
MCP Config
{
"servers": {
"GitHub": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
}
}
} GitLab
Merge requests, review threads, failed pipelines and stacked merge requests, through GitLab's own MCP server and the glab CLI.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
OAuth | HTTP/OAuth | docs.gitlab.com |
.env. It works
on every tier, Free included, once MCP access is allowed: by a group owner for the
top-level group on GitLab.com, or by an administrator for a self-managed instance.
gitlab.com with your
instance's host, as in https://gitlab.example.com/api/v4/mcp. This needs
GitLab 18.6 or later. sync doesn't overwrite an entry you've edited.
gitlab-platform skill chains
MRs, each targeting the branch below. GitLab retargets the next one when a layer merges.
For raw API calls and CI linting it uses the glab CLI, which signs in on its
own (glab auth login).
MCP Config
{
"servers": {
"GitLab": {
"type": "http",
"url": "https://gitlab.com/api/v4/mcp"
}
}
} Notifications
Slack
Connect the @kazuph/mcp-slack MCP server so your AI agents can post progress updates,
request approvals, and read responses — all through Slack channels.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
API Key | @kazuph/mcp-slack | api.slack.com/docs |
mcp.slack.com) requires OAuth, but VS Code
redirects to http://127.0.0.1:<port> which Slack rejects
because it requires HTTPS redirect URLs.
We use @kazuph/mcp-slack instead — it runs locally via stdio
and takes a bot token, no OAuth needed.
1. Create a Slack App
- Go to api.slack.com/apps
- Click Create New App → From scratch
- Name it something like
OpenCastle Agentsand select your workspace - Click Create App
- In the left sidebar, go to App Home and enable "Allow users to send Slash commands and messages from the messages tab"
2. Configure Bot Token Scopes
- In your Slack app settings, go to OAuth & Permissions
- Scroll down to Bot Token Scopes
- Add the scopes listed below
Minimum (agent notifications)
| Scope | Purpose |
|---|---|
chat:write | Send messages and replies |
channels:read | List channels |
channels:history | Read messages in public channels |
users:read | Look up user profiles |
Recommended (full MCP server capabilities)
| Scope | Purpose |
|---|---|
chat:write | Send messages |
channels:read | List channels and metadata |
channels:history | Read public channel history |
channels:manage | Create/rename channels, set topics |
groups:read | List private channels |
groups:history | Read private channel history |
mpim:read | List group DMs |
mpim:history | Read group DM history |
im:read | List direct message conversations |
im:history | Read DM history |
users:read | Read user profiles |
users:read.email | Read user emails |
channels:manage is optional — only
needed if agents should create or rename channels. Bot tokens cannot
search messages; if you need search, use a user token (xoxp-…)
instead.
3. Get Your Bot Token
- Still in your Slack app settings, scroll to the top of the OAuth & Permissions page
- Click Install to Workspace (or Reinstall to Workspace if you've already installed it before adding scopes)
- Authorize the app when prompted
- Copy the Bot User OAuth Token (
xoxb-…) that appears at the top of the page
.env (the .gitignore entries init writes cover it)
or in your shell's environment. Never commit it to source control.
For VS Code, add the token to .env; for any other assistant, to its environment:
SLACK_MCP_XOXB_TOKEN="xoxb-your-token-here" 4. MCP Config
VS Code — .vscode/mcp.json includes this once Slack is
added (npx opencastle add slack, or init when it is selected):
{
"servers": {
"Slack": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@kazuph/mcp-slack@1.3.2"
],
"envFile": "${workspaceFolder}/.env",
"env": {
"SLACK_MCP_ADD_MESSAGE_TOOL": "true"
}
}
}
} SLACK_MCP_ADD_MESSAGE_TOOL env var
enables the conversations_add_message tool, which is disabled
by default for safety. Set it to true to allow posting to all
channels, or to a comma-separated list of channel IDs to restrict posting.
Cursor — the Slack server appears from .cursor/mcp.json
(auto-generated by npx opencastle init). Open Cursor Settings → MCP → Enable.
Claude Code — reads config from .mcp.json
(auto-generated). Run claude mcp list to verify.
5. Verify
Ask your AI assistant:
"List my Slack channels using the Slack MCP tools"
If it returns a list of channels, the connection is working.
Troubleshooting
"missing_scope" error — Go back to your Slack app's OAuth & Permissions → Bot Token Scopes, add the missing scope(s), then click Reinstall to Workspace.
"not_authed" / "invalid_auth" — Check that SLACK_MCP_XOXB_TOKEN
holds a valid xoxb-… token with no trailing whitespace — in .env
for VS Code, in the assistant's environment for the others.
Bot can't see channels — Invite the bot to the channel:
/invite @OpenCastle Agents.
Can't post messages — Ensure
SLACK_MCP_ADD_MESSAGE_TOOL=true is set in your MCP config's
env block.
"Sending messages to this app has been turned off" — Go to Slack app settings → App Home → enable "Allow users to send Slash commands and messages from the messages tab".
Microsoft Teams
Agent notifications via Teams channels.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
OAuth | HTTP/OAuth | learn.microsoft.com |
MCP Config
{
"servers": {
"Teams": {
"type": "http",
"url": "https://agent365.svc.cloud.microsoft/agents/tenants/${input:tenant_id}/servers/mcp_TeamsServer"
}
},
"inputs": [
{
"id": "tenant_id",
"type": "promptString",
"description": "Microsoft Entra tenant ID (GUID)"
}
]
} REPLACE_ME — replace it with your tenant ID.
Knowledge
Notion
Workspace knowledge base, docs, and database hub.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
OAuth | HTTP/OAuth | developers.notion.com |
MCP Config
{
"servers": {
"Notion": {
"type": "http",
"url": "https://mcp.notion.com/mcp"
}
}
} Design
Figma
Design tokens, component specs, asset export.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
OAuth | HTTP/OAuth | Figma MCP server guide |
.env.
Figma lists the clients its remote server supports, among them Claude Code,
Cursor, VS Code and Codex. For an assistant not on that list, use Figma's desktop
server at http://127.0.0.1:3845/mcp with the Figma desktop app running.
MCP Config
{
"servers": {
"Figma": {
"type": "http",
"url": "https://mcp.figma.com/mcp"
}
}
} Resend
Transactional email API with React templates.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
API Key | resend-mcp | resend.com/docs |
RESEND_API_KEYGenerate at resend.com → API Keys. For VS Code, add it to
.env; for any other assistant, to its environment:
RESEND_API_KEY="re_your-key-here" MCP Config
{
"servers": {
"Resend": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"resend-mcp@2.24.0"
],
"envFile": "${workspaceFolder}/.env"
}
}
} Payments
Stripe
Payments, billing, and financial infrastructure.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
OAuth | HTTP/OAuth | docs.stripe.com |
MCP Config
{
"servers": {
"Stripe": {
"type": "http",
"url": "https://mcp.stripe.com"
}
}
} Observability
Sentry
Error tracking, performance monitoring, and session replay.
| Auth Type | MCP Package | Official Docs |
|---|---|---|
API Key | @sentry/mcp-server | docs.sentry.io |
SENTRY_ACCESS_TOKENGenerate at sentry.io → Settings → Auth Tokens. For VS Code, add it to
.env; for any other assistant, to its environment:
SENTRY_ACCESS_TOKEN="sntrys_your-token-here" MCP Config
{
"servers": {
"Sentry": {
"type": "stdio",
"command": "npx",
"args": [
"@sentry/mcp-server@0.42.0"
],
"envFile": "${workspaceFolder}/.env"
}
}
}