MCP Integration for Plugins
anthropics/claude-plugins-official
Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.
Add a vendor's remote MCP server to the bundled integrations catalog (plugins/mcp-catalog/<name/ + plugins/marketplace.json) so users can connect it from the Integrations page.
$ npx skills add vellum-ai/vellum-assistant --skill add-mcp-integration -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install vellum-ai/vellum-assistant add-mcp-integration --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/vellum-ai/vellum-assistant.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/add-mcp-integration .claude/skills/add-mcp-integration && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "add-mcp-integration" agent skill from https://github.com/vellum-ai/vellum-assistant/tree/main/.claude/skills/add-mcp-integration into .claude/skills/add-mcp-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-mcp-integration", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/vellum-ai/vellum-assistant/tree/main/.claude/skills/add-mcp-integrationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add vellum-ai/vellum-assistant --skill add-mcp-integration -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install vellum-ai/vellum-assistant add-mcp-integration --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vellum-ai/vellum-assistant.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/add-mcp-integration .agents/skills/add-mcp-integration && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "add-mcp-integration" agent skill from https://github.com/vellum-ai/vellum-assistant/tree/main/.claude/skills/add-mcp-integration into .agents/skills/add-mcp-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-mcp-integration", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add vellum-ai/vellum-assistant --skill add-mcp-integration -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install vellum-ai/vellum-assistant add-mcp-integration --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vellum-ai/vellum-assistant.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/add-mcp-integration .cursor/skills/add-mcp-integration && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "add-mcp-integration" agent skill from https://github.com/vellum-ai/vellum-assistant/tree/main/.claude/skills/add-mcp-integration into .cursor/skills/add-mcp-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-mcp-integration", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/vellum-ai/vellum-assistant.git --path .claude/skills/add-mcp-integration--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add vellum-ai/vellum-assistant --skill add-mcp-integration -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install vellum-ai/vellum-assistant add-mcp-integration --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vellum-ai/vellum-assistant.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/add-mcp-integration .gemini/skills/add-mcp-integration && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "add-mcp-integration" agent skill from https://github.com/vellum-ai/vellum-assistant/tree/main/.claude/skills/add-mcp-integration into .gemini/skills/add-mcp-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-mcp-integration", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install vellum-ai/vellum-assistant add-mcp-integrationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add vellum-ai/vellum-assistant --skill add-mcp-integration -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/vellum-ai/vellum-assistant.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/add-mcp-integration .github/skills/add-mcp-integration && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "add-mcp-integration" agent skill from https://github.com/vellum-ai/vellum-assistant/tree/main/.claude/skills/add-mcp-integration into .github/skills/add-mcp-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-mcp-integration", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add vellum-ai/vellum-assistant --skill add-mcp-integration -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install vellum-ai/vellum-assistant add-mcp-integration --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vellum-ai/vellum-assistant.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/add-mcp-integration .opencode/skills/add-mcp-integration && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "add-mcp-integration" agent skill from https://github.com/vellum-ai/vellum-assistant/tree/main/.claude/skills/add-mcp-integration into .opencode/skills/add-mcp-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-mcp-integration", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
add-mcp-integrationAdd a vendor's remote MCP server to the bundled integrations catalog (plugins/mcp-catalog/<name/ + plugins/marketplace.json) so users can connect it from the Integrations page.
Add MCP Integration is an agent skill from vellum-ai/vellum-assistant. Add a vendor's remote MCP server to the bundled integrations catalog (plugins/mcp-catalog/<name/ + plugins/marketplace.json) so users can connect it from the Integrations page. Covers vetting the server's OAuth support, the icon, the package files, the generators, the CI checks, and the PR. Use when asked to "add <vendor MCP", "add <vendor to integrations", or to check whether a vendor's MCP server is an easy addition.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows, covering MCP servers and OAuth and OpenID Connect. It works with Model Context Protocol. The repository describes itself as: An AI Assistant that’s easy to setup, does your work 24/7, knows your preferences and gets better over time. The licence is MIT.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 33cc983. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
nodebuncurlmagickgitFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
agent-plugins.orgvellum.aiFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Add MCP Integration loads about 2.8k tokens when it runs. Until then it costs about 111 tokens; SKILL.md has 940 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from vellum-ai/vellum-assistant at commit 33cc983, republished under its MIT licence (© vellum-ai). 940 words, ~2,821 tokens.
.claude/skills/add-mcp-integration/SKILL.md (or your agent's skills folder).A catalog integration is a bundled local plugin whose only content is an
mcp.json pointing at the vendor's remote server. The assistant ships it, the
Integrations page lists it, and connecting it runs the MCP OAuth flow in
assistant/src/mcp/mcp-oauth-provider.ts.
Scope: remote MCP servers in plugins/mcp-catalog/. For a full plugin that
lives in another GitHub repo, see plugins/README.md § Marketplace.
Work in a worktree from origin/main. One provider per PR.
From the vendor's MCP docs, record:
streamable-http (docs often say "type": "http").homepage and documentationUrl.Reject a server that only runs locally (npx, uvx, Docker). The catalog
ships no stdio servers.
The catalog's one-step connect needs the server to support OAuth discovery and dynamic client registration (DCR), because a plugin cannot ship a client secret.
URL=https://mcp.example.com/mcp
curl -sS -i -X POST "$URL" -H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}'Expect 401 with WWW-Authenticate: Bearer ... resource_metadata="<url>".
Fetch that URL and take authorization_servers[0] as the issuer. Then fetch
the issuer's metadata from the first URL that answers, in the order the MCP
SDK tries them (buildDiscoveryUrls in @modelcontextprotocol/sdk
client/auth.js):
| Issuer | Metadata URLs, in order |
|---|---|
https://auth.example.com | /.well-known/oauth-authorization-server, then /.well-known/openid-configuration |
https://auth.example.com/tenant1 | /.well-known/oauth-authorization-server/tenant1, then /.well-known/openid-configuration/tenant1, then /tenant1/.well-known/openid-configuration (all on the issuer host) |
Check the metadata the way the SDK does:
| Field | Rule |
|---|---|
registration_endpoint | Must be present. The SDK stops with "does not support dynamic client registration" without it. |
code_challenge_methods_supported | If present, must include S256. Absent is fine. |
response_types_supported | Must include code. |
grant_types_supported | Should include refresh_token. Without it, users sign in again each time the access token ends. |
Do not judge token_endpoint_auth_methods_supported from the metadata. The
registration in step 3 shows which method the server gives our public client.
Pick the setup mode:
oauth. The normal case.manual.
ramp is the example. Its setup.instructions tell the user what to ask
the vendor for.registration_endpoint, or step 3 only returns a confidential client
(a client_secret and a client_secret_* auth method): not a catalog
addition. It needs a pre-registered client, which the MCP OAuth flow does
not support. Stop and report this.Also check whether the vendor already has a main OAuth provider in
assistant/src/oauth/seed-providers.ts. If it does, set integration.oauthProvider so the
Integrations page groups both connections (see calendly, linear, notion,
todoist).
Register a throwaway client with the same shape as
McpOAuthProvider.clientMetadata:
curl -sS -X POST <registration_endpoint> -H 'content-type: application/json' \
-d '{"client_name":"Vellum Assistant (registration probe)","redirect_uris":["https://example.com/webhooks/oauth/callback"],"token_endpoint_auth_method":"none","grant_types":["authorization_code","refresh_token"],"response_types":["code"],"logo_uri":"https://www.vellum.ai/favicon.ico","software_version":"0.0.0"}'A client_id with token_endpoint_auth_method: "none" in the response means
the server registers public clients.
This probe does not prove the vendor accepts our real redirect URI. Each
assistant resolves its own callback (resolveOauthCallbackUrl in
assistant/src/inbound/oauth-callback-url.ts), and a vendor can restrict
redirect hosts. If you know the callback URL of the assistant you will test
with, register that instead of example.com. If the example.com probe is
rejected for its redirect URI, retry with a real callback before you reject
the server. Step 9 is the real test of the redirect.
Write plugins/mcp-catalog/<name>/icon.png: a PNG, 128x128, on an opaque white
background so it reads on the dark theme. The inventory test requires at
least 64x64.
Source, in order of preference:
magick <source> -resize 128x128 -background white -alpha remove -alpha off -strip PNG24:plugins/mcp-catalog/<name>/icon.pngLook at the result with the Read tool before you continue.
Write ICON_ATTRIBUTION.md beside it in the same form as the others: source
link, what was done to it, and "It is a trademark of <Vendor> and is used only
to identify this integration." circleback, craft, and wix show the
official-asset form. atlassian shows the Simple Icons form.
plugins/mcp-catalog/<name>/plugin.json:
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "<name>",
"version": "1.0.2",
"description": "<Verb-first summary, under about 60 characters.>",
"homepage": "<MCP docs URL>",
"license": "MIT"
}plugins/mcp-catalog/<name>/mcp.json. The server key must equal <name>:
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
"mcpServers": {
"<name>": { "type": "streamable-http", "url": "<remote URL>" }
}
}Append an entry to plugins/marketplace.json after the last local entry:
{
"name": "<name>",
"source": {
"source": "local",
"path": "plugins/mcp-catalog/<name>",
"version": "<plugin.json version>"
},
"description": "<same as plugin.json>",
"homepage": "<MCP docs URL>",
"license": "MIT",
"integration": {
"kind": "mcp",
"displayName": "<Vendor>",
"documentationUrl": "<MCP docs URL>",
"verifiedAt": "<today, YYYY-MM-DD>",
"verification": "documentation-only",
"setup": {
"mode": "oauth",
"instructions": "<One sentence: which account to sign in with.>"
},
"logo": "<name>-mcp.png",
"category": "<slug>"
}
}category must be a slug from INTEGRATION_CATEGORIES in
packages/service-contracts/src/integration-categories.ts.homepage is the MCP docs URL, not the vendor's home page. Every catalog
entry follows this.description and instructions.From the repo root, in this order:
node scripts/plugins/sync-local-plugin-icons.mjs # web copy: clients/web/public/images/integrations/<name>-mcp.png
node scripts/plugins/generate-plugin-icons.mjs # platform copy: plugins/assets/<name>/icon.png + plugins/plugin-icons.json
bun run meta/sync-bundled-copies.ts # bundled offline marketplace copy
bun run assistant/scripts/generate-bundled-plugin-packages.ts # bundled package mapgit status must show changes for <name> only.
In scripts/plugins/__tests__/mcp-marketplace-inventory.test.ts:
<name> to EXPECTED_PROVIDERS.oauth count, or change the manual assertion.oauthProvider map if you set one.These are the steps of .github/workflows/pr-marketplace.yaml:
node scripts/check-marketplace-prefix.mjs
bun run meta/sync-bundled-copies.ts --check
bun run assistant/scripts/generate-bundled-plugin-packages.ts --check
node scripts/plugins/generate-plugin-icons.mjs --check
node scripts/plugins/sync-local-plugin-icons.mjs --check
(cd scripts && bun test plugins/__tests__/bundled-plugin-packages.test.ts plugins/__tests__/mcp-marketplace-inventory.test.ts plugins/__tests__/add-plugin-icon.test.mjs plugins/__tests__/generate-plugin-icons.test.mjs plugins/__tests__/sync-local-plugin-icons.test.mjs)Needs an account with the vendor. On an assistant built from the branch (see
the cli-testing skill, or a platform preview):
assistant mcp list shows the server.<vendor> projects") and confirm a real result.If nobody can test this before the next release, add <name> to
MCP_CATALOG_QA_INTEGRATION_NAMES in
assistant/src/cli/lib/plugin-catalog-visibility.ts, and add the vendor to
the mcp-catalog-qa-integrations description in
meta/feature-flags/feature-flag-registry.json and
clients/web/src/lib/feature-flags/feature-flag-registry.json. Then the entry
stays hidden until it passes QA.
The flag key and default do not change, so this needs no platform Terraform
change. Check its row in meta/feature-flags/PENDING_PLATFORM_PRS.md: while
the flag is not provisioned, nobody can turn it on remotely, so QA uses a local
flag override.
feat(marketplace): add the <Vendor> MCP server to the integrations catalog.© vellum-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/add-mcp-integration of vellum-ai/vellum-assistant.
Open the folder on GitHubat commit 33cc983
Add MCP Integration next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Add MCP Integration this skillvellum-ai/vellum-assistant | 1.4k | — | ~2.8k | Automated safety check: Pass | MIT | |
| MCP Integration for Pluginsanthropics/claude-plugins-official | 38k | 11 repos | ~3.1k | Automated safety check: Pass | Apache-2.0 | |
| Building MCP Server On CloudflareCommandCodeAI/agent-skills | 133 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Nuxt Agent Ready Best Practicesvinayakkulkarni/nxui | 212 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Nv Onboard Dcr MCPnovuhq/novu | 40k | — | ~1.8k | Automated safety check: Pass | Custom licence | |
| GitLab CLI Without MCPzereight/gitlab-mcp | 2k | — | ~787 | Automated safety check: Pass | MIT |
anthropics/claude-plugins-official
Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.
CommandCodeAI/agent-skills
Builds remote MCP (Model Context Protocol) servers on Cloudflare Workers with tools, OAuth authentication, and production deployment.
vinayakkulkarni/nxui
Nuxt agent-readiness guidelines for making a site operable by autonomous AI agents — not just cited by them.
novuhq/novu
Onboard a new DCR OAuth MCP catalog entry with provider-doc vetting and curl probes.
zereight/gitlab-mcp
Authenticates and runs zereight-mcp-gitlab as a plain command line tool to read GitLab merge requests, diffs, discussions, issues and pipelines when no MCP client is set up.
PostHog/posthog
Add a third-party MCP server (Linear, Notion, GitHub, ...) to the PostHog MCP store catalog.
vellum-ai/vellum-assistant
Create and configure a GitHub App so the assistant can push commits, open PRs, and comment under its own bot identity.
vellum-ai/vellum-assistant
Connect a Discord bot to the assistant via the Discord Gateway with guided application creation and intent configuration
vellum-ai/vellum-assistant
Create and configure a Sentry internal integration so the assistant can manage issues, alerts, and releases under its own identity
vellum-ai/vellum-assistant
Ingest a large dataset into memory as a skimmed map. An agent skill from vellum-ai/vellum-assistant.
vellum-ai/vellum-assistant
A skill your agent uses when the user wants to build, scaffold, ship, or edit a Vellum plugin that bundles multiple surfaces (hooks, tools, skills, and more) into one installable package.
vellum-ai/vellum-assistant
Connect a Slack app to the Vellum Assistant via Socket Mode.
Works with
Categories
Add a vendor's remote MCP server to the bundled integrations catalog (plugins/mcp-catalog/<name/ + plugins/marketplace.json) so users can connect it from the Integrations page. Add MCP Integration is an agent skill from vellum-ai/vellum-assistant.json) so users can connect it from the Integrations page.
Add MCP Integration fits situations like: asked to add <vendor MCP; add <vendor to integrations; check whether a vendors MCP server is an easy addition.
Run `npx skills add vellum-ai/vellum-assistant --skill add-mcp-integration -a claude-code`. Or copy the skill folder (.claude/skills/add-mcp-integration in vellum-ai/vellum-assistant) into .claude/skills/add-mcp-integration in your project. Claude Code loads it when a task matches its description.
Run `npx skills add vellum-ai/vellum-assistant --skill add-mcp-integration -a codex`. Or copy the skill folder (.claude/skills/add-mcp-integration in vellum-ai/vellum-assistant) into .agents/skills/add-mcp-integration in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add vellum-ai/vellum-assistant --skill add-mcp-integration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-mcp-integration, .gemini/skills/add-mcp-integration, .github/skills/add-mcp-integration and .opencode/skills/add-mcp-integration in your project.
Going by SKILL.md and its folder, Add MCP Integration needs the command-line tools its instructions call (node, bun, curl, magick and git). Our summary lists: Docker.
SKILL.md names 2 domains. In commands or code: agent-plugins.org and vellum.ai; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Add MCP Integration is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Add MCP Integration: MCP Integration for Plugins (anthropics/claude-plugins-official, 38k stars), Building MCP Server On Cloudflare (CommandCodeAI/agent-skills, 133 stars), Nuxt Agent Ready Best Practices (vinayakkulkarni/nxui, 212 stars) and Nv Onboard Dcr MCP (novuhq/novu, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
vellum-ai (a GitHub organization) maintains it in vellum-ai/vellum-assistant, which has 1,408 GitHub stars. The repository holds 108 skills in this directory. The repository was last updated on October 9, 2026.
Source: vellum-ai/vellum-assistant on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.