servers - MCP官方服务器参考实现库,用于构建AI工具生态系统

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
Stars82376
Forks10116
支持平台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 Platform
  • azure: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"]
    }
  }
}

方法二:从源码运行

  1. 克隆仓库
git clone https://github.com/modelcontextprotocol/servers.git
cd servers
  1. 安装依赖

对于TypeScript/JavaScript服务器:

npm install
npm run build

对于Python服务器:

pip install -r requirements.txt
  1. 运行特定服务器
# 运行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会:

  1. 使用github服务器获取PR的代码变更
  2. 分析代码质量问题
  3. 如果发现问题,使用github服务器创建issue

示例8:文档生成器

结合filesystem和sqlite服务器,AI可以生成数据库文档。

用户输入

分析这个SQLite数据库,生成一份包含所有表和字段说明的Markdown文档

AI会:

  1. 使用sqlite服务器查询所有表结构
  2. 分析字段类型和关系
  3. 使用filesystem服务器生成Markdown文档

示例9:智能搜索系统

结合brave-search和sqlite服务器,AI可以实现搜索和存储。

用户输入

搜索关于MCP的文章,把结果保存到数据库的search_results表中

AI会:

  1. 使用brave-search服务器搜索关键词
  2. 解析搜索结果
  3. 使用sqlite服务器将结果插入数据库

示例10:监控和告警系统

结合sqlite和slack服务器,AI可以实现监控告警。

用户输入

每隔5分钟检查一下数据库中的errors表,如果有新的错误,通过Slack发送告警

AI会:

  1. 定期查询数据库
  2. 检测新错误
  3. 使用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助手获得连接现实世界的能力吧!

已有 361 条评论

    1. 徐浩宇 徐浩宇

      TypeScript/JavaScript服务器和Python服务器都有,可以根据自己的技术栈选择。官方维护保证了跨平台兼容性。

    2. MariaGarcia MariaGarcia

      The error messages from these servers are very informative. When something goes wrong, you know exactly what happened and how to fix it.

    3. 杨雨桐 杨雨桐

      最让我惊喜的是playwright服务器,AI能直接操控浏览器。让AI自动填写表单、抓取数据、执行测试,省了写脚本的功夫。

    4. PaulHarris PaulHarris

      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.

    5. 孙逸飞 孙逸飞

      在CI/CD中集成这些服务器,可以让AI自动执行部署后的健康检查。检查日志、验证数据库、发送报告,一条龙服务。