OpenCastle

Docs / Plugin Setup Guide

Each plugin bundles skills, optional MCP server configs, and agent tool mappings. Select a category from the sidebar or browse all plugins below.

CMS Plugins

Sanity

GROQ queries, real-time collaboration.

Auth TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth sanity.io/docs
OAuth: This plugin uses OAuth. The MCP server will open a browser window for authentication when you first connect.

MCP Config

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

Contentful

GraphQL / REST API, structured content.

Auth TypeMCP PackageOfficial Docs
No auth @contentful/mcp-server contentful.com/developers/docs

MCP Config

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

Strapi

Open-source headless CMS.

Auth TypeMCP PackageOfficial Docs
No auth strapi-mcp docs.strapi.io

MCP Config

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

Database Plugins

Supabase

Postgres + Auth + RLS + Edge Functions.

Auth TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth supabase.com/docs
OAuth: This plugin uses OAuth. The MCP server will open a browser window for authentication when you first connect.

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 convex docs.convex.dev

MCP Config

{
  "servers": {
    "Convex": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "convex@latest", "mcp", "start"]
    }
  }
}

Prisma

Type-safe ORM with migrations and schema management.

Auth TypeMCP PackageOfficial Docs
No auth @anthropic/prisma-mcp prisma.io/docs

MCP Config

{
  "servers": {
    "Prisma": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@anthropic/prisma-mcp@latest"]
    }
  }
}

Framework Plugins

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@latest"]
    }
  }
}

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"
    }
  }
}

Deployment

Vercel

Deployment and hosting platform.

Auth TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth vercel.com/docs
OAuth: This plugin uses OAuth. The MCP server will open a browser window for authentication when you first connect.

MCP Config

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

Netlify

Deployment, serverless functions, edge config.

Auth TypeMCP PackageOfficial Docs
API Key netlify-mcp docs.netlify.com
Required env var: NETLIFY_AUTH_TOKEN
Generate at app.netlify.com → User Settings → Applications → Personal access tokens. Add it to your .env file:
NETLIFY_AUTH_TOKEN="your-token-here"

MCP Config

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

Codebase Tools

NX

Monorepo build system.

Auth TypeMCP PackageOfficial Docs
No auth Bundled with nx nx.dev/getting-started

MCP Config

{
  "servers": {
    "NX": {
      "type": "stdio",
      "command": "npx",
      "args": ["nx", "mcp"]
    }
  }
}

Turborepo

Monorepo build system with remote caching.

Auth TypeMCP PackageOfficial Docs
No auth turbo.build/repo/docs
Skills only: This plugin provides agent skills but no MCP server. No additional configuration needed.

Testing

Vitest

Vite-native unit and integration testing.

Auth TypeMCP PackageOfficial Docs
No auth vitest.dev
Skills only: This plugin provides agent skills but no MCP server. No additional configuration needed.

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@latest"]
    }
  }
}

Cypress

E2E and component testing in the browser.

Auth TypeMCP PackageOfficial Docs
No auth docs.cypress.io
Skills only: This plugin provides agent skills but no MCP server. No additional configuration needed.

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@latest"]
    }
  }
}

Issue Trackers

Linear

Issue tracking with MCP integration.

Auth TypeMCP PackageOfficial Docs
API Key @mseep/linear-mcp linear.app/docs
Required env var: LINEAR_API_KEY
Create at linear.app → Settings → API → Personal API keys. Add it to your .env file:
LINEAR_API_KEY="lin_api_your-key-here"

Detailed setup guide →

MCP Config

{
  "servers": {
    "Linear": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@mseep/linear-mcp"],
      "envFile": "${workspaceFolder}/.env"
    }
  }
}

Jira

Atlassian issue tracking via Rovo MCP.

Auth TypeMCP PackageOfficial Docs
OAuth HTTP/OAuth developer.atlassian.com
OAuth: This plugin uses OAuth. The MCP server will open a browser window for authentication when you first connect.

MCP Config

{
  "servers": {
    "Jira": {
      "type": "http",
      "url": "https://mcp.atlassian.com/v1/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 reads the bot token from .env, no OAuth needed.

1. Create a Slack App

  1. Go to api.slack.com/apps
  2. Click Create New AppFrom 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. Store it in your project's .env file (which should be in .gitignore). Never commit it to source control.

Add the token to your .env file:

SLACK_MCP_XOXB_TOKEN="xoxb-your-token-here"

4. MCP Config

VS Code — ensure .vscode/mcp.json includes (automatic if you ran npx opencastle init with Slack enabled):

{
  "servers": {
    "Slack": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@kazuph/mcp-slack"],
      "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 .claude/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 your .env contains SLACK_MCP_XOXB_TOKEN with a valid xoxb-… token, wrapped in quotes with no trailing whitespace.

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: This plugin uses OAuth. The MCP server will open a browser window for authentication when you first connect.

MCP Config

{
  "servers": {
    "Microsoft Teams": {
      "type": "http",
      "url": "https://agent365.svc.cloud.microsoft/agents/tenants/${input:tenant_id}/servers/mcp_TeamsServer"
    }
  }
}
Note: Replace $${input:tenant_id} with your Microsoft 365 tenant ID. In VS Code, this will prompt you for the value when the server starts.

Design

Figma

Design tokens, component specs, asset export.

Auth TypeMCP PackageOfficial Docs
API Key @anthropic/figma-mcp figma.com/developers/api
Required env var: FIGMA_ACCESS_TOKEN
Generate at figma.com → Settings → Personal access tokens. Add it to your .env file:
FIGMA_ACCESS_TOKEN="your-token-here"

MCP Config

{
  "servers": {
    "Figma": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@anthropic/figma-mcp@latest"],
      "envFile": "${workspaceFolder}/.env"
    }
  }
}

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. Add it to your .env file:
RESEND_API_KEY="re_your-key-here"

MCP Config

{
  "servers": {
    "Resend": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "resend-mcp"],
      "envFile": "${workspaceFolder}/.env"
    }
  }
}