项目快照:modelcontextprotocol/servers,约 89,611 个 Star,11,453 个 Fork;最新推送时间 2026-08-10T02:41:59Z。本文基于仓库公开资料撰写。

项目地址:https://github.com/modelcontextprotocol/servers · https://modelcontextprotocol.io

servers 从代码、运行环境到实践流程的项目封面
servers 的项目能力与实践流程示意。

项目速览(TL;DR)

Model Context Protocol Servers 是模型上下文协议(Model Context Protocol,MCP)的参考服务器集合,主要用于展示 MCP 特性和软件开发工具包(Software Development Kit,SDK)的使用方式。仓库并不是面向生产环境的完整服务器产品目录,README 明确指出,服务器的定位是教育示例和参考实现。

仓库默认分支为 main,主要语言为 TypeScript;GitHub 元信息显示 Star 为 89,611,Fork 为 11,453。仓库描述为 “Model Context Protocol Servers”,仓库许可证字段显示为 NOASSERTION,但仓库中的 LICENSE 文件说明项目正从 MIT License 向 Apache License 2.0 过渡,具体适用许可需要按贡献内容和 LICENSE 判断。

  • 仓库用途:维护少量由 MCP 指导组维护的参考服务器。
  • 当前 README 列出的参考服务器:Everything、Fetch、Filesystem、Git、Memory、Sequential Thinking、Time。
  • TypeScript 服务器可通过 npx 启动,Python 服务器可通过 uvxpip 使用。
  • 与 MCP 客户端配合后,模型才能通过受控接口访问工具和数据源。
  • README 将安全评估和防护责任明确留给使用者,未提供生产环境安全保证、服务等级协议(SLA)或性能基准。

定位与目标用户

本项目面向需要理解 MCP 服务器实现方式、SDK 调用模式和客户端配置方法的开发者。它的主要价值在于提供可阅读、可运行、可改造的参考代码,而不是直接替代企业内部经过安全审计和运维验证的服务。

目标用户可以从代码示例、启动命令和客户端配置中了解 MCP 服务器如何向大语言模型(Large Language Model,LLM)暴露工具、资源或提示。README 同时指向 MCP 官方文档,用于学习自定义服务器的实现细节、最佳实践和技术说明。

仓库当前只维护少量参考服务器。如果需求是查找更广泛的 MCP 服务器,README 建议使用 MCP Registry;该仓库 README 专门说明,仓库自身不承担完整服务器目录的角色。

核心功能

核心功能由不同参考服务器分别展示,不能将所有服务器视为具有同一组接口。每个服务器通常由对应的 MCP SDK 实现,但资料没有给出统一的端口、HTTP 接口签名、消息字段或跨服务器通用命令,因此这些细节应以各目录中的最新说明为准。

Everything:综合参考与测试

Everything 是用于参考和测试的服务器,README 明确列出它展示提示(prompts)、资源(resources)和工具(tools)。其机制重点不是连接某一个外部业务系统,而是集中展示 MCP 能力类型,开发者可以据此观察客户端如何发现和使用这些能力。

资料没有提供 Everything 的具体提示名称、资源标识符、工具参数、返回值格式或验证命令。需要研究这些接口时,应直接查看 src/everything 目录及其包内文档,不应根据服务器名称推断未公开的接口。

Fetch:网页内容获取与转换

Fetch 用于获取网页内容,并转换为更适合 LLM 使用的形式。触发条件、输入网址的字段名称、内容转换规则、网络代理配置、超时策略和返回格式均未在提供的 README 片段中说明。

因此,Fetch 的使用边界应由调用方明确控制,包括允许访问的网络范围、内容来源授权和隐私数据处理规则。仓库资料没有提供爬取规模、并发能力、缓存机制或可用性承诺,不能据此推导性能指标。

Filesystem:带访问控制的文件操作

Filesystem 用于执行安全文件操作,并支持配置访问控制。README 给出的客户端示例为服务器传入允许访问的文件路径,示例路径是 /path/to/allowed/files;这表明访问范围至少可以通过启动参数进行约束。

具体支持哪些文件操作、路径解析规则、符号链接处理方式、拒绝策略和错误格式,资料没有完整说明。实际部署时应将允许目录限定在测试数据或明确授权的工作区,并结合操作系统权限、容器隔离和审计要求进行额外保护。

Git:读取、搜索与操作 Git 仓库

Git 服务器提供读取、搜索和操作 Git 仓库的工具。README 的客户端示例通过 uvx mcp-server-git --repository path/to/git/repo 指定仓库路径,仓库位置因此成为启动配置的一部分。

资料未说明哪些 Git 操作具有写入能力,也未列出分支、提交、工作区和远程仓库的具体参数。对于包含未发布代码或凭据的仓库,应先在授权的本地测试副本中验证,并避免把敏感目录直接授予模型可调用的操作范围。

Memory:基于知识图谱的持久化记忆

Memory 是基于知识图谱(Knowledge Graph)的持久化记忆系统,README 给出的最小启动命令是 npx -y @modelcontextprotocol/server-memory。这里的“持久化”是 README 对该参考服务器的功能描述,资料没有进一步给出存储文件位置、数据格式、清理策略或并发模型。

模型通过 MCP 客户端使用该服务器时,记忆数据的写入和读取边界取决于客户端与服务器的配置。若数据包含个人信息、内部知识或业务机密,应在接入前确定保留期限、删除机制、访问主体和备份范围;仓库资料没有提供这些合规策略的默认实现说明。

Sequential Thinking:顺序化思考流程

Sequential Thinking 用于展示动态且可反思的问题求解过程,通过一系列思考序列组织处理步骤。README 只给出了功能定位,没有提供其具体消息结构、序列状态模型、终止条件或客户端展示方式。

因此,该服务器不能被描述为某种固定的推理引擎,也不能据此推断模型能力或答案质量。它更适合作为研究 MCP 工具交互和状态传递方式的参考实现。

Time:时间与时区转换

Time 提供时间和时区转换能力。资料没有列出可接受的时间格式、时区数据库版本、夏令时处理规则、错误处理方式或区域限制,实际输入输出必须以对应实现为准。

使用时应在业务边界中明确时间基准和结果格式,尤其要避免将未说明的默认时区当作业务规则。仓库没有提供该服务器的精度、性能或长期维护承诺。

系统架构与关键模块

从仓库组织方式看,顶层包使用 npm 工作区(npm workspaces)管理 src/* 下的子包,TypeScript 参考服务器被拆分为相对独立的模块。顶层 package.jsonbuildwatch 脚本会分别对所有工作区执行同名脚本。

服务器与 MCP 客户端之间的关系是“服务器提供能力、客户端负责接入模型”。README 示例通过 Claude Desktop 的 mcpServers 配置声明服务器名称、启动命令、命令参数和环境变量;模型并不是直接连接仓库,而是通过客户端调用已配置的服务器。

模块或层次 资料中确认的职责 触发方式 资料未提供的细节
顶层工作区 管理 src/* 下的 npm 子包 执行顶层 npm 脚本 各子包的完整依赖图和构建产物
Everything 展示 prompts、resources、tools 由 MCP 客户端启动并调用 具体能力名称和参数
Filesystem 执行受访问控制约束的文件操作 启动时传入允许路径 完整操作集合和路径安全策略
Git 读取、搜索和操作 Git 仓库 启动时指定仓库路径 读写权限边界和工具签名
Memory 提供知识图谱式持久化记忆 通过 npm 包启动 持久化介质、数据格式和清理方法
客户端配置 将服务器注册到 MCP 客户端 配置 mcpServers 除示例客户端外的兼容性矩阵

依赖与运行环境

根据仓库根目录的 package.json,顶层包名为 @modelcontextprotocol/servers,版本为 0.6.2,包类型为 ES Module,设置了 npm 工作区 src/*。顶层包标记为 private: true,并声明其文件列表为空;发布行为由工作区脚本处理。

资料确认的运行入口包括 TypeScript 服务器使用 npx,Python 服务器使用 uvxpip。README 推荐使用 uvx 以简化 Python 服务器的安装和设置,但没有提供 Node.js、npm、Python 或 uv 的版本要求。

  • 已确认语言:TypeScript。
  • 已确认模块类型:ES Module,即 "type": "module"
  • 已确认工作区:src/*
  • 顶层依赖声明包含 @modelcontextprotocol/server-everything@modelcontextprotocol/server-memory@modelcontextprotocol/server-filesystem@modelcontextprotocol/server-sequential-thinking,版本范围均为 *
  • 仓库还设置了 qs 不低于 6.15.2hono 不低于 4.12.21 的依赖覆盖规则。

操作系统兼容性、CPU 和内存最低要求、容器镜像、数据库要求及网络出站要求,官方仓库提供的资料未完整说明,建议以最新 README 和各服务器目录说明为准。

快速开始:最小可运行示例

最小闭环可以使用 Memory 服务器:通过 npx 获取并启动包,再将相同启动命令登记到 MCP 客户端。该方式来自 README,未引入仓库资料之外的安装器或启动参数。

步骤一:准备运行工具

README 使用 npx 启动 TypeScript 服务器,因此运行环境需要能够执行该命令。资料没有给出 Node.js 或 npm 的最低版本;如果本机尚未提供 npx,官方仓库未提供该信息,建议以最新 README 为准。

Bash
npx --version

步骤二:启动 Memory 服务器

以下命令是 README 给出的 Memory 启动方式。参数 -y 用于让 npx 自动确认安装提示;命令没有指定端口,资料也没有说明该服务器使用哪一种网络监听方式。

Bash
npx -y @modelcontextprotocol/server-memory

步骤三:在 MCP 客户端中验证

单独运行服务器并不能完成模型调用,README 明确建议将其配置到 MCP 客户端。下面是 README 给出的 Claude Desktop 配置片段;将配置保存到客户端支持的配置位置后,在客户端中确认 memory 服务器已被加载,再通过客户端发起与记忆能力相关的请求。

JSON
{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    }
  }
}

仓库资料没有提供 Claude Desktop 的配置文件路径、客户端版本要求、可观察的连接状态文本或独立健康检查命令,因此“验证”以客户端能够加载该配置并显示服务器可用为准。若客户端无法连接,应先检查 npx 是否可执行、包名是否完整以及客户端配置的 JSON 语法。

Windows 启动方式

README 针对 Windows 给出了明确差异:需要用 cmd /c 包装 npx。这条规则只适用于 npx 入口;README 说明,使用 uvx 的条目不需要改成 cmd

JSON
{
  "mcpServers": {
    "memory": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@modelcontextprotocol/server-memory"]
    }
  }
}

配置说明

仓库提供的配置样例主要是客户端注册信息和顶层 npm 工作区元数据,而不是统一的服务器配置文件。下表只列出资料中真实出现的字段;“未提供”表示给定资料没有给出默认值,不能据此补写推测配置。

字段名 类型 默认值 作用
name 字符串 @modelcontextprotocol/servers 顶层 npm 包名称
private 布尔值 true 标记顶层包为私有包
version 字符串 0.6.2 顶层包版本
type 字符串 module 声明使用 ES Module 模块类型
workspaces 字符串数组 ["src/*"] 声明 npm 工作区范围
mcpServers.memory.command 字符串 npx 客户端启动 Memory 服务器的命令
mcpServers.memory.args 字符串数组 ["-y", "@modelcontextprotocol/server-memory"] 传给 npx 的启动参数
mcpServers.filesystem.args 字符串数组 ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files"] 启动 Filesystem 并指定允许访问的路径
mcpServers.git.args 字符串数组 ["mcp-server-git", "--repository", "path/to/git/repo"] 启动 Git 并指定仓库路径
GITHUB_PERSONAL_ACCESS_TOKEN 环境变量字符串 未提供 README 的 GitHub 示例中用于提供个人访问令牌
mcpServers.postgres.args 字符串数组 ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"] README 的 PostgreSQL 示例中传入数据库连接字符串

表中的 GitHub 令牌和 PostgreSQL 连接字符串来自 README 的示例,但这两个服务器已列入归档服务器列表,不能据此认定它们仍由当前仓库维护。令牌占位符只能替换为授权环境中的真实值,不能把凭据写入公开仓库、日志或客户端共享配置。

进阶用法

进阶使用的重点是根据服务器能力选择启动方式,并将服务器作为客户端中的独立条目管理。README 同时展示了文件系统、Git、GitHub 和 PostgreSQL 的客户端配置形态,但其中部分服务器已经归档,使用前应核对其当前维护位置。

JSON
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files"]
    },
    "git": {
      "command": "uvx",
      "args": ["mcp-server-git", "--repository", "path/to/git/repo"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
      }
    },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
    }
  }
}

该配置展示了三类参数传递方式:通过命令参数传递路径、仓库或连接字符串;通过环境变量传递访问令牌;通过不同命令选择 TypeScript 或 Python 服务器。资料没有说明客户端对多个服务器的并发调度、工具名称冲突处理或权限审批流程,不能把示例扩展为统一运行规范。

使用 Python Git 服务器

README 给出了 Git 服务器的两种 Python 使用方式。推荐路径是 uvx 直接运行;也可以先用 pip 安装,再以 Python 模块方式启动。

Bash
uvx mcp-server-git --repository path/to/git/repo
Bash
pip install mcp-server-git
python -m mcp_server_git

这些命令中的 path/to/git/repo 只是 README 使用的示例路径,应替换为本地且已获授权的 Git 仓库路径。资料没有说明通过模块启动时如何传入仓库参数,因此不应自行补写未在 README 中出现的参数格式。

可观测性与运维

给定资料只提供服务器启动命令和客户端配置,没有提供日志格式、指标名称、追踪协议、健康检查接口、退出码、轮换策略或部署拓扑。生产运维所需的可观测性方案不能从仓库元数据中推断。

在本地或测试环境中,可以把以下事项作为上线前核对项,但它们属于运维建议而非仓库已实现功能:

  • 记录客户端启动命令、服务器名称和配置版本,避免无法区分多个 MCP 服务器实例。
  • 对 Filesystem 的允许路径、Git 的目标仓库和数据库连接字符串进行配置审查。
  • 对涉及令牌的环境变量实施最小权限、脱敏日志和定期轮换。
  • 在客户端中验证服务器是否可加载,并保存连接失败时的命令输出。
  • 不要把仓库的 Star、Fork 或包版本当作可用性、吞吐量、故障恢复时间或维护承诺。

根据本文作者的经验判断,如果团队要在生产环境长期运行这些服务器,应补充进程监督、资源限制、日志留存、变更审批和回滚方案;这些内容不属于当前资料中已经确认的项目能力。

安全与合规边界

该仓库涉及文件访问、Git 仓库操作、网页内容获取、数据库访问和第三方 API 凭据等高风险数据边界。README 明确警告:这些服务器是参考实现,不是生产就绪方案,使用者必须根据自身威胁模型和用途评估安全需求并实施适当防护。

授权与隔离要求

  • Filesystem 只能指向已授权的目录,示例中的 /path/to/allowed/files 不应替换为无边界的系统根目录。
  • Git 服务器只应连接已经批准的本地仓库或测试副本,尤其要审查其是否包含凭据、个人数据和未发布源代码。
  • Fetch 只能访问组织允许的网页和网络资源;不得把它用于访问未授权目标、绕过访问控制或规避站点规则。
  • GitHub 个人访问令牌必须使用最小权限,并通过安全的环境变量管理;资料未提供所需权限范围。
  • PostgreSQL 示例连接的是本地数据库地址,但资料没有给出只读、写入或数据库账户权限要求,实际权限必须由部署方明确限制。
  • Memory 的持久化数据应进行分类分级,涉及个人信息或机密信息时应先确认存储、删除、备份和访问审计要求。

本文只讨论本地、测试和已获授权环境中的使用,不提供面向未授权目标的攻击教程、凭据获取方法、检测绕过技巧或访问控制规避方案。仓库未提供安全审计结论、漏洞数量、CVE 清单、合规认证或数据驻留承诺。

许可证与商用条款

仓库的 GitHub 许可证元信息为 NOASSERTION,顶层 package.json 的许可证字段为 SEE LICENSE IN LICENSE。LICENSE 文件说明项目正在从 MIT License 过渡到 Apache License 2.0(Apache-2.0),不同贡献的实际许可取决于其是否取得重新许可同意。

LICENSE 说明:新代码和规范贡献采用 Apache-2.0;不属于规范的文档贡献采用 CC-BY-4.0;已取得重新许可同意的贡献采用 Apache-2.0;原先按 MIT 许可且作者尚未明确同意重新许可的贡献仍按 MIT 许可。不能仅依据仓库根目录的字段,把所有历史文件统一解释为单一许可证。

分发与商用核对

  • Apache-2.0 条款授予复制、准备衍生作品、公开展示、公开执行、再许可和分发等权利,并包含专利许可条款。
  • 分发作品或衍生作品时,需要随附许可证文本,并保留适用的版权、专利、商标和归属声明。
  • 修改文件时,需要在显著位置说明已作修改;如果原作品包含 NOTICE 文件,分发衍生作品还需按 LICENSE 要求保留相关归属信息。
  • LICENSE 对未完成重新许可的历史贡献保留原 MIT 许可效力;文档和规范的许可范围也应分别核对。
  • 从上述授权条款看,许可证没有排除商业使用;但商用分发仍须满足对应许可证的通知、版权和修改声明要求,并以仓库 LICENSE 为准。

这不是法律意见。企业分发、闭源集成、专利风险评估和文档再利用应由法务按具体文件、贡献来源和发行方式审查。

局限性与已知限制

最重要的限制是项目定位:README 直接将服务器定义为参考实现和教育示例,而非生产就绪解决方案。使用者不能把“能够启动”理解为已经完成安全、性能、可靠性和合规验证。

  • 资料没有提供统一的 API、端口、传输协议参数或服务器健康检查接口。
  • 资料没有提供性能基准、并发上限、吞吐量、延迟、资源消耗或 SLA。
  • 资料没有给出各服务器的完整工具清单、输入输出模式、错误码和兼容性矩阵。
  • 部分 README 中列出的服务器已归档,例如 AWS KB Retrieval、Brave Search、GitHub、GitLab、Google Drive、Google Maps、PostgreSQL、Puppeteer、Redis、Sentry、Slack 和 SQLite。
  • 顶层依赖对部分工作区包使用 * 版本范围,资料没有说明发布锁定策略和可复现安装方案。
  • 仓库许可证处于过渡状态,历史贡献与新贡献可能适用不同许可。

如果需求是稳定的生产连接器、明确的版本支持周期或经过审计的企业服务,需要在参考实现之外完成工程化封装和独立验证。官方仓库未提供这些承诺,建议以最新 README、对应子目录和许可证文件为准。

适合谁

以下信号表明该仓库与需求匹配度较高,尤其适合把代码作为学习、验证和原型基础的团队。

  • 团队正在实现 MCP 服务器,需要观察 prompts、resources、tools 等能力如何组织。
  • 项目希望使用 TypeScript 工作区研究多个独立服务器包的构建和启动方式。
  • 已有 Claude Desktop 等 MCP 客户端,需要通过配置接入本地文件、Git 仓库或记忆示例。
  • 使用场景位于本地开发、实验室、测试数据集或明确授权的内部环境。
  • 团队能够自行承担安全审查、权限隔离、日志、升级和许可证核对工作。

不适合谁

以下信号表明不应直接把当前仓库当作交付物使用,而应寻找经过独立验证的实现或先完成二次工程化。

  • 要求官方提供生产级安全保证、SLA、性能指标或固定的长期维护承诺。
  • 需要在未完成授权审查的情况下访问个人信息、机密文件、核心代码或生产数据库。
  • 要求完整、稳定且版本化的统一 API,而当前资料没有提供跨服务器接口契约。
  • 团队没有能力管理第三方令牌、数据库权限、文件路径隔离和审计日志。
  • 业务依赖已归档服务器,却没有确认其当前维护方、发布渠道和许可证适用范围。

在上述场景中,替代方案应根据组织的合规、维护和数据隔离要求选择;当前资料没有指定某个统一替代产品,因此不对未在资料中出现的方案进行比较。

常见问题与排查(FAQ / Troubleshooting)

为什么直接运行服务器后,模型没有反应

README 说明,单独运行服务器并不能完成使用,服务器应配置到 MCP 客户端。先确认客户端配置中的 commandargs 与 README 示例一致,再检查客户端是否能够执行本机的 npxuvx

Windows 上为什么不能直接使用 npx

README 要求 Windows 使用 cmd /c 包装 npx,并在参数前加入 /cnpxuvx 条目保持原样,不应用同一包装规则。

Filesystem 的允许路径应该如何填写

README 示例传入 /path/to/allowed/files 作为参数。该路径应替换为本地已授权目录;资料没有说明相对路径、符号链接、多个目录或路径通配符的具体行为,遇到这些问题应查看对应服务器实现。

GitHub 示例中的令牌是否可以直接提交到配置文件

不应提交真实令牌。README 使用 <YOUR_TOKEN> 作为占位符,资料只确认令牌通过 GITHUB_PERSONAL_ACCESS_TOKEN 环境变量传入,未提供权限范围和轮换机制。

如何确认某个服务器是否仍由当前仓库维护

先查看当前 README 的 Reference Servers 和 Archived 列表,再根据归档条目提供的维护方链接核对。README 已明确将多个服务器迁移到 servers-archived,不能仅凭历史包名判断当前维护状态。

仓库是否提供 Docker、端口或健康检查配置

给定资料没有提供 Docker 配置、端口配置或健康检查命令。官方仓库未提供该信息,建议以最新 README 和对应服务器目录为准,不应自行假定默认端口或部署方式。

项目维护与贡献入口

仓库 README 提供了贡献、发布和安全报告的独立文档入口,说明项目的协作流程与发布流程不应仅依据根目录 package.json 推断。贡献者应先阅读贡献指南,涉及漏洞时使用安全政策中指定的报告流程。

  • CONTRIBUTING.md:贡献说明。
  • RELEASING.md:发布说明,包括通过持续集成(Continuous Integration,CI)进行 OIDC 可信发布以及失败发布重试信息。
  • SECURITY.md:安全漏洞报告说明。
  • ADDITIONAL.md:用于构建 MCP 服务器和客户端的框架与资源清单。

根目录脚本包括 buildwatchpublish-alllink-all。其中发布脚本会对工作区执行 npm 发布操作;实际发布资格、包内容和凭据要求仍应以发布文档为准。

版本、仓库状态与资料范围

本文依据给定仓库资料撰写,能够直接确认的顶层版本是 package.json 中的 0.6.2,默认分支是 main。GitHub 元信息中的 Star 和 Fork 是资料提供时的数值,随着仓库活动变化,不应作为固定项目规模指标。

本文没有补写资料中缺少的运行时版本、网络端口、接口签名、性能数据、漏洞信息或服务承诺。若当前仓库内容已经变化,应优先以项目最新 README、具体服务器子目录、LICENSE 和安全文档为准。

项目地址与资源

以下链接均来自仓库资料或 README 明确列出的官方项目资源,可用于继续核对实现、文档、注册表和归档状态。

“The servers in this repository are intended as reference implementations to demonstrate MCP features and SDK usage. They are meant to serve as educational examples for developers building their own MCP servers, not as production-ready solutions.”

来源:README