mcp-builder
Skill5 starsChanged 8 months agoMITView on GitHub
MCP 服务器构建方法论 — 系统化构建生产级 MCP 工具,让 AI 助手连接外部能力
- Reads credentials
188 other projects use a version of this, 3 of them edited.
Adopted by
Most recently taken up by
- rvdbreemen/OTGW-firmwaretheir own version, first seen Nov 8, 2026
- codewhale-hq/codewhale-plugin-marketplacetheir own version, first seen Nov 8, 2026
- Bruno-Cunha-Souza/ValarMindSkillstheir own version, first seen Nov 8, 2026
- truongpx396/learn-harness-engineering-by-building-mini-claude-codetheir own version, first seen Nov 8, 2026
- ControllableModel/SWE-Skills-Benchtheir own version, first seen Nov 8, 2026
- AbdulSamad94/Personal-AI-Employeetheir own version, first seen Nov 8, 2026
Used with
Projects with it also use codebase-migrate, Problem-Solving Techniques and 6 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
ComposioHQSkillcodebase-migrate
Run large codebase migrations and multi-file refactors. Uses the Composio CLI to coordinate issue tracking, batched PRs, and CI verification while the agent executes the transforms locally across hundreds of files.
Also in 5 projects that use this
truongtv22SkillProblem-Solving Techniques
Apply systematic problem-solving techniques for complexity spirals (simplification cascades), innovation blocks (collision-zone thinking), recurring patterns (meta-pattern recognition), assumption constraints (inversion exercise), scale uncertainty (scale game), and dispatch when stuck. Techniques derived from Microsoft Amplifier project patterns adapted for immediate application.
Also in 5 projects that use this
ArogyaReddySkillskill-share
A skill that creates new Claude skills and automatically shares them on Slack using Rube for seamless team collaboration and skill discovery.
Also in 26 projects that use this
AnthropicSkillacademy-guide
Stop and check this skill before finishing any reply to a question about how to use Claude or a Claude product — it recommends matching courses, tutorials, and use cases from Claude Academy (academy.claude.com), Anthropic's learning hub. Trigger on: "how do I", "how can I", "getting started with", "what can Claude do", "teach me", "learn to use"; questions about artifacts, projects, skills, plugins, connectors, MCP; requests about rolling Claude out to a team, class, or organization; and any ask for training materials, onboarding content, or learning resources. Use it when the user is learning how to use a feature or product — not when they are mid-task and just want the task done. This skill composes with other skills: after consulting product documentation to answer how a Claude feature works, also check here for a matching course or tutorial — a docs-grounded answer and an Academy recommendation belong together. Only recommend on a strong match; never invent Academy content.
Also in 8 projects that use this
JetBrainsSkillslack-gif-creator
Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack.
Also in 141 projects that use this
mrgoonieSkillaesthetic
Create aesthetically beautiful interfaces following proven design principles. Use when building UI/UX, analyzing designs from inspiration sites, generating design images with ai-multimodal, implementing visual hierarchy and color theory, adding micro-interactions, or creating design documentation. Includes workflows for capturing and analyzing inspiration screenshots with chrome-devtools and ai-multimodal, iterative design image generation until aesthetic standards are met, and comprehensive design system guidance covering BEAUTIFUL (aesthetic principles), RIGHT (functionality/accessibility), SATISFYING (micro-interactions), and PEAK (storytelling) stages. Integrates with chrome-devtools, ai-multimodal, media-processing, ui-styling, and web-frameworks skills.
Also in 6 projects that use this
Other versions188 projects use a version of this.
Word for word · 4
- shibit-net/xuanji-community★ 90100% same
- GEd520/legados★ 75100% same
- xjxj71/ai-token-usage-statistics★ 1100% same
- sueryue/Claude-Skillls★ 0100% same
Edited · 3
- jnMetaCode/superpowers-zh★ 8.4k96% same
- rzx007/openharness-ts★ 398% same
- rzx007/Vykor★ 398% same
Wrote their own version · 181
- anthropics/skills★ 189ksame name
- shareAI-lab/analysis_claude_code★ 80ksame name
- shareAI-lab/learn-claude-code★ 80ksame name
- ComposioHQ/awesome-claude-skills★ 75ksame name
- activepieces/activepieces★ 25ksame name
- ComposioHQ/awesome-codex-skills★ 17ksame name
- composio-community/awesome-codex-skills★ 16ksame name
- mcp-use/mcp-use★ 11ksame name
- vudovn/ag-kit★ 8.2ksame name
- vudovn/antigravity-kit★ 8.2ksame name
171 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository19 other files it gives its agents.
- brainstormingSkill
- chinese-code-reviewSkill
- chinese-commit-conventionsSkill
- chinese-documentationSkill
- chinese-git-workflowSkill
- dispatching-parallel-agentsSkill
- executing-plansSkill
- finishing-a-development-branchSkill
- receiving-code-reviewSkill
- requesting-code-reviewSkill
- subagent-driven-developmentSkill
- systematic-debuggingSkill
- test-driven-developmentSkill
- using-git-worktreesSkill
- using-superpowersSkill
- verification-before-completionSkill
- workflow-runnerSkill
- writing-plansSkill
- writing-skillsSkill
The file
Files
MCP 服务器构建
系统化设计、实现、测试和部署 Model Context Protocol 服务器的方法论。
1. 协议核心概念
MCP 定义三种原语:
- Tools(工具):AI 助手主动调用的函数,有副作用。如搜索、创建、删除操作。
- Resources(资源):AI 助手只读访问的数据源,用 URI 标识。如
users://{id}/profile。 - Prompts(提示词模板):预定义交互模板,引导用户触发工作流。
选择原则: 执行操作 → Tool | 读取数据 → Resource | 引导交互 → Prompt
2. 项目结构规范
TypeScript
my-mcp-server/
├── src/
│ ├── index.ts # 入口,注册 tools/resources
│ ├── tools/ # 按功能拆分
│ ├── resources/
│ └── lib/ # 客户端封装、校验逻辑
├── tests/
├── package.json
└── tsconfig.json关键依赖:@modelcontextprotocol/sdk + zod
Python
my-mcp-server/
├── src/my_mcp_server/
│ ├── server.py
│ ├── tools/
│ └── lib/
├── tests/
└── pyproject.toml关键依赖:mcp + pydantic
3. Tool 设计原则
命名
snake_case格式,动词开头:search_users、create_issue、delete_file- 名称自解释,AI 助手靠名称选工具,模糊命名导致误调用
参数
- 每个参数有类型约束和
.describe()描述 - 可选参数给默认值,减少 AI 决策负担
- 用枚举代替布尔开关
server.tool("search_issues", {
query: z.string().describe("搜索关键词"),
status: z.enum(["open", "closed", "all"]).default("open").describe("状态筛选"),
limit: z.number().min(1).max(100).default(20).describe("返回上限"),
}, async ({ query, status, limit }) => { /* ... */ });描述
说明用途 + 返回内容 + 限制,这是 AI 选择工具的关键依据:
server.tool("search_users",
"根据姓名或邮箱搜索用户。返回 ID、姓名、邮箱列表。模糊匹配,最多 50 条。",
schema, handler);输出
- 结构化数据 → JSON,人类可读内容 → Markdown
- 始终用
content: [{ type: "text", text: "..." }]格式返回
4. 输入验证和错误处理
用 Zod/Pydantic 做 Schema 级校验,业务级校验放 handler 开头:
server.tool("get_user", { id: z.string() }, async ({ id }) => {
try {
const user = await db.getUser(id);
if (!user) {
return {
content: [{ type: "text", text: `用户 ${id} 不存在,请检查 ID。` }],
isError: true,
};
}
return { content: [{ type: "text", text: JSON.stringify(user, null, 2) }] };
} catch (err) {
return {
content: [{ type: "text", text: `查询失败:${err.message}` }],
isError: true,
};
}
});错误处理四原则:
- 永远不让服务器崩溃 — try/catch 包裹所有外部调用
- 返回可操作的错误信息 — 告诉 AI 问题是什么、能做什么
- 使用
isError: true— 让 AI 知道调用失败 - 区分错误类型 — 参数错误、权限不足、资源不存在、服务不可用
5. 资源管理和生命周期
// 资源注册
server.resource("user-profile", "users://{userId}/profile", async (uri) => {
const profile = await db.getProfile(extractId(uri));
return { contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(profile) }] };
});
// 生命周期:先初始化 → 再 connect → 监听关闭信号
const db = await Database.connect(config.dbUrl);
await server.connect(new StdioServerTransport());
process.on("SIGINT", async () => { await db.disconnect(); await server.close(); process.exit(0); });关键点:使用连接池、所有外部调用设超时、优雅关闭清理资源。
6. 测试策略
单元测试 — 业务逻辑与 MCP 注册分离
// tools/search.ts 导出纯函数
export async function searchUsers(query: string, limit: number) { /* ... */ }
// search.test.ts 独立测试
test("返回匹配结果", async () => {
const results = await searchUsers("alice", 10);
expect(results[0].name).toContain("Alice");
});集成测试 — 用 SDK Client 做端到端验证
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
await server.connect(serverTransport);
const client = new Client({ name: "test", version: "1.0.0" });
await client.connect(clientTransport);
const result = await client.callTool("search_users", { query: "test" });
expect(result.isError).toBeFalsy();MCP Inspector — 交互式调试
npx @modelcontextprotocol/inspector node dist/index.js在浏览器中查看所有 tools/resources,手动调用并查看结果。
测试要点: 每个 Tool 覆盖正常 + 异常路径、边界值、外部服务失败模拟。
7. 安全考虑
权限控制:
- 最小权限原则,读写 Tool 分离
- 危险操作要求确认参数(如
confirm: true)
输入安全:
- SQL 注入 → 参数化查询,绝不拼接
- 路径遍历 → 校验路径,禁止
../ - 命令注入 → 用
execFile而非exec
敏感数据:
- 密钥通过环境变量传入,不硬编码
- 日志不打印完整敏感信息
- 返回数据做脱敏处理
沙箱: 文件操作限制目录、网络请求限制白名单、设置资源配额。
8. 部署和分发
npm 发布
{ "bin": { "mcp-server-myservice": "dist/index.js" }, "files": ["dist"] }用户配置:
{ "mcpServers": { "myservice": { "command": "npx", "args": ["@yourorg/mcp-server-myservice"], "env": { "API_KEY": "xxx" } } } }pip 发布
[project.scripts]
mcp-server-myservice = "my_mcp_server.server:main"Docker — 适用于复杂依赖或隔离场景
FROM node:20-slim
WORKDIR /app
COPY package*.json ./ && RUN npm ci --production
COPY dist ./dist
ENTRYPOINT ["node", "dist/index.js"]9. 调试技巧
关键:MCP 用 stdio 通信,不能用 console.log,会破坏协议流。
// 错误
console.log("debug");
// 正确
console.error("[DEBUG]", info);
// 更好
server.sendLoggingMessage({ level: "info", data: "处理中" });常见问题:
| 症状 | 原因 | 解决 |
| 启动无响应 | transport 未连接 | 检查 server.connect() |
| Tool 不出现 | 注册在 connect 之后 | 先注册再 connect |
| AI 不调用 Tool | 描述不清晰 | 改善名称和描述 |
| 参数总错 | Schema 不明确 | 添加 .describe() |
| 调用超时 | 外部服务慢 | 加超时和缓存 |
调试流程: Inspector 验证基本功能 → 手动调用确认输入输出 → 连接真实 AI 客户端观察调用模式 → 根据实际行为调整设计。
10. 构建检查清单
设计
- 明确 Tools vs Resources vs Prompts 分工
- Tool 命名
动词_名词,描述说明用途和返回内容 - 参数简洁,可选参数有合理默认值
实现
- 输入用 Zod/Pydantic 校验
- 外部调用有 try/catch 和超时
- 错误返回
isError: true并附可操作信息 - 不用
console.log(用 stderr 或 SDK 日志) - 敏感数据走环境变量
测试
- 核心逻辑有单元测试
- 有集成测试验证 MCP 协议交互
- 用 MCP Inspector 手动验证过
- 用真实 AI 客户端测试过
部署
- README 含安装和配置说明
- 提供客户端配置 JSON 示例
- 遵循 semver,无硬编码密钥
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

