OpenCastle

Docs / Integrations

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.

Pinned like dependencies. Every MCP server OpenCastle writes is the vendor's own remote server, the project's own copy of a tool it already depends on (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.
Where tokens go. VS Code reads them from .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.
The MCP configs below are the entries 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 TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth sanity.io/docs
OAuth: Your assistant opens a browser to sign in the first time it starts the server.

MCP Config

{
  "servers": {
    "Sanity": {
      "type": "http",
      "url": "https://mcp.sanity.io"
    }
  }
}

Contentful

GraphQL / REST API, structured content.

Auth TypeMCP PackageOfficial Docs
None set @contentful/mcp-server contentful.com/developers/docs
Credentials: OpenCastle writes this server without any, but the server may need credentials before it can reach your content. See Contentful's developer docs, and set what it asks for where your assistant reads tokens.

MCP Config

{
  "servers": {
    "Contentful": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@contentful/mcp-server@1.23.2"
      ]
    }
  }
}

Strapi

Open-source headless CMS.

Auth TypeMCP PackageOfficial Docs
None set strapi-mcp docs.strapi.io
Credentials: OpenCastle writes this server without any, but the server may need credentials before it can reach your content. See Strapi's docs, and set what it asks for where your assistant reads tokens.

MCP Config

{
  "servers": {
    "Strapi": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "strapi-mcp@0.2.3"
      ]
    }
  }
}

Databases

Supabase

Postgres + Auth + RLS + Edge Functions.

Auth TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth supabase.com/docs
OAuth: Your assistant opens a browser to sign in the first time it starts the server.

MCP Config

{
  "servers": {
    "Supabase": {
      "type": "http",
      "url": "https://mcp.supabase.com/mcp"
    }
  }
}

Convex

Reactive backend with real-time sync.

Auth TypeMCP PackageOfficial 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 TypeMCP PackageOfficial 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 TypeMCP PackageOfficial Docs
No auth — orm.drizzle.team
Skills only: This integration adds a skill but no MCP server. Nothing to configure.

Frameworks

Next.js

React framework with App Router, Server Components, and MCP devtools.

Auth TypeMCP PackageOfficial 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 TypeMCP PackageOfficial 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 TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth docs.expo.dev
OAuth: Your assistant opens a browser to sign in the first time it starts the server.

MCP Config

{
  "servers": {
    "Expo": {
      "type": "http",
      "url": "https://mcp.expo.dev/mcp"
    }
  }
}

Deployment

Vercel

Deployment and hosting platform.

Auth TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth vercel.com/docs
OAuth: Your assistant opens a browser to sign in the first time it starts the server.

MCP Config

{
  "servers": {
    "Vercel": {
      "type": "http",
      "url": "https://mcp.vercel.com"
    }
  }
}

Netlify

Deployment, serverless functions, edge config.

Auth TypeMCP PackageOfficial Docs
OAuth @netlify/mcp github.com/netlify/netlify-mcp
Sign-in: Netlify's official server signs you in through the browser on first use. If that fails, Netlify documents a personal access token fallback — see its README, and keep the token out of any config you commit.

MCP Config

{
  "servers": {
    "Netlify": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@netlify/mcp@1.17.0"
      ]
    }
  }
}

Cloudflare

Edge computing, CDN, DNS, and serverless platform.

Auth TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth developers.cloudflare.com
OAuth: Your assistant opens a browser to sign in the first time it starts the server.

MCP Config

{
  "servers": {
    "Cloudflare": {
      "type": "http",
      "url": "https://mcp.cloudflare.com/mcp"
    }
  }
}

Coolify

Self-hosted deployment platform.

Auth TypeMCP PackageOfficial Docs
API Key @masonator/coolify-mcp coolify.io/docs
Required env vars:
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 TypeMCP PackageOfficial Docs
API Key — docs.hetzner.com/cloud
Skills only: This integration adds the hetzner-cloud skill and no MCP server. Agents run the hcloud CLI or Pulumi in a terminal.
Required env var:
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 TypeMCP PackageOfficial 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 TypeMCP PackageOfficial Docs
No auth — turbo.build/repo/docs
Skills only: This integration adds a skill but no MCP server. Nothing to configure.

Testing

Vitest

Vite-native unit and integration testing.

Auth TypeMCP PackageOfficial Docs
No auth — vitest.dev
Skills only: This integration adds a skill but no MCP server. Nothing to configure.

Playwright

Cross-browser E2E testing by Microsoft.

Auth TypeMCP PackageOfficial 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 TypeMCP PackageOfficial Docs
No auth — docs.cypress.io
Skills only: This integration adds a skill but no MCP server. Nothing to configure.

Chrome DevTools

Browser testing, screenshots, DOM inspection.

Auth TypeMCP PackageOfficial 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 TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth linear.app/docs/mcp
OAuth: Linear's own remote server. Your assistant opens a browser window to sign in the first time it connects — no API key in .env.

MCP Config

{
  "servers": {
    "Linear": {
      "type": "http",
      "url": "https://mcp.linear.app/mcp"
    }
  }
}

Jira

Atlassian issue tracking via Rovo MCP.

Auth TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth developer.atlassian.com
OAuth: Your assistant opens a browser to sign in the first time it starts the server.

MCP Config

{
  "servers": {
    "Jira": {
      "type": "http",
      "url": "https://mcp.atlassian.com/v1/mcp"
    }
  }
}

Trello

Visual board task management via MCP.

Auth TypeMCP PackageOfficial Docs
API Key @delorenj/mcp-server-trello developer.atlassian.com
Required env vars:
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 TypeMCP PackageOfficial Docs
OAuth in VS Code, Token elsewhere HTTP github/github-mcp-server
VS Code signs in with OAuth. It opens a browser window the first time it connects. You don't need a token.
Every other assistant needs a token: GITHUB_PERSONAL_ACCESS_TOKEN
GitHub'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"
Toolsets: repositories, issues, pull requests, users and context are on by default. To turn on others, such as actions for CI logs, add an X-MCP-Toolsets header to the entry. sync doesn't overwrite an entry you've edited.
Stacked pull requests: the 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 TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth docs.gitlab.com
OAuth: the first time your assistant connects, it registers itself with GitLab and opens a browser window to sign in. Nothing goes in .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.
Self-managed: in the URL, replace 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.
Stacked merge requests: the 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 TypeMCP PackageOfficial Docs
API Key @kazuph/mcp-slack api.slack.com/docs
Why not the official Slack MCP server? The official server (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

  1. Go to api.slack.com/apps
  2. Click Create New App → From scratch
  3. Name it something like OpenCastle Agents and select your workspace
  4. Click Create App
  5. 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

  1. In your Slack app settings, go to OAuth & Permissions
  2. Scroll down to Bot Token Scopes
  3. Add the scopes listed below

Minimum (agent notifications)

ScopePurpose
chat:writeSend messages and replies
channels:readList channels
channels:historyRead messages in public channels
users:readLook up user profiles

Recommended (full MCP server capabilities)

ScopePurpose
chat:writeSend messages
channels:readList channels and metadata
channels:historyRead public channel history
channels:manageCreate/rename channels, set topics
groups:readList private channels
groups:historyRead private channel history
mpim:readList group DMs
mpim:historyRead group DM history
im:readList direct message conversations
im:historyRead DM history
users:readRead user profiles
users:read.emailRead user emails
Note: 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

  1. Still in your Slack app settings, scroll to the top of the OAuth & Permissions page
  2. Click Install to Workspace (or Reinstall to Workspace if you've already installed it before adding scopes)
  3. Authorize the app when prompted
  4. Copy the Bot User OAuth Token (xoxb-…) that appears at the top of the page
Security: Treat this token like a password. Keep it in .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"
      }
    }
  }
}
Note: The 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 TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth learn.microsoft.com
OAuth: Your assistant opens a browser to sign in the first time it starts the server.

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)"
    }
  ]
}
Tenant ID: VS Code asks for your Microsoft Entra tenant ID when the server starts. In every other assistant's config the URL contains REPLACE_ME — replace it with your tenant ID.

Knowledge

Notion

Workspace knowledge base, docs, and database hub.

Auth TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth developers.notion.com
OAuth: Your assistant opens a browser to sign in the first time it starts the server.

MCP Config

{
  "servers": {
    "Notion": {
      "type": "http",
      "url": "https://mcp.notion.com/mcp"
    }
  }
}

Design

Figma

Design tokens, component specs, asset export.

Auth TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth Figma MCP server guide
OAuth: Figma's own remote server. Your assistant opens a browser window to sign in the first time it connects — no token in .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"
    }
  }
}

Email

Resend

Transactional email API with React templates.

Auth TypeMCP PackageOfficial Docs
API Key resend-mcp resend.com/docs
Required env var: RESEND_API_KEY
Generate 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 TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth docs.stripe.com
OAuth: Your assistant opens a browser to sign in the first time it starts the server.

MCP Config

{
  "servers": {
    "Stripe": {
      "type": "http",
      "url": "https://mcp.stripe.com"
    }
  }
}

Observability

Sentry

Error tracking, performance monitoring, and session replay.

Auth TypeMCP PackageOfficial Docs
API Key @sentry/mcp-server docs.sentry.io
Required env var: SENTRY_ACCESS_TOKEN
Generate 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"
    }
  }
}