MCP 完全指南:从「AI 对话」到「AI 操控万物」

6 阅读15分钟

这是一篇关于 punkpeye/awesome-mcp-servers(85.2k ⭐)的深度导读博客,面向完全零基础的入门者,也面向想系统构建 MCP 生产应用的工程师。全文由浅入深,配有架构图和流程图,请按需跳读。


一、先聊聊:AI 的"手脚"问题

你有没有遇到过这样的场景——

你问 ChatGPT:"帮我查一下我的数据库里用户表有多少人。" 它答:"对不起,我无法访问你的数据库。"

你问 Claude:"帮我把这个 GitHub Issue 自动关闭。" 它答:"我没有权限操作 GitHub。"

这就是当前 AI 最大的瓶颈之一:大语言模型只有"大脑",没有"手脚"。它能理解你说的话,能思考,能输出文字,但它被困在一个信息孤岛里,什么外部事情都做不了。

MCP(Model Context Protocol)就是为了解决这个问题而生的。


二、MCP 是什么?用一个比喻说清楚

2.1 USB 接口类比

┌─────────────────────────────────────────────────────────────────┐
│                      没有 MCP 的世界                              │
│                                                                  │
│   AI 模型 ──── 只能说话 ────▶ 用户                               │
│                                                                  │
│   想连数据库?重新写插件   想用 GitHub?再写一个   想搜网络?又写一个  │
│   每个 AI 厂商自己搞一套,互不兼容 😭                              │
└─────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────┐
│                       有了 MCP 的世界                             │
│                                                                  │
│              ┌──── MCP Server: 数据库                            │
│   AI 模型 ───┼──── MCP Server: GitHub         任何 AI 客户端      │
│   (Claude/   ├──── MCP Server: 文件系统   ◀── 都能用同一套服务器  │
│   GPT/Gemini)└──── MCP Server: 浏览器                            │
│                                                                  │
│         ← 统一协议,即插即用,就像 USB 接口 🔌 →                   │
└─────────────────────────────────────────────────────────────────┘

MCP 就像是给 AI 定义了一个"USB 标准"——只要符合这个标准,任何 AI 客户端都能接上任何 MCP 服务器,立刻获得对应能力。

2.2 官方定义(一句话版本)

MCP(Model Context Protocol)是 Anthropic 推出的一个开放协议,让 AI 模型能够通过标准化的服务器实现,安全地与本地资源(文件、数据库、应用程序)和远程资源(API、云服务)进行交互。


三、MCP 的核心架构(最重要的一张图)

理解这张图,你就理解了 80% 的 MCP:

╔══════════════════════════════════════════════════════════════════╗
║                       MCP 系统全景图                              ║
╠══════════════════════════════════════════════════════════════════╣
║                                                                  ║
║  ┌─────────────────┐         ┌──────────────────────────────┐   ║
║  │   用 户 (你)      │         │         MCP Host             │   ║
║  │                 │─────── ▶│  (Claude Desktop / Cursor /  │   ║
║  │  "帮我查一下      │  自然语言│   Windsurf / Zed / 你的 App) │   ║
║  │  数据库里有多少  │         │                              │   ║
║  │  活跃用户?"     │◀ ─ ─ ─ │  内置 MCP Client (协议层)    │   ║
║  └─────────────────┘   回答  └────────────┬─────────────────┘   ║
║                                           │                      ║
║                                    MCP 协议 (JSON-RPC 2.0)        ║
║                                           │                      ║
║                     ┌─────────────────────┼──────────────────┐  ║
║                     │                     │                  │  ║
║              ┌──────▼──────┐    ┌─────────▼─────┐   ┌───────▼──┐║
║              │ MCP Server  │    │  MCP Server   │   │MCP Server│║
║              │  数据库连接  │    │   GitHub API  │   │ 文件系统  │║
║              └──────┬──────┘    └────────┬──────┘   └───────┬──┘║
║                     │                    │                  │   ║
║              ┌──────▼──────┐    ┌────────▼──────┐   ┌───────▼──┐║
║              │ PostgreSQL  │    │  GitHub.com   │   │  本地磁盘 │║
║              │  MySQL 等   │    │  (远程 API)  │   │  文件夹   │║
║              └─────────────┘    └───────────────┘   └──────────┘║
║                                                                  ║
║              ▲ 本地服务 (Local)          ▲ 云服务 (Cloud)         ║
╚══════════════════════════════════════════════════════════════════╝

三个核心角色:

角色是什么举例
MCP Host运行 AI 模型的应用程序Claude Desktop、Cursor、你自己的 App
MCP ClientHost 内部实现的协议客户端负责和 Server 通信,开发者一般不需要自己写
MCP Server提供特定能力的小程序数据库服务器、GitHub 服务器、文件系统服务器

四、一次对话的完整流程

下面这张流程图,展示了你说一句话背后发生了什么:

用户:"把 /data/sales.csv 里上个月销售额最高的 3 个产品告诉我"
  │
  ▼
┌─────────────────────────────────────────────────────┐
│ Step 1: Host 收到请求,发给 LLM                       │
│ Claude 分析:需要读取文件系统 → 调用 MCP File Server   │
└────────────────────┬────────────────────────────────┘
                     │  调用 Tool: read_file("/data/sales.csv")
                     ▼
┌─────────────────────────────────────────────────────┐
│ Step 2: MCP File Server 执行                         │
│ → 检查权限(只允许读 /data 目录)                       │
│ → 读取 CSV 文件内容                                   │
│ → 返回文件内容给 LLM                                  │
└────────────────────┬────────────────────────────────┘
                     │  文件内容(结构化数据)
                     ▼
┌─────────────────────────────────────────────────────┐
│ Step 3: LLM 处理数据                                 │
│ → 分析 CSV 数据                                      │
│ → 计算上个月各产品销售额                               │
│ → 排序取 Top 3                                       │
└────────────────────┬────────────────────────────────┘
                     │  生成自然语言回答
                     ▼
用户收到:"上个月销售额最高的3个产品是:
         1. 产品A - 128,000元
         2. 产品B - 96,500元  
         3. 产品C - 87,200元"

整个过程中,用户全程用自然语言,完全不需要知道底层是怎么读文件的。


五、awesome-mcp-servers 仓库解析

现在我们把镜头对准这个仓库本身。

punkpeye/awesome-mcp-servers 是目前 GitHub 上最权威的 MCP 服务器资源聚合列表,85.2k Stars,1,530+ 贡献者,收录了来自全球开发者的 数千个 MCP Server 实现,覆盖 40+ 个应用领域。

5.1 仓库文件结构

awesome-mcp-servers/
├── README.md              ← 英文主列表(核心内容)
├── README-zh.md           ← 简体中文版
├── README-zh_TW.md        ← 繁体中文版
├── README-ja.md           ← 日文版
├── README-ko.md           ← 韩文版
├── README-pt_BR.md        ← 葡萄牙语版
├── README-th.md           ← 泰文版
├── README-fa-ir.md        ← 波斯语版
├── CONTRIBUTING.md        ← 如何贡献
├── LICENSE                ← MIT 许可证
└── .github/
    └── workflows/
        └── check-glama.yml  ← 自动化校验脚本

5.2 如何读懂每一条记录

每个服务器条目都有一套 emoji 标注体系,是你读这份列表的"密码本":

┌──────────────────────────────────────────────────────────────────┐
│   条目示例:                                                       │
│                                                                  │
│   modelcontextprotocol/servers 🎖️ 📇 🏠 ☁️ 🍎 🪟 🐧              │
│   └──────────────────┘ └─┘ └─┘ └──┘ └──────────────┘            │
│        仓库链接         官方  TS 本地 云端  支持的操作系统           │
│                                                                  │
├──────────────────────────────────────────────────────────────────┤
│  🎖️  官方实现(Official)— 由工具原厂维护,最值得信任               │
│                                                                  │
│  编程语言:                                                        │
│  🐍 Python    📇 TypeScript/JS    🏎️ Go                          │
│  🦀 Rust      #️⃣ C#              ☕ Java    🌊 C/C++   💎 Ruby    │
│                                                                  │
│  部署方式:                                                        │
│  🏠 Local(本地运行,与本机软件通信)                               │
│  ☁️ Cloud(云端服务,调用远程 API)                                 │
│                                                                  │
│  操作系统:                                                        │
│  🍎 macOS    🪟 Windows    🐧 Linux                               │
└──────────────────────────────────────────────────────────────────┘

本地 vs 云端,怎么区分?

🏠 本地服务示例:控制 Chrome 浏览器、读写本机文件、操作本地数据库
   → MCP Server 运行在你自己的电脑上

☁️ 云端服务示例:查天气、搜 GitHub、发 Slack 消息
   → MCP Server 调用外部 API(你的电脑不需要装对应软件)

六、40+ 个分类全景图

╔════════════════════════════════════════════════════════════════════╗
║              MCP Server 能力版图(awesome-mcp-servers)             ║
╠════════════════════╦═══════════════════╦═══════════════════════════╣
║    🛠️ 开发者工具     ║    🌐 数据与连接    ║     🤖 AI 增强能力         ║
╠════════════════════╬═══════════════════╬═══════════════════════════╣
║ 👨‍💻 代码执行         ║ 🗄️ 数据库连接       ║ 🧠 知识&记忆               ║
║ 🤖 编程 Agent       ║ 📂 文件系统         ║ 🔎 搜索&数据提取            ║
║ 🖥️ 命令行控制        ║ ☁️ 云平台           ║ 🔎 端到端RAG平台            ║
║ 🔄 版本控制(Git)    ║ 📊 数据平台         ║ 🔗 聚合器(多服务整合)      ║
║ 💻 开发者工具        ║ 📊 数据可视化        ║                           ║
╠════════════════════╬═══════════════════╬═══════════════════════════╣
║    🌍 互联网&通信    ║   🏢 行业垂直领域    ║    🖥️ 系统控制              ║
╠════════════════════╬═══════════════════╬═══════════════════════════╣
║ 📂 浏览器自动化      ║ 🧬 生物医学         ║ 🖥️ OS 自动化               ║
║ 💬 通信平台          ║ ⚖️ 法律             ║ 🏠 智能家居                 ║
║ 🌐 社交媒体          ║ 💰 金融科技         ║ 📟 嵌入式系统               ║
║ 🌎 翻译服务          ║ 🎓 教育             ║                           ║
║ 🔊 文字转语音        ║ 🛒 电商             ║                           ║
╠════════════════════╬═══════════════════╬═══════════════════════════╣
║   📊 业务管理        ║   🎯 专业服务        ║    🎨 创意&内容             ║
╠════════════════════╬═══════════════════╬═══════════════════════════╣
║ 📊 监控告警          ║ 🗺️ 地理位置          ║ 🎮 游戏                    ║
║ 📋 产品管理          ║ 🎯 营销工具          ║ 🎨 艺术&文化               ║
║ 🔬 研究工具          ║ 👤 客户数据平台      ║ 🎥 多媒体处理               ║
║ 🏠 房地产            ║ 🚆 旅行交通          ║ 📐 架构&设计               ║
╚════════════════════╩═══════════════════╩═══════════════════════════╝

七、实战示例:从简单到复杂

🟢 Level 1 — 入门:让 AI 读你的本地文件

场景:你有一堆 Markdown 笔记,想让 AI 帮你整理成周报。

用到的服务器modelcontextprotocol/servers(官方文件系统服务器)

配置(Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/yourname/notes"
      ]
    }
  }
}

然后直接问 Claude:

"帮我读取 /Users/yourname/notes 目录下本周的所有 .md 文件,整理成一份周报,包括工作进展、待办事项和重点决策。"

它能做到什么:

你 ──▶ Claude ──▶ MCP File Server
                     │
                     ├── list_directory("/Users/yourname/notes")
                     ├── read_file("2026-04-14-monday.md")
                     ├── read_file("2026-04-15-tuesday.md")
                     └── ...
                     
Claude 收到所有文件内容 ──▶ 生成格式化周报 ──▶ 你

为什么这是入门级? 只需要一个 MCP Server,只读不写,风险极低,5 分钟能跑起来。


🟡 Level 2 — 进阶:AI 操作数据库

场景:你是一个数据分析师,想用自然语言查 PostgreSQL,不用写 SQL。

用到的服务器alexanderzuev/supabase-mcp-server 或官方 PostgreSQL Server

配置:

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://user:password@localhost/mydb"
      ]
    }
  }
}

工作流程图:

你:"找出最近 30 天注册但从未下单的用户,按注册时间倒序,给我前 20 条"
  │
  ▼
Claude 思考:需要查询 users 和 orders 表
  │
  ├─▶ [调用 MCP] list_tables() 
  │   ← 返回:users, orders, products, ...
  │
  ├─▶ [调用 MCP] describe_table("users")
  │   ← 返回:id, email, created_at, ...
  │
  ├─▶ [调用 MCP] query(
  │     "SELECT u.* FROM users u 
  │      LEFT JOIN orders o ON u.id = o.user_id
  │      WHERE u.created_at > NOW() - INTERVAL '30 days'
  │        AND o.id IS NULL
  │      ORDER BY u.created_at DESC LIMIT 20"
  │   )
  │   ← 返回:20 条用户数据
  │
  ▼
Claude 格式化成表格呈现给你(你全程没写一行 SQL)

MCP 数据库服务器的安全机制:

┌──────────────────────────────────────────┐
│           数据库 MCP 安全层               │
├──────────────────────────────────────────┤
│ ✅ 允许 SELECT 查询                       │
│ ✅ 允许 schema 探索(看表结构)             │
│ ❌ 默认禁止 DROP TABLE                    │
│ ❌ 默认禁止 DELETE(无 WHERE)             │
│ ⚙️  权限由配置控制,最小化原则              │
└──────────────────────────────────────────┘

🟠 Level 3 — 高级:AI + 浏览器自动化

场景:让 AI 自动抓取竞品价格,写入本地表格,发送 Slack 通知。

用到的服务器组合:

┌─────────────────────────────────────────────────────┐
│              多 Server 协作流程                       │
│                                                     │
│  Claude                                             │
│    │                                                │
│    ├──▶ Browser MCP (Puppeteer/Playwright)          │
│    │    └── 打开竞品网页,抓取价格数据                │
│    │                                                │
│    ├──▶ Filesystem MCP                              │
│    │    └── 将价格数据写入 prices.csv                │
│    │                                                │
│    └──▶ Slack MCP                                   │
│         └── 发送"价格监控报告"到 #pricing 频道        │
└─────────────────────────────────────────────────────┘

配置(三个 Server 同时启用):

{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-puppeteer"]
    },
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/data/pricing"]
    },
    "slack": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-slack"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-your-token",
        "SLACK_TEAM_ID": "T0XXXXXXX"
      }
    }
  }
}

你只需要说:

"去竞品 A 和竞品 B 的网站,获取他们最新的产品定价,和我们的价格对比,如果我们比竞品贵超过 10%,把这些产品标红,保存到 prices.csv,然后发到 Slack 的 #pricing 频道。"


🔴 Level 4 — 专家:构建有记忆的 AI Agent

场景:构建一个跨会话有持久记忆的 AI 编程助手,它记得你之前的决策和代码偏好。

核心问题:默认情况下 LLM 每次对话都是"失忆"的,无法记住上次讨论的内容。

解决方案 — 知识图谱记忆架构:

╔════════════════════════════════════════════════════════════╗
║              持久记忆 AI Agent 架构                          ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  会话 1(上周):                                            ║
║  你:"我们决定用 PostgreSQL 而不是 MongoDB,因为需要事务"     ║
║  Agent 通过 Memory MCP 保存:                               ║
║  ┌─ 知识图谱节点 ──────────────────────────────────────┐   ║
║  │ [决策] 数据库选型 = PostgreSQL                       │   ║
║  │ [原因] 需要 ACID 事务支持                            │   ║
║  │ [时间] 2026-04-14                                   │   ║
║  └─────────────────────────────────────────────────────┘   ║
║                                                            ║
║  会话 2(本周):                                            ║
║  你:"帮我设计用户表结构"                                    ║
║  Agent 查询记忆 → 找到"使用 PostgreSQL"的记录               ║
║  → 自动生成适合 PostgreSQL 的建表 SQL                       ║
║  → 无需你再次解释背景 ✅                                    ║
╚════════════════════════════════════════════════════════════╝

使用 agentic-mcp-tools/memora 的架构:

用户输入
  │
  ├─▶ Memory MCP: search_memory("用户表设计")
  │   ← 召回相关历史决策和偏好
  │
  ├─▶ (结合记忆内容)LLM 生成建议
  │
  ├─▶ Filesystem MCP: write_file("schema.sql", ...)
  │   ← 写入生成的 SQL
  │
  └─▶ Memory MCP: save_memory({
          "entity": "users_table",
          "decision": "使用 UUID 作为主键",
          "timestamp": "2026-04-21"
      })
      ← 保存本次决策,供未来召回

🟣 Level 5 — 架构级:MCP 聚合器与多 Agent 协作

场景:你想搭一个统一的 AI 工作台,整合 GitHub、Jira、Slack、数据库。

使用 Aggregator 模式:

╔══════════════════════════════════════════════════════════════╗
║                   MCP 聚合器架构                              ║
╠══════════════════════════════════════════════════════════════╣
║                                                              ║
║   用户 / AI Host                                             ║
║       │                                                      ║
║       ▼                                                      ║
║  ┌────────────────────┐                                      ║
║  │  1mcp/agent        │  ← 单一入口,统一管理多个 MCP Server  ║
║  │  (MCP 聚合器)       │                                      ║
║  └────────┬───────────┘                                      ║
║           │                                                  ║
║    ┌──────┼──────┬──────┬──────┐                             ║
║    ▼      ▼      ▼      ▼      ▼                             ║
║  GitHub  Jira  Slack  数据库  文件系统                        ║
║  Server Server Server Server  Server                         ║
║                                                              ║
║  好处:                                                       ║
║  ✅ 统一配置管理                                               ║
║  ✅ 统一权限控制                                               ║
║  ✅ 跨工具自动化(GitHub Issue → Jira → Slack 通知)           ║
╚══════════════════════════════════════════════════════════════╝

一个真实的企业级工作流例子:

你:"把 GitHub 上所有超过 7 天未处理的 bug 类 Issue,
    创建对应的 Jira 工单,分配给对应负责人,
    并在 Slack #engineering 频道发周报汇总"

Claude + MCP 聚合器执行:
  
  Step 1: GitHub MCP → 获取所有 open issues, label=bug, age>7d
  Step 2: 分析每个 issue,提取关键信息和负责人
  Step 3: Jira MCP → 批量创建工单,关联 GitHub 链接
  Step 4: Slack MCP → 生成并发送周报(含统计数据)
  
整个过程全自动,你只说了一句话。

八、重点服务器深度介绍

8.1 数据库类(最刚需)

数据库是 MCP 最高频的使用场景之一。这个分类支持的数据库种类令人惊叹:

┌──────────────────────────────────────────────────────────┐
│              MCP 支持的数据库生态                           │
├──────────────┬───────────────────────────────────────────┤
│  关系型数据库  │ PostgreSQL, MySQL, SQLite, CockroachDB,   │
│              │ TiDB, Supabase                            │
├──────────────┼───────────────────────────────────────────┤
│  NoSQL       │ MongoDB, Redis, CouchDB                   │
├──────────────┼───────────────────────────────────────────┤
│  多模型数据库  │ ArcadeDB (图+文档+时序+向量)               │
├──────────────┼───────────────────────────────────────────┤
│  云数据服务   │ Aiven (PG+Kafka+ClickHouse+OpenSearch),   │
│              │ Alibaba Tablestore, BigQuery, Snowflake   │
├──────────────┼───────────────────────────────────────────┤
│  低代码平台   │ Baserow, NocoDB                           │
└──────────────┴───────────────────────────────────────────┘

亮点推荐:

  • centralmind/gateway:自动根据数据库 schema 生成 API,支持 PostgreSQL/MySQL/ClickHouse/Snowflake/BigQuery/Supabase,直接变成 MCP Server。

  • andyWang1688/sql-query-mcp:跨多数据库的通用 MCP,支持 schema discovery、read-only 模式、query plan inspection。

8.2 知识与记忆类(解决 AI 失忆问题)

这是最具创新性的分类之一,核心目标是让 AI 有"长期记忆":

传统 AI 对话(无记忆):
  会话1: "我们用 PostgreSQL"
  会话2: AI 忘了,又问"你用什么数据库?" ❌

有 Memory MCP 的 AI:
  会话1: 存入知识图谱 → {决策: 用PostgreSQL}
  会话2: AI 自动召回 → 直接基于上下文工作 ✅

技术路线对比:

服务器存储方式检索方式适用场景
agentic-mcp-tools/memora知识图谱语义搜索 + 向量复杂决策追踪
timmx7/acheron-mcp-serverSQLite全文搜索跨工具个人偏好
aitytech/agentkits-memoryFTS5 + 向量嵌入混合检索编程助手记忆
AliceLJY/recallnestLanceDB + SQLite向量 + BM25高性能多 Agent

8.3 浏览器自动化类(AI 上网)

┌────────────────────────────────────────────────┐
│  AI + 浏览器 MCP 能做什么?                       │
│                                                │
│  🔍 搜索任意网站                                 │
│  📄 提取网页正文(去广告、去导航栏)               │
│  📸 网页截图                                    │
│  🖱️ 模拟点击、填表、提交                          │
│  🔗 批量爬取、链接提取                            │
│  📊 结构化数据抓取(CSS Selector / XPath)        │
└────────────────────────────────────────────────┘

明星项目:

  • modelcontextprotocol/servers 中的 Puppeteer Server:官方实现,最稳定
  • achiya-automation/safari-mcp:原生 Safari 自动化,针对 Apple Silicon 优化,CPU 消耗减少 60%
  • aparajithn/agent-scraper-mcp:6 合 1 工具(内容提取、结构化抓取、截图、链接、元数据、Google 搜索)

8.4 编程 Agent 类(AI 自主写代码)

这是最"黑科技"的分类:

┌────────────────────────────────────────────────────┐
│  Coding Agent MCP = AI 自主完成整个编程任务            │
│                                                    │
│  输入:                                             │
│  "帮我实现一个用户认证模块,                          │
│   包括注册、登录、JWT token 和密码重置"               │
│                                                    │
│  AI 自主完成:                                      │
│  1. 读取现有代码结构(File Server)                  │
│  2. 理解数据库 schema(DB Server)                  │
│  3. 生成代码文件(File Server write)               │
│  4. 执行测试(Code Execution Server)              │
│  5. 修复 bug(迭代循环)                            │
│  6. 提交 PR(GitHub Server)                       │
│                                                    │
│  全程无需人工干预 🤖                                 │
└────────────────────────────────────────────────────┘

推荐:

  • askbudi/roundtable:零配置统一多个 AI 编程助手(Claude Code、Cursor、Codex),自动发现,标准化接口。
  • spyrae/claude-concilium:多 Agent 并行代码审查,Claude + Codex + Gemini 三 AI 协同,有 fallback 链。

8.5 安全类(给 AI 加锁)

这是最容易被忽视但非常重要的分类:

MCP 安全的两个层面:

┌──────────────────────┐   ┌──────────────────────┐
│   防御外部攻击         │   │  控制 AI 行为边界      │
├──────────────────────┤   ├──────────────────────┤
│ • 密码泄露检查         │   │ • Prompt 注入检测      │
│   (HIBP 9亿+记录)     │   │ • 幻觉检测             │
│ • IP/域名信誉扫描      │   │ • 策略执行             │
│ • 供应链安全扫描        │   │ • 不可篡改审计日志      │
│ • 413项安全合规检查     │   │ • 量子安全签名(ML-DSA) │
└──────────────────────┘   └──────────────────────┘
   alberthild/shieldapi        jagmarques/asqav-mcp

九、选择 MCP Server 的决策树

我需要什么能力?
    │
    ├──▶ 读写文件 ──────────────▶ modelcontextprotocol/servers (官方)
    │
    ├──▶ 操作数据库
    │       ├── PostgreSQL ──▶ supabase-mcp-server / official PG
    │       ├── MySQL ──────▶ mcp-server-mysql
    │       ├── SQLite ──────▶ modelcontextprotocol/servers (官方)
    │       └── 多数据库 ───▶ centralmind/gateway (自动生成API)
    │
    ├──▶ 上网/抓取
    │       ├── 简单网页读取 ──▶ fetch (官方)
    │       ├── 浏览器自动化 ──▶ Puppeteer Server (官方)
    │       └── 企业级爬虫 ──▶ aparajithn/agent-scraper-mcp
    │
    ├──▶ 代码开发
    │       ├── 执行代码 ────▶ code-execution (官方)
            ├── 编程 Agent ──▶ askbudi/roundtable / spyrae/claude-concilium
            │       └── GitHub 操作 ──▶ modelcontextprotocol/servers (官方 Git)
            │
            ├──▶ 通信&协作
            │       ├── Slack ────▶ modelcontextprotocol/servers (官方 Slack)
            │       ├── 邮件 ────▶ agentmail-toolkit/mcp / clawaimail/mcp
            │       ├── Telegram ─▶ chigwell/telegram-mcp
            │       └── iMessage ─▶ carterlasalle/mac_messages_mcp 🍎
            │
            ├──▶ 监控&运维
            │       ├── Sentry ───▶ getsentry/sentry-mcp (官方)
            │       ├── Grafana ──▶ alimuratkuslu/byok-observability-mcp
            │       └── Dynatrace ▶ dynatrace-oss/dynatrace-mcp (官方)
            │
            ├──▶ 智能家居
            │       ├── WeMo 设备 ─▶ apiarya/wemo-mcp-server
            │       ├── 智能电视 ──▶ Hybirdss/smartest-tv
            │       └── 路由器 ───▶ kambriso/fritzbox-mcp-server
            │
            └──▶ 需要跨多工具
                    └── 使用 Aggregator ──▶ 1mcp/agent / tadas-github/a2asearch-mcp

十、如何自己开发一个 MCP Server?

这部分面向有编程基础的读者,带你从零理解一个 MCP Server 是怎么写出来的。

10.1 MCP Server 的三个核心原语

┌──────────────────────────────────────────────────────────────────┐
│              MCP Server 暴露给 AI 的三种能力                       │
├──────────────┬───────────────────────────────────────────────────┤
│   Tools      │ AI 可以主动调用的函数                               │
│ (工具)      │ 例:query_database(sql), read_file(path)           │
│              │ → AI 决定何时调用、传什么参数                        │
├──────────────┼───────────────────────────────────────────────────┤
│  Resources   │ AI 可以读取的数据/上下文                            │
│ (资源)      │ 例:file://project/README.md                       │
│              │ → 类似"给 AI 看的文档"                              │
├──────────────┼───────────────────────────────────────────────────┤
│   Prompts    │ 预定义的提示词模板                                   │
│ (提示)      │ 例:/summarize, /code-review                       │
│              │ → 用户可以直接调用的快捷指令                          │
└──────────────┴───────────────────────────────────────────────────┘

10.2 最简单的 MCP Server(TypeScript 版)

// 一个最小化的 MCP Server:能查天气
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

// 1. 创建 Server 实例
const server = new Server(
  { name: "weather-server", version: "1.0.0" },
  { capabilities: { tools: {} } }
);

// 2. 声明工具列表(AI 会看到这个)
server.setRequestHandler("tools/list", async () => ({
  tools: [{
    name: "get_weather",
    description: "获取指定城市的天气信息",
    inputSchema: {
      type: "object",
      properties: {
        city: { type: "string", description: "城市名称" }
      },
      required: ["city"]
    }
  }]
}));

// 3. 实现工具逻辑(AI 调用时执行这里)
server.setRequestHandler("tools/call", async (request) => {
  if (request.params.name === "get_weather") {
    const city = request.params.arguments.city;
    // 实际项目中调用真实天气 API
    const weather = await fetchWeatherAPI(city);
    return {
      content: [{ type: "text", text: `${city}今天:${weather.temp}℃,${weather.desc}` }]
    };
  }
});

// 4. 启动 Server(通过标准输入输出和 Host 通信)
const transport = new StdioServerTransport();
await server.connect(transport);

10.3 Python 版(更简洁)

# 使用官方 Python SDK
from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp import types

app = Server("my-tool-server")

# 声明工具
@app.list_tools()
async def list_tools() -> list[types.Tool]:
    return [
        types.Tool(
            name="calculate",
            description="执行数学计算",
            inputSchema={
                "type": "object",
                "properties": {
                    "expression": {"type": "string", "description": "数学表达式,如 '2+3*4'"}
                },
                "required": ["expression"]
            }
        )
    ]

# 实现工具
@app.call_tool()
async def call_tool(name: str, arguments: dict) -> list[types.TextContent]:
    if name == "calculate":
        result = eval(arguments["expression"])  # 生产环境请用安全的计算库
        return [types.TextContent(type="text", text=f"计算结果:{result}")]

# 启动
async def main():
    async with stdio_server() as streams:
        await app.run(*streams, app.create_initialization_options())

10.4 MCP 通信协议细节

┌──────────────────────────────────────────────────────────────────┐
│              MCP 底层通信(JSON-RPC 2.0)                          │
│                                                                  │
│  ClientServer: 初始化握手                                      │
│  {                                                               │
│    "jsonrpc": "2.0",                                             │
│    "id": 1,                                                      │
│    "method": "initialize",                                       │
│    "params": {                                                   │
│      "protocolVersion": "2024-11-05",                            │
│      "capabilities": { "roots": {}, "sampling": {} },           │
│      "clientInfo": { "name": "claude-desktop", "version": "1.0"}│
│    }                                                             │
│  }                                                               │
│                                                                  │
│  ServerClient: 能力声明                                        │
│  {                                                               │
│    "jsonrpc": "2.0",                                             │
│    "id": 1,                                                      │
│    "result": {                                                   │
│      "protocolVersion": "2024-11-05",                            │
│      "capabilities": { "tools": {}, "resources": {} },          │
│      "serverInfo": { "name": "weather-server", "version": "1.0"}│
│    }                                                             │
│  }                                                               │
│                                                                  │
│  ─────────────────── 正式通信开始 ───────────────────            │
│                                                                  │
│  ClientServer: 调用工具                                        │
│  {                                                               │
│    "method": "tools/call",                                       │
│    "params": { "name": "get_weather", "arguments": {"city":"北京"}}│
│  }                                                               │
│                                                                  │
│  ServerClient: 返回结果                                        │
│  { "result": { "content": [{"type":"text","text":"北京:晴,25℃"}]}}│
└──────────────────────────────────────────────────────────────────┘

10.5 传输方式对比

┌───────────────┬──────────────────────┬────────────────────────────┐
│  传输方式      │  适用场景             │  通信方式                   │
├───────────────┼──────────────────────┼────────────────────────────┤
│ Stdio         │ 本地程序(最常用)    │  标准输入/输出流             │
│               │ Claude Desktop 默认  │  Host 启动子进程通信         │
├───────────────┼──────────────────────┼────────────────────────────┤
│ SSE           │ 远程/云端服务        │  HTTP + Server-Sent Events  │
│ (HTTP)        │ 多客户端共用一个 Server│ 长连接,支持流式推送         │
├───────────────┼──────────────────────┼────────────────────────────┤
│ WebSocket     │ 低延迟双向通信        │  全双工 WebSocket 连接       │
│               │ 实时交互场景         │                             │
└───────────────┴──────────────────────┴────────────────────────────┘

十一、真实场景的完整企业案例

案例:AI 驱动的 DevOps 值班助手

背景:一个中型公司,凌晨 3 点系统报警,值班工程师睡眼惺忪,想快速定位问题。

搭建的 MCP Server 组合:

┌─────────────────────────────────────────────────────────────────┐
│                 DevOps AI 助手架构                                │
│                                                                  │
│  工程师(手机/PC)                                                │
│       │                                                          │
│       ▼                                                          │
│  Claude Desktop / Cursor                                         │
│       │                                                          │
│       ├──▶ 📊 Sentry MCP ──────▶ 读取错误报告、Stack Trace       │
│       │    (getsentry/sentry-mcp)                                │
│       │                                                          │
│       ├──▶ 📊 Monitoring MCP ──▶ Grafana/Prometheus 指标         │
│       │    (alimuratkuslu/byok-observability-mcp)                │
│       │                                                          │
│       ├──▶ 🗄️ Database MCP ───▶ 查询慢 SQL、锁等待               │
│       │    (官方 postgres server)                                 │
│       │                                                          │
│       ├──▶ 🖥️ Command Line MCP ▶ 查看系统日志、进程状态           │
│       │    (官方 bash server)                                     │
│       │                                                          │
│       └──▶ 💬 Slack MCP ──────▶ 发送事故报告到 #oncall 频道      │
│            (官方 slack server)                                    │
└─────────────────────────────────────────────────────────────────┘

对话实录(真实工作流):

工程师(凌晨3:02):
"Sentry 刚报了一个 5xx 错误,帮我查一下是什么问题,顺便看看数据库有没有异常"

Claude(调用 Sentry MCP):
→ 获取最新错误:TypeError: Cannot read property 'user_id' of null
→ 出现在 /api/orders/checkout 接口
→ 过去1小时出现 847 次,影响 312 个用户

Claude(调用 Database MCP):
→ 查询过去30分钟慢查询:发现 orders 表有一个锁等待
→ SELECT * FROM orders WHERE user_id = ? 有 12 个请求等待超过 5s

Claude(调用 Monitoring MCP):
→ 数据库连接池使用率:94%(正常值 < 70%)
→ orders 表读写 QPS 在 02:55 突然上升 3 倍

Claude 综合分析报告:
"根本原因很可能是:02:55 有一批定时任务并发写入 orders 表,
 导致连接池耗尽,前端接口拿不到 DB 连接返回 null,
 才触发了 user_id 的 null 引用错误。
 
 建议:
 1. 立即:降低定时任务并发度(修改 cron job 配置)
 2. 短期:给 orders 表的 user_id 字段加索引
 3. 长期:考虑读写分离
 
 需要我帮你起草 Slack 事故通报吗?"

工程师:"好,发到 #oncall"

Claude(调用 Slack MCP):
→ 自动发送结构化事故通报,包含时间线、影响范围、根因分析、处置建议

没有 MCP 时:工程师要手动打开 Sentry、Grafana、数据库客户端、命令行,来回切换,凌晨 3 点脑子还不清醒,容易遗漏。

有了 MCP:一句话,AI 帮你串联所有系统,10 秒出结论。


十二、MCP 生态全景:现在到底有多少服务器?

这个仓库本身只是一个经过人工筛选的精选列表,真实的 MCP 生态更大:

┌──────────────────────────────────────────────────────────────────┐
│                    MCP 生态数量级(2026年4月)                      │
│                                                                  │
│  awesome-mcp-servers(本仓库)                                    │
│  ├── 精选条目:约 1,700+ 个 list item                             │
│  └── 涵盖分类:40+                                               │
│                                                                  │
│  glama.ai/mcp/servers(Web目录)                                  │
│  └── 收录服务器:4,800+(含未精选)                               │
│                                                                  │
│  a2asearch-mcp(搜索工具)                                        │
│  └── 可搜索:4,800+ MCP servers, AI agents, CLI tools            │
│                                                                  │
│  GitHub 全站搜索 "mcp-server"                                     │
│  └── 相关仓库:10,000+                                            │
└──────────────────────────────────────────────────────────────────┘

按语言分布(从仓库收录情况估算)

  TypeScript/JS  ████████████████████  ~45%  (最多,生态最成熟)
  Python         █████████████████     ~38%  (AI/ML 领域主力)
  Go             ████                   ~8%  (系统/云原生方向)
  Rust           ██                     ~4%  (安全/性能敏感)
  C# / Java      █                      ~3%  (企业/.NET生态)
  其他            █                      ~2%

十三、常见问题 FAQ

Q:MCP Server 安全吗?AI 会不会乱删我的文件?

┌──────────────────────────────────────────────────────────────────┐
│                     MCP 安全设计原则                               │
├──────────────────────────────────────────────────────────────────┤
│ 1. 最小权限原则                                                   │
│    配置时明确指定目录/数据库/API 范围                               │
│    例:文件系统只允许访问 /Users/me/projects,不是整个硬盘           │
│                                                                  │
│ 2. 工具由你决定                                                   │
│    你不安装危险的 MCP Server,AI 就没有危险的工具                   │
│                                                                  │
│ 3. 可审计                                                        │
│    Claude Desktop 会显示 AI 调用了哪些工具,结果是什么              │
│    你可以看到整个过程,不是黑盒                                     │
│                                                                  │
│ 4. 用户确认                                                       │
│    对于破坏性操作(删除、修改),好的 Host 会先征求你的确认           │
└──────────────────────────────────────────────────────────────────┘

Q:MCP 和 LangChain Tools 有什么区别?

┌──────────────────┬───────────────────┬──────────────────────────┐
│                  │   MCP             │   LangChain Tools        │
├──────────────────┼───────────────────┼──────────────────────────┤
│ 标准化程度        │ 开放协议,跨厂商   │ LangChain 私有抽象        │
│ 复用性           │ 写一次,所有       │ 绑定 LangChain 生态       │
│                  │ AI 客户端都能用   │                          │
│ 运行时           │ 独立进程/服务      │ 内嵌在 Python 代码里      │
│ 生态规模         │ 4,800+ 服务器     │ 有限的官方工具            │
│ 适合场景         │ 生产级、跨工具集成 │ Python 项目内部使用       │
└──────────────────┴───────────────────┴──────────────────────────┘

Q:我用 Cursor / Windsurf,不用 Claude Desktop,MCP 还能用吗?

支持 MCP 的主流客户端(截至20264月):

✅ Claude Desktop(最成熟)
✅ Cursor1.0+ 版本)
✅ Windsurf
✅ Zed Editor
✅ Cline(VS Code 插件)
✅ Continue(VS Code 插件)
✅ Glama Chat(内置 MCP + AI Gateway)
✅ 你自己基于 SDK 开发的应用

Q:本地部署和云端有什么差异?

本地 (🏠):
├── 优点:数据不出本机,隐私安全;无需 API 费用
├── 缺点:需要安装对应软件;只能单机用
└── 例子:读取本地文件、控制本机浏览器、连本地数据库

云端 (☁️):
├── 优点:无需本地安装;可多端使用;功能丰富
├── 缺点:数据经过第三方;可能有 API 费用
└── 例子:查天气、搜 GitHub、发 Slack 消息、调用 OpenAI

十四、如何为这个仓库做贡献?

这个仓库本身也是一个很好的开源实践案例,贡献流程非常清晰:

┌──────────────────────────────────────────────────────────────┐
│              贡献流程(CONTRIBUTING.md 摘要)                   │
└──────────────────────────────────────────────────────────────┘

Step 1: Fork 仓库
  → 点击右上角 Fork 按钮

Step 2: 创建分支
  git checkout -b add-my-mcp-server

Step 3: 编辑 README.md,按格式添加条目
  格式:[仓库名](链接) 🎖️ 📇 ☁️ 🍎 - 一句话描述功能
  注意:
  ├── 按字母顺序插入对应分类
  ├── 描述要简洁准确
  └── emoji 标注要正确(语言/部署/OS)

Step 4: Commit & Push
  git commit -m "Add XYZ MCP server"
  git push origin add-my-mcp-server

Step 5: 提 PR
  → 提供清晰的标题和描述
  → 自动化机器人会检查格式

  💡 特别提示:如果你是 AI Agent 提 PR,
     标题末尾加 🤖🤖🤖 可以走快速合并通道!

十五、MCP 的未来走向

从这个仓库的演进轨迹,可以看出 MCP 生态的几个明显趋势:

┌──────────────────────────────────────────────────────────────────┐
│                     MCP 生态演进趋势                               │
│                                                                  │
│  1. Agent-to-Agent 通信(新兴)                                   │
│     不只是 AI 调用工具,而是 AI Agent 直接调用其他 AI Agent        │
│     代表:Aganium/agenium(agent:// 协议),unixlamadev/aiprox     │
│                                                                  │
│  2. 付费 MCP 经济(Web3 结合)                                    │
│     按调用次数计费,通过加密货币自动结算                             │
│     代表:x402 微支付协议,$0.01 USDC/次                          │
│                                                                  │
│  3. MCP Server 市场(可发现性)                                   │
│     像 App Store 一样的 MCP 服务器市场                             │
│     代表:AgentHotspot、a2asearch-mcp(4800+可搜索)              │
│                                                                  │
│  4. 企业级安全与合规                                               │
│     AI 治理、审计日志、量子安全、多方授权                           │
│     代表:jagmarques/asqav-mcp(ML-DSA 量子签名)                  │
│                                                                  │
│  5. 边缘/嵌入式 MCP(向下延伸)                                   │
│     不只在云端和 PC,IoT 设备也成为 MCP 端点                       │
│     代表:📟 Embedded System 分类下的系列服务器                    │
└──────────────────────────────────────────────────────────────────┘

十六、快速上手清单(收藏这页)

🟢 今天就能做(零编程,5分钟)

1. 下载 Claude Desktop
   https://claude.ai/download

2. 打开配置文件(Mac)
   ~/Library/Application Support/Claude/claude_desktop_config.json

3. 粘贴这个配置(文件系统 + 网络搜索)
   {
     "mcpServers": {
       "filesystem": {
         "command": "npx",
         "args": ["-y", "@modelcontextprotocol/server-filesystem",
                  "/Users/你的用户名/Documents"]
       },
       "fetch": {
         "command": "npx",
         "args": ["-y", "@modelcontextprotocol/server-fetch"]
       }
     }
   }

4. 重启 Claude Desktop
   → 左下角出现 🔧 图标说明 MCP 连接成功

5. 试着问 Claude:
   "帮我读一下 Documents 里最近修改的文件"
   "帮我搜索一下 MCP 协议的最新进展"

🟡 本周可以做(需要少量配置)

□ 连接数据库(如果你有 PostgreSQL/MySQL)
□ 配置 GitHub MCP(自动管理 Issues/PR)
□ 安装 Slack MCP(让 AI 帮你写消息和摘要)
□ 探索 Monitoring MCP(如果你有 Sentry 账号,免费用)

🔴 进阶挑战(需要编程)

□ 用官方 SDK 写一个自己的 MCP Server
  → TypeScript SDK: npm install @modelcontextprotocol/sdk
  → Python SDK:    pip install mcp

□ 为公司内部系统(OA、CRM、BI)开发专属 MCP Server

□ 把你的 MCP Server 提交到这个仓库
  → Fork → 编辑 README → 提 PR

结语

punkpeye/awesome-mcp-servers 不只是一份工具列表,它是一张 AI 能力地图——展示了当 AI 拥有"手脚"之后,整个世界能被怎样重新连接。

从读取一个本地文件,到自动化整个 DevOps 流程;从查询天气,到控制智能家居;从搜索论文,到执行金融交易……MCP 把这一切统一在同一个协议下,让每一个开发者都能贡献一块拼图,也让每一个用户都能随时随地调用这些能力。

85.2k 个 Stars 背后,是整个 AI 工程社区正在用脚投票:AI Agent 的时代,已经来了


参考资源

  • 仓库地址:github.com/punkpeye/awesome-mcp-servers
  • Web 目录:glama.ai/mcp/servers
  • 官方协议文档:modelcontextprotocol.io
  • MCP Quickstart 教程:glama.ai/blog/2024-11-25-model-context-protocol-quickstart
  • 社区讨论:reddit.com/r/mcp(105k 成员)
  • Discord:glama.ai/mcp/discord(1.7k 在线)