这是一篇关于
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 Client | Host 内部实现的协议客户端 | 负责和 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-server | SQLite | 全文搜索 | 跨工具个人偏好 |
aitytech/agentkits-memory | FTS5 + 向量嵌入 | 混合检索 | 编程助手记忆 |
AliceLJY/recallnest | LanceDB + 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) │
│ │
│ Client → Server: 初始化握手 │
│ { │
│ "jsonrpc": "2.0", │
│ "id": 1, │
│ "method": "initialize", │
│ "params": { │
│ "protocolVersion": "2024-11-05", │
│ "capabilities": { "roots": {}, "sampling": {} }, │
│ "clientInfo": { "name": "claude-desktop", "version": "1.0"}│
│ } │
│ } │
│ │
│ Server → Client: 能力声明 │
│ { │
│ "jsonrpc": "2.0", │
│ "id": 1, │
│ "result": { │
│ "protocolVersion": "2024-11-05", │
│ "capabilities": { "tools": {}, "resources": {} }, │
│ "serverInfo": { "name": "weather-server", "version": "1.0"}│
│ } │
│ } │
│ │
│ ─────────────────── 正式通信开始 ─────────────────── │
│ │
│ Client → Server: 调用工具 │
│ { │
│ "method": "tools/call", │
│ "params": { "name": "get_weather", "arguments": {"city":"北京"}}│
│ } │
│ │
│ Server → Client: 返回结果 │
│ { "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 的主流客户端(截至2026年4月):
✅ Claude Desktop(最成熟)
✅ Cursor(1.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 在线)