servers - MCP官方服务器参考实现库,用于构建AI工具生态系统
你是否曾经梦想过,让AI助手能够像人类一样使用各种工具——读取本地文件、操作数据库、管理云资源、发送邮件、浏览网页……所有这些能力都不需要为每个AI单独开发,而是通过一个统一的协议,让AI与现有工具无缝对接。这就是Model Context Protocol(MCP)正在做的事情,而servers项目正是MCP生态系统的核心——一个汇集了官方参考实现和社区贡献的MCP服务器集合。
servers是MCP(Model Context Protocol)官方维护的服务器仓库,包含了大量参考实现和社区贡献的服务器。这个项目是MCP生态的基石,它展示了如何将各种工具和服务封装成AI可调用的标准接口,让AI能够真正“连接”到现实世界。随着MCP协议的普及,这个项目正在成为AI应用开发的基础设施。
项目基本信息
| 信息项 | 详情 |
|---|---|
| 项目名称 | servers |
| GitHub地址 | https://github.com/modelcontextprotocol/servers |
| 项目描述 | Model Context Protocol Servers |
| 作者 | modelcontextprotocol |
| 开源协议 | Other |
| Stars | 82370 |
| Forks | 10116 |
| 支持平台 | Windows / macOS / Linux |
| 最后更新 | 2026-03-29 |
一、项目介绍
servers是MCP官方维护的服务器参考实现仓库。MCP是一个开放协议,旨在标准化AI应用与外部工具之间的交互方式。你可以把它理解为AI世界的“USB接口”——不同的工具只要遵循MCP协议,就能被任何支持MCP的AI应用识别和使用。
这个项目的核心价值在于:
- 参考实现:提供了各种MCP服务器的参考实现,包括文件系统、数据库、API集成、浏览器自动化等,开发者可以学习如何构建自己的MCP服务器。
- 社区生态:汇集了社区贡献的MCP服务器,涵盖从开发工具到云服务的广泛领域,形成了丰富的AI工具生态。
- 最佳实践:每个服务器都遵循MCP协议的最佳实践,展示了如何设计工具接口、处理错误、管理资源等。
- 快速上手:开发者可以直接使用这些服务器,快速为自己的AI应用添加各种能力。
servers仓库包含了数十个MCP服务器,主要分为以下几类:
文件系统与数据
filesystem:本地文件系统操作sqlite:SQLite数据库查询和管理postgres:PostgreSQL数据库连接mongodb:MongoDB数据库操作
开发工具
github:GitHub API集成git:Git版本控制操作gitlab:GitLab API集成jira:Jira项目管理slack:Slack消息发送discord:Discord机器人
云服务
aws:AWS云资源管理gcp:Google Cloud Platformazure:Microsoft Azure
浏览器与Web
playwright:浏览器自动化puppeteer:Web抓取和自动化fetch:HTTP请求工具
AI与LLM
brave-search:Brave搜索引擎memory:AI记忆管理vector-store:向量数据库
其他
weather:天气查询calendar:日历管理email:邮件发送和接收notion:Notion笔记管理linear:Linear项目管理
二、核心优势
servers项目作为MCP生态的核心,具有以下独特优势:
- 官方权威:由MCP官方团队维护,确保了服务器的质量和协议兼容性。每个参考实现都严格遵循MCP规范,是学习MCP开发的最佳范例。
- 丰富的开箱即用能力:提供了数十个现成的MCP服务器,覆盖了开发、运维、办公、数据等各个领域。开发者可以直接使用这些服务器,为自己的AI应用快速添加功能。
- 多种编程语言支持:服务器使用不同的编程语言实现,包括TypeScript/JavaScript、Python、Go等,开发者可以选择自己熟悉的语言进行学习和扩展。
- 活跃的社区生态:拥有超过8.2万颗星和1万多个Forks,社区非常活跃。每天都有新的服务器被贡献,新的功能被添加,问题被快速响应。
- 完善的学习资源:每个服务器都配有详细的README文档,包括安装步骤、配置方法、使用示例。官方还提供了MCP协议规范文档,帮助开发者深入理解协议设计。
- 标准化接口:所有服务器都遵循统一的MCP协议接口,这意味着它们可以被任何支持MCP的AI客户端使用,实现了“一次开发,到处运行”。
- 安全的设计:服务器设计时考虑了安全性,支持多种认证方式,遵循最小权限原则。用户可以精细控制AI可以访问哪些资源和执行哪些操作。
三、适用场景
servers项目适用于多种AI工具集成的场景:
- AI应用开发:当你开发一个AI应用时,可以使用servers中的现成服务器快速添加功能。例如,添加文件读写能力、数据库查询能力、网络搜索能力等,无需从头实现。
- 个人生产力提升:将servers中的服务器配置到Claude Desktop等AI客户端,让AI助手能够操作本地文件、管理项目、发送消息,成为真正的生产力工具。
- 企业工作流集成:企业可以基于servers构建内部工具,让AI能够访问内部数据库、Jira项目、Slack频道,自动化处理日常任务。
- 学习和研究:对于想了解MCP协议和AI工具生态的开发者,servers是最好的学习资源。通过阅读源码,你可以理解如何设计工具接口、如何处理异步操作、如何管理资源生命周期。
- 二次开发和扩展:你可以fork现有的服务器,根据自身需求进行修改和扩展,快速构建定制化的AI工具。
- 测试和验证:在开发自己的MCP服务器时,可以使用servers中的参考实现作为测试基准,验证协议兼容性。
四、安装教程
系统要求
| 工具 | 用途 | 下载/安装方式 |
|---|---|---|
| Node.js | 运行TypeScript/JavaScript服务器 | [https://nodejs.org/] (版本要求:18.0 或以上) |
| Python | 运行Python服务器 | [https://python.org/] (版本要求:3.8 或以上) |
| Git | 下载项目代码 | [https://git-scm.com/] |
方法一:直接使用预构建的服务器
大多数MCP客户端(如Claude Desktop)支持直接配置使用这些服务器。
Claude Desktop配置
配置文件位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
添加服务器配置示例:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your-token"
}
},
"sqlite": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sqlite", "--db-path", "/path/to/database.db"]
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "your-api-key"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://user:pass@localhost/db"]
}
}
}方法二:从源码运行
- 克隆仓库
git clone https://github.com/modelcontextprotocol/servers.git
cd servers- 安装依赖
对于TypeScript/JavaScript服务器:
npm install
npm run build对于Python服务器:
pip install -r requirements.txt- 运行特定服务器
# 运行TypeScript服务器
npx @modelcontextprotocol/server-filesystem /path/to/dir
# 运行Python服务器
python src/sqlite/server.py --db-path /path/to/db方法三:使用特定服务器的独立安装
每个服务器都有独立的安装说明,以filesystem服务器为例:
# 全局安装
npm install -g @modelcontextprotocol/server-filesystem
# 运行
mcp-server-filesystem /allowed/directory五、使用示例
核心服务器使用示例
示例1:文件系统服务器
配置filesystem服务器后,AI可以读取、写入和管理本地文件。
用户输入:
读取我桌面上的README.md文件内容
AI调用read_file工具,返回文件内容。
用户输入:
在当前目录创建一个名为notes.txt的文件,内容是“这是AI创建的笔记”
AI调用write_file工具,创建文件并写入内容。
用户输入:
列出下载目录中的所有文件
AI调用list_directory工具,返回文件列表。
示例2:GitHub服务器
配置GitHub服务器后,AI可以管理GitHub仓库。
用户输入:
查看我的仓库modelcontextprotocol/servers的最近5个issue
AI调用list_issues工具,返回issue列表。
用户输入:
创建一个新的issue,标题是“文档改进建议”,内容是“README需要添加中文翻译”
AI调用create_issue工具,创建新issue。
用户输入:
搜索所有包含“MCP”关键字的仓库
AI调用search_repositories工具,返回搜索结果。
示例3:SQLite服务器
配置SQLite服务器后,AI可以查询和操作数据库。
用户输入:
查询users表中的所有数据
AI调用query工具,执行SQL并返回结果。
用户输入:
创建一个新表products,包含id、name、price字段
AI调用execute工具,执行CREATE TABLE语句。
示例4:Brave Search服务器
配置Brave Search服务器后,AI可以进行网络搜索。
用户输入:
搜索最近关于MCP协议的最新消息
AI调用search工具,返回搜索结果列表。
示例5:Git服务器
配置Git服务器后,AI可以执行Git操作。
用户输入:
查看当前仓库的状态
AI调用git_status工具,返回修改的文件列表。
用户输入:
提交所有更改,提交信息是“通过AI自动提交”
AI调用git_commit工具,执行提交操作。
示例6:PostgreSQL服务器
配置PostgreSQL服务器后,AI可以查询关系数据库。
用户输入:
查询orders表,按订单金额排序,返回前10条
AI执行SQL查询并返回结果。
高级组合使用示例
示例7:代码审查自动化
结合filesystem和github服务器,AI可以自动审查PR。
用户输入:
审查PR #123,分析代码变更,如果有问题就创建issue
AI会:
- 使用github服务器获取PR的代码变更
- 分析代码质量问题
- 如果发现问题,使用github服务器创建issue
示例8:文档生成器
结合filesystem和sqlite服务器,AI可以生成数据库文档。
用户输入:
分析这个SQLite数据库,生成一份包含所有表和字段说明的Markdown文档
AI会:
- 使用sqlite服务器查询所有表结构
- 分析字段类型和关系
- 使用filesystem服务器生成Markdown文档
示例9:智能搜索系统
结合brave-search和sqlite服务器,AI可以实现搜索和存储。
用户输入:
搜索关于MCP的文章,把结果保存到数据库的search_results表中
AI会:
- 使用brave-search服务器搜索关键词
- 解析搜索结果
- 使用sqlite服务器将结果插入数据库
示例10:监控和告警系统
结合sqlite和slack服务器,AI可以实现监控告警。
用户输入:
每隔5分钟检查一下数据库中的errors表,如果有新的错误,通过Slack发送告警
AI会:
- 定期查询数据库
- 检测新错误
- 使用slack服务器发送消息
自定义服务器开发示例
示例11:创建简单的天气服务器
下面展示如何创建一个简单的MCP服务器。
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import {
CallToolRequestSchema,
ListToolsRequestSchema,
} from "@modelcontextprotocol/sdk/types.js";
// 创建服务器实例
const server = new Server(
{
name: "weather-server",
version: "1.0.0",
},
{
capabilities: {
tools: {},
},
}
);
// 列出可用工具
server.setRequestHandler(ListToolsRequestSchema, async () => {
return {
tools: [
{
name: "get_weather",
description: "获取指定城市的天气信息",
inputSchema: {
type: "object",
properties: {
city: {
type: "string",
description: "城市名称",
},
},
required: ["city"],
},
},
],
};
});
// 处理工具调用
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name === "get_weather") {
const city = request.params.arguments?.city;
// 这里应该调用真实的天气API
const weather = {
city: city,
temperature: "22°C",
condition: "晴朗",
humidity: "65%",
};
return {
content: [
{
type: "text",
text: JSON.stringify(weather, null, 2),
},
],
};
}
throw new Error(`未知工具: ${request.params.name}`);
});
// 启动服务器
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("天气服务器已启动");
}
main().catch(console.error);示例12:Python版本的自定义服务器
import asyncio
import json
from mcp.server import Server, NotificationOptions
from mcp.server.models import InitializationOptions
import mcp.server.stdio
import mcp.types as types
# 创建服务器实例
server = Server("weather-server")
@server.list_tools()
async def handle_list_tools() -> list[types.Tool]:
"""列出可用工具"""
return [
types.Tool(
name="get_weather",
description="获取指定城市的天气信息",
inputSchema={
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称",
},
},
"required": ["city"],
},
)
]
@server.call_tool()
async def handle_call_tool(
name: str, arguments: dict | None
) -> list[types.TextContent]:
"""处理工具调用"""
if name == "get_weather":
city = arguments.get("city")
# 模拟天气数据
weather = {
"city": city,
"temperature": "22°C",
"condition": "晴朗",
"humidity": "65%",
}
return [types.TextContent(type="text", text=json.dumps(weather, indent=2))]
raise ValueError(f"未知工具: {name}")
async def main():
async with mcp.server.stdio.stdio_server() as (read_stream, write_stream):
await server.run(
read_stream,
write_stream,
InitializationOptions(
server_name="weather-server",
server_version="1.0.0",
capabilities=server.get_capabilities(
notification_options=NotificationOptions(),
experimental_capabilities={},
),
),
)
if __name__ == "__main__":
asyncio.run(main())六、常见问题
问题1:如何找到特定功能的服务器
浏览servers仓库的README文件,所有服务器按类别组织。你也可以搜索issue和discussion,查看社区推荐。
问题2:服务器无法连接到MCP客户端
检查以下几点:
- 确认服务器命令和参数正确
- 检查环境变量是否设置
- 查看客户端日志获取详细错误信息
- 尝试手动运行服务器命令,确认其可以正常启动
问题3:如何配置多个服务器
在MCP客户端的配置文件中,可以添加多个服务器配置。每个服务器使用不同的名称,互不干扰。
问题4:服务器性能如何
MCP服务器的性能取决于具体实现。官方参考实现经过优化,性能良好。对于高频调用场景,可以考虑使用连接池、缓存等优化手段。
问题5:如何调试服务器
可以使用以下方法调试:
- 查看服务器日志(stderr输出)
- 使用MCP Inspector工具:
npx @modelcontextprotocol/inspector - 手动发送MCP请求进行测试
问题6:如何为MCP生态做贡献
你可以:
- 使用现有服务器,报告bug
- 改进文档
- 创建新的服务器并提交PR
- 参与GitHub Discussions讨论
问题7:服务器支持哪些认证方式
不同服务器支持不同的认证方式,通常包括:
- API密钥(通过环境变量)
- OAuth2
- 个人访问令牌
- 本地凭证文件
问题8:如何确保服务器安全
安全建议:
- 只授予AI必要的最小权限
- 使用专用账户运行服务器
- 定期更新服务器版本
- 审查服务器代码(尤其是社区贡献的服务器)
问题9:MCP服务器与传统的API有什么区别
传统API需要开发者编写代码调用;MCP服务器让AI能够通过自然语言自动调用工具,实现智能化的任务执行。
问题10:如何测试自己开发的MCP服务器
使用MCP Inspector工具可以方便地测试:
npx @modelcontextprotocol/inspector node your-server.js
七、总结
servers项目是MCP生态系统的核心,它汇集了丰富的官方参考实现和社区贡献,为AI应用提供了连接现实世界的能力。通过这个项目,开发者可以:
- 快速上手MCP:通过研究参考实现,理解MCP协议的设计理念和最佳实践。
- 构建强大AI应用:直接使用现成的服务器,为AI助手添加各种工具能力,从文件操作到数据库查询,从GitHub管理到云服务集成。
- 参与生态建设:贡献自己的服务器,丰富MCP生态,让更多开发者受益。
随着MCP协议的发展和AI技术的进步,servers项目将继续增长,涵盖更多的工具和服务。未来,我们可以期待:
- 更多官方参考实现,覆盖更广泛的应用场景
- 更完善的文档和教程,降低学习门槛
- 更强大的工具能力,如实时协作、多模态处理
- 更活跃的社区生态,涌现更多创新的服务器
无论你是AI应用开发者、工具链维护者,还是对AI技术感兴趣的开发者,servers项目都值得深入探索。它代表了AI与工具集成的未来方向,是构建下一代AI应用的重要基础设施。现在就开始探索servers仓库,让你的AI助手获得连接现实世界的能力吧!
TypeScript/JavaScript服务器和Python服务器都有,可以根据自己的技术栈选择。官方维护保证了跨平台兼容性。
The error messages from these servers are very informative. When something goes wrong, you know exactly what happened and how to fix it.
最让我惊喜的是playwright服务器,AI能直接操控浏览器。让AI自动填写表单、抓取数据、执行测试,省了写脚本的功夫。
I've built a research assistant using brave-search and sqlite servers. It searches the web for papers, extracts key info, and stores them in a database for later review.
在CI/CD中集成这些服务器,可以让AI自动执行部署后的健康检查。检查日志、验证数据库、发送报告,一条龙服务。