一键导入
agents-mcp
Configure and build MCP servers for AI agent tool integration. Use when connecting Claude Code or Codex to databases, APIs, or custom tools.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Configure and build MCP servers for AI agent tool integration. Use when connecting Claude Code or Codex to databases, APIs, or custom tools.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Builds multi-repo context hubs and compiled markdown knowledge maps. Use when profiling repo portfolios or assembling LLM-ready cross-repo knowledge bases.
Builds per-repo code graphs in JSON and markdown-ready derived artifacts. Use when you need blast radius, symbol-level maps, import graphs, inheritance, or test links.
Context-driven AI development with AGENTS.md, repo knowledge bases, Claude Code, Codex, and Copilot. Use when adopting repo-native AI workflows or multi-repo setups.
Technical writing for READMEs, ADRs, API docs, and changelogs. Use when revising or consolidating a repo documentation folder.
Design, implement, and troubleshoot NUKE-based CI/CD pipelines for .NET services with fast local-to-CI feedback loops. Use when creating or refactoring `nuke/Build.cs` target graphs, tuning `DependsOn`/`After`/`Triggers`/`OnlyWhenDynamic` behavior, orchestrating unit/API/DB test categories, merging and publishing coverage and test reports, building and pushing Docker images with traceable tags and digests, producing artifact contracts such as `deploy.env`, and diagnosing flaky or slow pipeline execution. For service code changes use $software-csharp-backend, for NUnit fixture design use $qa-testing-nunit, and for safe logging rewrites use $dev-structured-logs.
Systematic debugging for crashes, regressions, flakes, and production bugs. Use when diagnosing stack traces, logs, traces, or profiling data.
| name | agents-mcp |
| description | Configure and build MCP servers for AI agent tool integration. Use when connecting Claude Code or Codex to databases, APIs, or custom tools. |
Specification: https://modelcontextprotocol.io/specification/2025-11-25 (November 2025)
| Scenario | Use MCP? | Why |
|---|---|---|
| Query PostgreSQL/MySQL/SQLite | Yes | Official servers exist, read-only by default |
| Access filesystem outside workspace | Yes | Scoped allowlists, audit trail |
| GitHub/Linear/Slack/Notion integration | Yes | Vendor MCP servers available |
| One-off HTTP API call | No | Use WebFetch or Bash curl |
| Internal API with auth | Maybe | Build custom MCP server if repeated, otherwise direct call |
| Need write access to production DB | Caution | Prefer read-only; if writes needed, scope tightly |
Rule of thumb: Use MCP when (1) an official/community server exists, (2) you need audit/permission control, or (3) you'll reuse the integration across sessions.
.claude/.mcp.json:{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": { "POSTGRES_URL": "${DATABASE_URL}" }
}
}
}
export DATABASE_URL="postgresql://user:pass@localhost:5432/db"
claude mcp list
claude mcp get postgres
# PostgreSQL
claude mcp add postgres --env POSTGRES_URL=postgresql://user:pass@host:5432/db -- npx -y @modelcontextprotocol/server-postgres
# SQLite (local file)
claude mcp add sqlite -- npx -y @modelcontextprotocol/server-sqlite ./data/app.db
claude mcp add github --env GITHUB_TOKEN=ghp_xxx -- npx -y @modelcontextprotocol/server-github
# Read-only access to ./docs
claude mcp add docs-readonly --deny "mcp__filesystem__write_file" -- npx -y @modelcontextprotocol/server-filesystem ./docs
claude mcp add --transport http notion https://mcp.notion.com/mcp
Use the region-matching PostHog MCP host:
https://mcp-eu.posthog.com/mcphttps://mcp.posthog.com/mcp# Codex streamable HTTP (default)
codex mcp add posthog --url https://mcp-eu.posthog.com/mcp
codex mcp login posthog
# If Codex fails at initialize with HTTP 500, use SSE bridge fallback
codex mcp remove posthog
codex mcp add posthog -- npx -y mcp-remote@latest https://mcp-eu.posthog.com/sse
The SSE bridge keeps PostHog available in Codex when streamable_http handshakes fail.
# Allow all tools from a server (wildcard)
claude mcp add --allow "mcp__postgres__*" postgres -- npx -y @modelcontextprotocol/server-postgres
# Allow specific tools only
claude mcp add --allow "mcp__postgres__query,mcp__postgres__list_tables" postgres -- npx -y @modelcontextprotocol/server-postgres
# Deny a specific tool
claude mcp add --deny "mcp__filesystem__write_file" filesystem -- npx -y @modelcontextprotocol/server-filesystem ./data
| Need | Recommendation |
|---|---|
| Database query (PG/MySQL/SQLite) | Use official server |
| GitHub/Linear/Slack/Notion | Use vendor server |
| Custom internal API | Build custom server (TypeScript recommended) |
| One-time data fetch | Don't use MCP; use WebFetch |
| Browser automation | Use Puppeteer MCP server |
When no existing server fits your needs, build a custom one:
mkdir my-mcp-server && cd my-mcp-server
npm init -y
npm install @modelcontextprotocol/sdk
Minimal TypeScript server (src/index.ts):
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
const server = new Server(
{ name: "my-server", version: "1.0.0" },
{ capabilities: { tools: {} } }
);
// Define tools
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [{
name: "my_tool",
description: "What this tool does",
inputSchema: {
type: "object",
properties: { query: { type: "string" } },
required: ["query"]
}
}]
}));
// Handle tool calls
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name === "my_tool") {
const result = await doWork(request.params.arguments);
return { content: [{ type: "text", text: JSON.stringify(result) }] };
}
throw new Error(`Unknown tool: ${request.params.name}`);
});
const transport = new StdioServerTransport();
await server.connect(transport);
Register in .claude/.mcp.json:
{
"mcpServers": {
"my-server": {
"command": "npx",
"args": ["tsx", "./my-mcp-server/src/index.ts"],
"env": { "API_KEY": "${MY_API_KEY}" }
}
}
}
Full guide: references/mcp-custom.md (TypeScript + Python, resources, prompts, testing, deployment)
.mcp.json; inject via env vars or a secret manager at runtime.| Issue | Solution |
|---|---|
| "Server not found" | Check claude mcp list; verify package installed |
| "Permission denied" | Add --allow for specific tools |
| "Connection refused" | Verify env vars, check network access |
| "500 Internal Server Error" on initialize (streamable HTTP) | For PostHog in Codex, switch to SSE bridge: npx -y mcp-remote@latest https://mcp-eu.posthog.com/sse |
| Slow responses | Check server logs, add timeout config |
| "Tool output too large" | Use pagination or limit queries |
| Task | Resource |
|---|---|
| Choose an existing server | references/mcp-servers.md |
| Build a custom server | references/mcp-custom.md |
| Implementation patterns (DB/API/filesystem) | references/mcp-patterns.md |
| Security hardening (OAuth, scopes, injection defense) | references/mcp-security.md |
| Templates | assets/database/, assets/filesystem/, assets/api/, assets/deployment/ |
| Curated links | data/sources.json |
| Skill | Purpose |
|---|---|
| agents-subagents | Creating agents that use MCP tools |
| agents-hooks | Automating MCP server startup/validation |
| ops-devops-platform | Deploying MCP servers in CI/CD |
For each MCP server used in a task, run:
codex mcp listcodex mcp get <server> or equivalentOnly proceed to analysis/query work after all 3 pass.
If login/initialize fails:
When MCP setup fails, report in one block:
When an MCP tool call fails with an auth/token error:
codex mcp login <server> or equivalent).Unbounded auth retry loops waste context window and block productive work.
Cache working MCP connection settings per session and avoid repeated re-login/reconfigure unless health gate fails.