MCP Server 把工具和数据能力提供给支持 MCP 的客户端。挑选项目时,先明确要访问的系统、允许的动作和部署边界,再看具体实现。一个叫“数据库 MCP”的项目,不能代表所有数据库连接器;支持协议,也不等于已满足生产安全和运维要求。
本文根据 LearnAgent 原文重整,产品资料核验于 2026-10-03。目录只收录能明确定位的实现或官方入口,不按未经核实的热度排序。
从这些项目开始阅读
| 项目或入口 | 可以研究什么 | 接入前要确认什么 |
|---|---|---|
| 官方 Git 参考服务器 | 本地仓库状态、差异、提交与分支等 Git 操作 | 仓库路径、写入许可、工作区隔离;它不是 GitHub PR 管理器 |
| 官方参考服务器集合中的 Filesystem | 受限目录中的文件操作 | 可访问目录与符号链接处理;写入前的确认和恢复方法 |
| 同一集合中的 Memory | 用知识图谱组织实体、关系和观察记录 | 存储持久性、用户隔离、删除机制;它不是通用 KV 数据库 |
| 同一集合中的 Fetch | 读取并处理网页内容 | 可访问主机、响应体限制、超时及来自网页的恶意指令 |
| 官方 Python SDK | 自建服务器和客户端的协议实现 | 安装版本对应的 API、传输和运行要求 |
| 官方 TypeScript SDK | TypeScript 项目的协议集成 | v1 与 v2 的包名和 API 不可混用 |
| FastMCP | 独立 FastMCP 项目的 Python 开发方式 | fastmcp 包与官方 mcp SDK 是不同依赖,教程应明确使用哪一个 |
官方参考仓库主要展示协议能力和实现方法,不能直接视为生产认证清单。仓库同时记录归档或迁出的项目;旧 Google Drive、GitHub、Slack 等参考实现的存在,不代表它们仍在原位置持续维护。选择这类集成时,应沿官方仓库链接确认现维护者、最新发布及认证方式。参考服务器及维护说明
按任务找实现
读代码、读资料和改业务数据应分开设计。代码检索先从只读权限开始,需要创建 PR 时再选择能操作托管平台的具体实现,并单独批准写权限。不要因为工具名中含 Git,就推断它能够处理 GitHub Issue 或 PR。
业务查询宜提供“按订单号查询当前状态”这类受限工具,而不是把任意 SQL 交给模型执行。工具服务应使用只读账号或明确限制的业务接口,并设置租户校验、参数检查、结果上限、超时和审计。模型生成的语句、网页文本和工具结果都不能代替服务端权限判断。
长期记忆先回答“记住谁的什么信息、保存多久、谁能删除”。知识图谱、向量检索和键值存储解决的问题不同;仅做跨会话偏好保存时,不必为了 MCP 而引入复杂知识图谱。
本地与远程连接
本地子进程可使用 stdio;远程服务通常评估 Streamable HTTP。旧 HTTP+SSE 传输已被弃用,但仍存在兼容实现。接入时必须记录双方实际采用的协议版本,不能把旧教程的会话、重连和端点行为直接套进新服务器。MCP 2026-07-28 传输规范
远程接入需要额外检查认证、授权、Origin 校验、TLS、网络暴露范围和凭据归属。只把服务器放在内网,不能替代对用户和工具动作的鉴权;把令牌写进示例、日志或仓库同样不可接受。Streamable HTTP 安全要求
一个低风险的试用流程
- 记录项目的准确仓库、维护者、许可证、固定版本及最后核验日期。先读安装脚本和工具列表,不直接执行不明来源的一键命令。
- 在隔离工作区启用一个只读工具,使用合成数据或专门的测试账号。不要连接生产数据库或私人主目录。
- 分别测试正常输入、越权输入、超大响应、超时、服务重启和凭据过期。确认失败时不会扩大权限或自动重试写操作。
- 检查工具名称、参数和返回结果是否清楚。把不可信内容标为数据,让系统权限限制真正执行的动作。
- 确认日志不会记录令牌和敏感内容,再评估写入、多人共享及长期运行。
验收结果应是“这个版本在这些限制下完成了指定任务”,而不是“支持 MCP,所以可以安全接入任何业务”。
自建服务器时的版本边界
现行 TypeScript v2 文档使用 @modelcontextprotocol/server 等拆分包及相应注册接口;v1 维护线示例应按 v1 文档使用。Python 也必须区分官方 SDK 与独立 FastMCP。本文不保留缺少依赖、传输或业务实现的伪“快速入门”代码;实际开发应从选定版本的完整官方示例开始,并把锁文件和测试结果一起保存。TypeScript SDK、Python SDK
如果目标只是理解机制,优先阅读少量工具、权限范围清楚的参考实现;如果目标是生产接入,维护状态、权限和故障处理比目录数量更重要。