模型上下文协议学习工具

提供跨7种语言的模型上下文协议(MCP)完整实现,作为学习MCP的入门项目,支持快速构建和动态工具加载。

  • by SamMorrowDrums
  • 本地部署
  • 更新于
在 GitHub 查看 SamMorrowDrums/mcp-starters

使用说明

🚀 MCP起动器

功能完成 模型上下文协议 跨7种语言的(MCP)服务器实现——设计为 车间启动项目 学习MCP。

选择你的语言,克隆仓库,然后开始构建。每个服务器都实现了相同的接口,因此您可以专注于学习MCP概念,而不是对不同的实现进行逆向工程。

🗂️ 选择您的语言

语言 存储库 SDK 等级
🐍 python mcp python入门 python sdk (FastMCP) 第1级
📘 TypeScript mcp排版启动器 打字sdk 第1级
🐹 走 mcp首发 去sdk 第1级
🦀 锈 mcp防锈剂 锈sdk (rmcp) 第2级
💜 C mcp-csharp起动器 csharp sdk 第1级
🟣 科特林 mcp-kotlin首发 科特林sdk TBD
🐘 PHP mcp-php启动器 php-sdk 第3级

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概念都是在最后一个概念的基础上构建的:

  1. hello → 验证连接
  2. get_weather → 查看带有类型化模式的结构化输出
  3. long_task → 实时观看进度通知流
  4. load_bonus_tool → 然后重新列出工具以查看 bonus_calculator 动态显示
  5. ask_llm → 查看服务器向客户端请求LLM完成
  6. 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 —

✂️ 让它成为你自己的

这些起动器的设计是为了减少。要构建自己的服务器:

  1. 保留你需要的东西 --与您的用例相匹配的工具/资源/提示
  2. 评论其余部分 --每个功能都是独立的,易于删除
  3. 添加您自己的工具 --遵循代码中的现有模式

代码有很好的注释来解释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 了解详情。

📋 跨服务器一致性

此回购包括 GitHub操作工作流 运行 mcp服务器差异 每周检测服务器之间的接口漂移。当发现差异时,结果会作为GitHub问题发布。

📖 文档

🤝 贡献

欢迎投稿!每个存储库都有自己的贡献指南。可以通过以下方式提出总体改进或新的语言实现 问题.

研讨会反馈

在车间里用过这些起动器吗? 提交反馈 帮助他们改进!

📄 许可证

所有存储库都根据MIT许可证获得许可。