Skip to content

skilldrop·docs·Reference

MCP servers and skills

Which MCP servers pair with which skilldrop skills and loops, the config for each supported tool, the security rules, and fixes for common problems.

This page holds the details behind Use skills with MCP servers: which server feeds which skill, how each tool stores a server, the security rules, and fixes.

Every skilldrop skill works from text: you paste a ticket, a diff or an incident timeline, and the skill works on it. An MCP server gives the agent a tool that fetches that text itself, so "Fetch PROJ-123 and run bug-triage" replaces copy and paste. The skill doesn't change; only where its input comes from does.

No skill requires an MCP server. Skills stay portable: a skill copied into Aider with no servers at all still works, and a loop stage that has no server takes pasted text instead.

The tracker guides cover the per-tool basics for their tracker: Jira, Linear, Figma and GitHub Projects.

Servers by skill

Prefer the official server, the one the vendor maintains. Every server below is official unless the row says otherwise. Check the vendor's docs for the exact setup; the endpoints below were current on 2026-10-01.

MCP serverWhat it fetchesSkills and loopsStarter prompt
GitHub (official, https://api.githubcopilot.com/mcp/)Pull requests, diffs, issues, releases, Actions runspre-merge-review, release-notes, backlog-triage, tracker-brief-sync, the build loop"Fetch PR #482 in acme/web with its diff and run pre-merge-review."
Atlassian (official, Jira and Confluence, https://mcp.atlassian.com/v2/mcp)Jira issues, epics and sprints; Confluence pagesbug-triage, backlog-triage, team-status-report, user-story-splitter, prd-draft"Fetch every open bug in project PAY created this week and run backlog-triage."
Linear (official, https://mcp.linear.app/mcp)Issues, projects, cyclesbug-triage, backlog-triage, team-status-report, user-story-splitter, prd-draft"Fetch the current cycle for team ENG and run team-status-report."
Figma (official, https://mcp.figma.com/mcp)Frames, components, variables, layoutfigma-diagrams, design-system-spec, information-architecture"Fetch the components and variables in this Figma file and run design-system-spec."
Sentry (official, https://mcp.sentry.dev/mcp)Issues, events, stack traces, releasesincident-comms, postmortem-generator, the operate loop"Fetch Sentry issue WEB-3F1 with its latest event and run incident-comms for an internal update."
Supabase (official, Postgres, https://mcp.supabase.com/mcp)Schemas, tables, query resultssql-review, dashboard-spec"List the tables in the analytics schema, then run sql-review on the weekly active accounts query."
AWS Billing and Cost Management (official, AWS Labs, local: awslabs.billing-cost-management-mcp-server)Cost Explorer spend, budgets, anomalies, Savings Plans and RI coveragecloud-cost-review"Fetch last month's cost by service and any cost anomalies, then run cloud-cost-review."
Slack (official, https://mcp.slack.com/mcp)Channel history, threads, searchincident-comms, exec-summary, decision-log"Read the #inc-2041 channel since 09:00 and run decision-log on the decisions made."

Which pack holds each skill

Install a skill with npx skilldrop-cli install <skill>, or its whole pack with npx skilldrop-cli install --pack <pack>.

PackSkills from the table above
dev-teampre-merge-review, release-notes, bug-triage, user-story-splitter, the build loop
trackersbacklog-triage, tracker-brief-sync, team-status-report
product-managerprd-draft
solution-architectfigma-diagrams
experience-designdesign-system-spec, information-architecture
sre-oncallincident-comms, postmortem-generator, cloud-cost-review, the operate loop
data-analyticssql-review, dashboard-spec
stakeholder-commsexec-summary, decision-log
ai-engineeringagent-threat-model, ai-usage-policy

Notes on the servers

Loops with servers

A loop doesn't know about servers. You fetch each stage's input and hand it over. In the build loop, for example:

Fetch issue #311 from acme/web and run the build loop on it. Use the issue text as the input to
the shape stage. At the verify stage, fetch the PR diff before running pre-merge-review.

In the operate loop, the respond and learn stages (incident-comms, postmortem-generator) get the most from Sentry and Slack: the incident timeline is already there.

Config by tool

Each example adds one remote server and, where useful, one local (stdio) server. Tokens come from environment variables, never from the file. See Supply credentials to skills for setting them.

ToolConfig fileTop-level keyRemote URL keyVariable syntax
Claude Code.mcp.json (project) or ~/.claude.jsonmcpServersurl${VAR}, ${VAR:-default}
Cursor.cursor/mcp.json or ~/.cursor/mcp.jsonmcpServersurl${env:NAME}
Codex.codex/config.toml or ~/.codex/config.toml[mcp_servers.<name>]urlbearer_token_env_var, env_vars
VS Code and GitHub Copilot.vscode/mcp.jsonserversurl${input:<id>}
Kiro.kiro/settings/mcp.json or ~/.kiro/settings/mcp.jsonmcpServersurl${VARIABLE_NAME}
Antigravity.agents/mcp_config.json or ~/.gemini/config/mcp_config.jsonmcpServersserverUrlnot documented

Claude Code

Add a remote HTTP server, then authenticate:

claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

Run /mcp inside Claude Code and follow the browser login, or run claude mcp login sentry.

Add a local stdio server. Everything after -- is the command that starts the server:

claude mcp add --transport stdio \
  --env AWS_PROFILE=cost-readonly --env AWS_REGION=us-east-1 \
  aws-billing -- uvx awslabs.billing-cost-management-mcp-server@latest

Pick where the server is stored with --scope:

ScopeLoads inSharedStored in
local (default)This project onlyNo~/.claude.json
projectThis project onlyYes, through version control.mcp.json at the project root
userAll your projectsNo~/.claude.json

.mcp.json is committed, so it must hold variable names, not values. Claude Code expands ${VAR} and ${VAR:-default}:

{
  "mcpServers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/readonly",
      "headers": { "Authorization": "Bearer ${GITHUB_PAT}" }
    }
  }
}

claude mcp list, claude mcp get <name> and claude mcp remove <name> manage what you've added.

Cursor

Put servers in .cursor/mcp.json for one project or ~/.cursor/mcp.json for all of them. Cursor reads environment variables with ${env:NAME}:

{
  "mcpServers": {
    "github": {
      "url": "https://api.githubcopilot.com/mcp/readonly",
      "headers": { "Authorization": "Bearer ${env:GITHUB_PAT}" }
    },
    "aws-billing": {
      "command": "uvx",
      "args": ["awslabs.billing-cost-management-mcp-server@latest"],
      "env": { "AWS_PROFILE": "cost-readonly", "AWS_REGION": "us-east-1" }
    }
  }
}

Codex

Codex reads ~/.codex/config.toml, or .codex/config.toml in a trusted project. The CLI, the IDE extension and the desktop app share it. Each server is a [mcp_servers.<name>] table:

[mcp_servers.github]
url = "https://api.githubcopilot.com/mcp/readonly"
bearer_token_env_var = "GITHUB_PAT"

[mcp_servers.aws-billing]
command = "uvx"
args = ["awslabs.billing-cost-management-mcp-server@latest"]
env_vars = ["AWS_PROFILE", "AWS_REGION"]

bearer_token_env_var names the variable that holds the token; env_vars forwards variables from your shell. To add a stdio server from the command line, run codex mcp add <name> --env VAR=VALUE -- <command>. For a server that uses OAuth, run codex mcp login <name>.

VS Code and GitHub Copilot

Put servers in .vscode/mcp.json. The top-level key is servers, not mcpServers. Use inputs so VS Code prompts for the secret instead of storing it in the file:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "github-pat",
      "description": "GitHub read-only token",
      "password": true
    }
  ],
  "servers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/readonly",
      "headers": { "Authorization": "Bearer ${input:github-pat}" }
    },
    "aws-billing": {
      "type": "stdio",
      "command": "uvx",
      "args": ["awslabs.billing-cost-management-mcp-server@latest"],
      "env": { "AWS_PROFILE": "cost-readonly", "AWS_REGION": "us-east-1" }
    }
  }
}

Run MCP: List Servers from the Command Palette to start, stop or inspect a server.

Kiro

Put servers in .kiro/settings/mcp.json for the workspace or ~/.kiro/settings/mcp.json for your user. The workspace file wins when both define the same server. Kiro expands ${VARIABLE_NAME}, and asks you to approve each variable before it expands it:

{
  "mcpServers": {
    "github": {
      "url": "https://api.githubcopilot.com/mcp/readonly",
      "headers": { "Authorization": "Bearer ${GITHUB_PAT}" }
    },
    "aws-billing": {
      "command": "uvx",
      "args": ["awslabs.billing-cost-management-mcp-server@latest"],
      "env": { "AWS_PROFILE": "cost-readonly", "AWS_REGION": "us-east-1" },
      "disabledTools": []
    }
  }
}

Leave autoApprove empty. It lets the listed tools run without asking you.

Antigravity

Antigravity reads mcp_config.json from ~/.gemini/config/mcp_config.json (global) or .agents/mcp_config.json (workspace). In the IDE, open it from the agent panel: … → MCP Servers → Manage MCP Servers → View raw config. Remote servers use serverUrl, not url:

{
  "mcpServers": {
    "sentry": {
      "serverUrl": "https://mcp.sentry.dev/mcp"
    },
    "aws-billing": {
      "command": "uvx",
      "args": ["awslabs.billing-cost-management-mcp-server@latest"],
      "env": { "AWS_PROFILE": "cost-readonly", "AWS_REGION": "us-east-1" }
    }
  }
}

Antigravity's docs don't describe environment variable expansion in this file. Keep tokens out of the workspace file, and check Antigravity's docs before you put a header with a token in any file.

Security rules

An MCP server is a capability you hand the agent, with your credentials. Treat adding one like granting access to a new colleague you can't fully trust to tell your instructions from a stranger's.

Use read-only tokens with least privilege

Start every server read-only. Skills only need to read: pre-merge-review reads a diff, it doesn't merge it.

Watch for the lethal trifecta

An agent that holds private data, reads untrusted content, and has a way to send data out can be talked into leaking that data by text it reads. This is a design property, not a bug. One MCP server often adds two legs at once: the GitHub server reads your private repos and public issue text anyone can write. A Slack server reads private channels and messages from anyone in them, and can post. Break one leg per path: read-only tokens, separate sessions for public and private work, no write or network tool in a session that reads untrusted text.

Run agent-threat-model on your setup

Paste your MCP config (with the tokens removed) and the skills you plan to run, and ask for the trifecta matrix:

Here is my .mcp.json and the skills I run with it: pre-merge-review, backlog-triage,
incident-comms. Run agent-threat-model.

It lists every path that has all three legs and names the fix for each. See agent-threat-model and, for how this maps to LLM01:2025 prompt injection and LLM06:2025 excessive agency, skilldrop and the OWASP Top 10s. Run it again whenever you add a server or widen a token.

Never put a token in a file you commit

.mcp.json, .cursor/mcp.json, .vscode/mcp.json and .kiro/settings/mcp.json belong in version control, so they hold variable references (${GITHUB_PAT}, ${env:GITHUB_PAT}, ${input:github-pat}), never values. claude mcp add --env KEY=value writes the value into ~/.claude.json, which is not in your repo; keep it that way.

Know that a remote server sees what you send it

Every tool call to a remote server goes to the vendor, along with the arguments the agent chose. Before connecting one at work, check your organization's data rules. ai-usage-policy can write those rules if you don't have them.

Pin local servers

uvx package@latest and npx package run whatever was published most recently, with your credentials. Replace @latest with a version you've reviewed, and pin Docker images to a tag or digest. Upgrade on purpose.

Prefer the official server

A community server is code from a stranger that holds your token. If no official server exists, read the source and pin a commit before you run it.

Troubleshooting

The server shows as connected, but the skill doesn't use it

The skill only sees text; the agent decides whether to call a tool first. Ask it to fetch, then run the skill, in that order:

If it still doesn't call the tool, name the tool. In VS Code, reference it in chat with #.

Auth errors

For OAuth servers, authenticate again: /mcp or claude mcp login <name> in Claude Code, codex mcp login <name> in Codex. For token servers, check that the variable is set in the shell that started your editor, not only in a new terminal. Then check the token's scopes: Sentry's local server, for example, needs a user token with the scopes its README lists. A 403 on one action with other actions working points to the token's scope, not the server.

Too many tools loaded

Each server adds tools, and a long tool list costs context and leads the agent to pick the wrong one. Turn off what you don't use:

A big result gets cut off

Claude Code caps MCP output at 25,000 tokens. Raise it with MAX_MCP_OUTPUT_TOKENS=50000 claude, or ask the agent for a narrower query: one PR, not the whole repo.

Sources

Checked 2026-10-01.

Edit this page on GitHub · View source