MCP 服务器:用真实工具扩展 AI
大语言模型很聪明。它们能推理、写作、分析、创作。但它们也是隔离的。默认情况下,一个 LLM 看不了今天的天气、检查不了你的数据库、搜不了网页、读不了你电脑上的文件。它只知道训练数据里的内容和你粘到提示词里的东西。
MCP — Model Context Protocol — 改变这一点。它是把 AI 模型连接到外部工具的标准。把它想成 AI 的 USB:一个通用插头,让任何模型使用任何工具,只要双方都说这个协议。
MCP 如何工作
流程很简单:
关键洞见:LLM 决定何时使用工具。你不是写代码说 “如果用户问 GitHub,就调 GitHub API”。模型理解用户意图,识别需要外部数据,调用相应的 MCP 服务器,取得结果,并纳入其回答。
这就是 MCP 强大的原因 — 也是它与传统 API 集成的不同:传统集成里开发者必须预见每个可能的工作流。
有哪些 MCP 服务器
Zubnet 上有 117 个 MCP 服务器。以下是分类和部分亮点:
开发工具
• GitHub — 搜索仓库、创建/读取/关闭 issue、列出 PR、读取文件内容、创建分支
• GitLab — 类似 GitHub,用于 GitLab 项目
• Linear — 创建和管理 issue、读取项目状态
• Sentry — 搜索错误、读取堆栈跟踪、解决 issue
数据库
• PostgreSQL — 针对 Postgres DB 执行读取查询
• MySQL — 针对 MySQL/MariaDB 同样
• SQLite — 查询本地 SQLite 文件
• Redis — 读取键、扫描模式
搜索与研究
• Brave Search — 无跟踪网页搜索
• Exa — 网页语义搜索
• ArXiv — 搜索学术论文
• Wikipedia — 查询百科全书知识
文件系统与存储
• Filesystem — 在指定目录中读、写、列出和搜索文件
• Google Drive — 从 Drive 搜索和读取文档
• S3 — 列出和读取 AWS S3 桶中的对象
通信
• Slack — 读取频道、发送消息、搜索历史
• Discord — 在服务器中读取和发送消息
• Email — 通过 IMAP/SMTP 读取和起草邮件
数据与 API
• Fetch — 向任何 URL 发起 HTTP 请求
• Puppeteer — 浏览网页、截屏、提取内容
• Google Maps — 地理编码、路线、地点搜索
在我们的 MCP Store 浏览完整列表。
为 Claude Desktop 配置
Claude Desktop 原生支持 MCP。要连接服务器,把它的配置加到 Claude 的配置文件。在 Zubnet 的 MCP Store 每个服务器都有一键复制此配置的按钮。
配置文件位于:
• macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
• Windows: %APPDATA%\Claude\claude_desktop_config.json
含两个 MCP 服务器的配置像这样:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
}
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "your_brave_key_here"
}
}
}
}
保存文件,重启 Claude Desktop,工具会自动出现。Claude 会在相关对话中使用它们。
为 Cursor 配置
Cursor(AI 代码编辑器)也支持 MCP。配置放进项目的 .cursor/mcp.json 文件:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y", "@modelcontextprotocol/server-filesystem",
"/path/to/your/project"
]
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"POSTGRES_CONNECTION_STRING": "postgresql://user:pass@localhost/mydb"
}
}
}
}
这让 Cursor 的 AI 能读取你的项目文件并查询你的数据库 — 让它在理解代码库和回答数据相关问题上表现戏剧性地更好。
在 Zubnet 上配置
对运行在 Zubnet 平台上的代理,配置 MCP 服务器更简单:
1. 进入 MCP Store
2. 找到你想要的服务器(如 GitHub)
3. 点击 “激活”
4. 输入所需配置(API 密钥、URL 等)
5. 连接到你的代理
服务器在我们基础设施上运行。无需本地安装、无需 npx、无需 Node.js。只需工作。
配置 schema:每个服务器需要什么
每个 MCP 服务器都需要一些配置。最常见的模式:
需要:来自服务提供商的 API 密钥或个人访问token。到他们的开发者设置获取。
需要:连接字符串。格式:protocol://user:password@host:port/database。为安全使用只读凭证。
需要:目录路径。服务器只能访问此目录内的文件。使用尽可能窄的范围。
需要:OAuth 凭证(client ID + secret)或预生成的访问 token。在 Zubnet,我们为你处理 OAuth 流。
AI 如何决定使用工具
这是感觉像魔法的部分。你不写规则。LLM 自己搞定。
当你问 “我们在 GitHub 上有哪些 open issue?”,模型识别到:
1. 这需要它没有的数据(你特定的 GitHub issue)
2. 有一个 GitHub 工具可用
3. list_issues 函数带 state=open 是正确的调用
它构造工具调用,发给 MCP 服务器,得到 JSON 响应,然后用自然语言总结。
对多步任务,模型链式调用工具。“找到评论最多的 open issue 并在 Slack 的 #dev-chat 发一个总结” 可能涉及:
1. github.list_issues(state=open, sort=comments)
2. github.get_issue(number=142)(获取完整细节)
3. slack.post_message(channel=#dev-chat, text=...)
三次工具调用,自动编排。没写代码。
安全考虑
带写凭证的 PostgreSQL MCP 服务器可以修改你的数据库。具有删除权限 PAT 的 GitHub 服务器能删除仓库。指向 / 的文件系统服务器能读取整个磁盘。对待 MCP 凭证要像对待 SSH 密钥:最小权限、具体范围、定期轮换。使用只读数据库用户。使用仅含所需作用域的 GitHub token。把文件系统服务器指向特定项目目录,绝不指根。
构建你自己的 MCP 服务器
MCP 规范是开放的。如果你需要的工具还不存在,你可以构建。一个 MCP 服务器是一个程序:
1. 声明其可用工具(名称、描述、参数 schema)
2. 处理工具调用请求
3. 返回结构化结果
官方 SDK 有 TypeScript 和 Python。TypeScript 里一个最小服务器约 50 行代码。规范和 SDK 在 modelcontextprotocol.io。
如果你构建了一个别人可能觉得有用的服务器,考虑把它发布到 MCP 生态。社区每周都在成长。
何时用 MCP vs. 常规 API 调用
MCP 并不总是正确答案。在以下情形使用:
• 你希望 AI 决定何时调用外部服务(动态的、用户驱动的工作流)
• 你在构建需要工具访问的代理
• 你希望跨多个工具有统一接口(一个协议、117 个服务器)
使用常规 API 调用当:
• 流程确定性强(总是先调用这个 API,然后那个)
• 你需要对每个请求的精确控制
• 性能关键,承受不起 LLM 的决策循环
在我们的 MCP Store 浏览 117 个 MCP 服务器。为 Claude Desktop 和 Cursor 提供一键配置。或直接为你的 Zubnet 代理 激活。