🚀 MCP起动器
功能完成 模型上下文协议 跨7种语言的(MCP)服务器实现——设计为 车间启动项目 学习MCP。
选择你的语言,克隆仓库,然后开始构建。每个服务器都实现了相同的接口,因此您可以专注于学习MCP概念,而不是对不同的实现进行逆向工程。
🗂️ 选择您的语言
| 语言 | 存储库 | SDK | 等级 |
|---|
SDK层 表明功能完整性和维护承诺。 第1级 SDK具有100%的协议一致性和完全支持。 第2层 SDK具有大多数积极开发的功能。 第3层 和 待定 SDK可能存在缺口——请参阅每个仓库以了解记录的限制。 了解有关分层的更多信息→
🎯 你将学到
每个初学者通过7个工具、2个资源、2个工具模板和2个提示演示同一组MCP概念:
| 概念 | 它展示了什么 | 工具/功能 |
|---|---|---|
| 基本工具 | 简单的请求/响应 | hello, get_weather |
| 进度报告 | 执行过程中的流式进度通知 | long_task |
| LLM采样 | 服务器要求客户端生成完成 | ask_llm |
| 动态刀具加载 | 在运行时注册新工具+ tools/list_changed 通知 | load_bonus_tool → bonus_calculator |
| 引出 | 在工具执行期间请求用户输入(基于表单和基于URL) | confirm_action, get_feedback |
| 资源 | 暴露给客户端的只读数据 | about://server, doc://example |
| 资源模板 | 带参数的URI模板 | greeting://{name}, item://{id} |
| 提示 | 带参数的可重用提示模板 | greet, code_review |
| 工具注释 | 安全使用工具的元数据提示(readOnlyHint、幂等) | 所有工具 |
推荐工作流程
按此顺序尝试工具,以查看每个MCP概念都是在最后一个概念的基础上构建的:
hello→ 验证连接get_weather→ 查看带有类型化模式的结构化输出long_task→ 实时观看进度通知流load_bonus_tool→ 然后重新列出工具以查看bonus_calculator动态显示ask_llm→ 查看服务器向客户端请求LLM完成confirm_action/get_feedback→ 参见启发(工具执行期间的用户输入)
🚀 快速开始
每个仓库都包含DevContainers、VS Code任务和实时重新加载。克隆→ 在VS代码中打开→ 开始编码。
| 语言 | 运行(stdio) | 实时重新加载 |
|---|---|---|
🐍 python uv run mcp-python-starter --stdio | 内置(uv自动重新加载) | |
| 📘 TypeScript | npm install && npm run build && node dist/stdio.js | npm run dev (tsx手表) |
| 🐹 去吧 | go run ./cmd/stdio | air |
| 🦀 生锈 | cargo run --bin mcp-rust-starter-stdio | cargo watch |
💜 C dotnet run -- --stdio | dotnet watch run | |
| 🟣 Kotlin | ./gradlew fatJar && java -jar build/libs/mcp-kotlin-starter-1.0.0-all.jar | ./gradlew runStdio --continuous |
| 🐘 PHP | composer install && php bin/server-stdio.php | — |
✂️ 让它成为你自己的
这些起动器的设计是为了减少。要构建自己的服务器:
- 保留你需要的东西 --与您的用例相匹配的工具/资源/提示
- 评论其余部分 --每个功能都是独立的,易于删除
- 添加您自己的工具 --遵循代码中的现有模式
代码有很好的注释来解释MCP概念——阅读注释以了解每个部分的作用及其原因。
🔌 连接到MCP客户端
每个repo都包含一个 .vscode/mcp.json 它与VS Code/GitHub Copilot一起开箱即用。对于其他客户端,将stdio命令添加到其MCP配置中:
| 客户端 | 配置位置 | 文档 |
|---|---|---|
| VS代码/副本 | .vscode/mcp.json (已包含) | VS代码MCP文档 |
| Copilot命令行界面 | ~/.copilot/mcp-config.json | Copilot CLI MCP文档 |
| 克劳德桌面版 | claude_desktop_config.json | 克劳德桌面MCP文档 |
| 克劳德代码 | claude code mcp add CLI | 克劳德代码MCP文档 |
| 光标 | ~/.cursor/mcp.json | 光标MCP文档 |
| 帆板运动 | ~/.codeium/windsurf/mcp_config.json | Windsurf MCP文件 |
所有客户端都使用类似的JSON格式——指向 command 和 args 在您的语言的stdio入口点(请参阅上面的快速入门表)。
⚠️ SDK级别差异
所有服务器都实现相同的接口,但由于SDK行为存在一些差异,特别是对于 第3层 和 待定 可能尚未完全符合协议的SDK。这些都有记录,所以你知道什么是语言选择与SDK约束:
| 差异 | 原因 | 影响 |
|---|---|---|
inputSchema.title 命名 | SDK自动生成(例如Python: "helloArguments",去: "HelloInput") | 仅限化妆品 |
annotations.title placement | Python SDK放入 annotations,其他高层 title | 仅限化妆品 |
outputSchema 格式 | 特定于SDK的模式生成 | 仅限外观 |
prompts.listChanged / resources.listChanged | 一些SDK硬编码 true 当处理程序注册时(例如TypeScript) | 功能等效 |
| 资源模板(Kotlin) | Kotlin SDK缺少公共模板 addResourceTemplate API-注册为静态资源的模板 | 请参阅 SDK_LIMITIONS.md |
一级SDK(Python、TypeScript、Go、C#)的差异最小。Tier 2(Rust)紧随其后。较低层的SDK可能还有额外的差距——检查每个仓库的 SDK_LIMITATIONS.md 了解详情。
📋 跨服务器一致性
此回购包括 运行 mcp服务器差异 每周检测服务器之间的接口漂移。当发现差异时,结果会作为GitHub问题发布。
📖 文档
🤝 贡献
欢迎投稿!每个存储库都有自己的贡献指南。可以通过以下方式提出总体改进或新的语言实现 问题.
研讨会反馈
在车间里用过这些起动器吗? 提交反馈 帮助他们改进!
📄 许可证
所有存储库都根据MIT许可证获得许可。
