MCP 生态与应用场景
问题
MCP 生态有哪些常用 Server?在实际项目中如何应用?
答案
一、官方与社区 Server
| Server | 类型 | 功能 |
|---|---|---|
| filesystem | 官方 | 文件读写、搜索、目录操作 |
| github | 官方 | PR、Issue、代码搜索 |
| postgres | 官方 | SQL 查询、Schema 查看 |
| sqlite | 官方 | SQLite 数据库操作 |
| puppeteer | 官方 | 网页截图、爬取 |
| playwright | 社区 | 浏览器自动化 |
| slack | 官方 | 消息发送、频道管理 |
| brave-search | 官方 | 网页搜索 |
| context7 | 社区 | 代码库文档检索 |
| sequential-thinking | 官方 | 思维链推理 |
二、支持 MCP 的 Host 应用
| Host | 支持情况 | 传输方式 |
|---|---|---|
| Claude Desktop | 完整支持 | stdio |
| VS Code (Copilot) | 支持 | stdio |
| Cursor | 支持 | stdio |
| Windsurf | 支持 | stdio |
| Zed | 支持 | stdio |
| 自建应用 | SDK 支持 | stdio / Streamable HTTP |
三、应用场景
1. AI 编程助手增强
2. 企业内部 AI 平台
3. 数据分析工作流
一个分析师可以通过自然语言:
- 连接数据库查看表结构(Resources)
- 让 AI 编写并执行 SQL(Tools)
- 将结果导出为报告(Tools)
四、自建 MCP 集成架构
自建 AI 应用集成 MCP
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
async function setupMCPClient() {
// 启动 MCP Server 并连接
const transport = new StdioClientTransport({
command: "npx",
args: ["-y", "@modelcontextprotocol/server-postgres"],
env: { DATABASE_URL: process.env.DATABASE_URL }
});
const client = new Client({ name: "my-app", version: "1.0.0" });
await client.connect(transport);
// 获取工具列表 → 转为 LLM Function Calling 格式
const { tools } = await client.listTools();
// 转为 OpenAI Tool 格式
const openaiTools = tools.map(tool => ({
type: "function" as const,
function: {
name: tool.name,
description: tool.description,
parameters: tool.inputSchema
}
}));
return { client, openaiTools };
}
五、MCP 与 Function Calling 的整合
常见面试问题
Q1: MCP 的主要优势是什么?
答案:
- 标准化:统一的协议,避免 M×N 集成问题
- 可组合:多个 Server 自由组合,像乐高积木
- 安全:内置权限控制和用户确认机制
- 开放生态:社区贡献 Server,开箱即用
- 跨平台:同一个 Server 可被不同 Host 使用
Q2: MCP 目前的局限性?
答案:
- 生态成熟度:仍在早期,部分 Server 质量参差不齐
- 远程部署:Streamable HTTP 方案刚推出,企业级方案尚在探索
- 认证授权:协议层面的 OAuth 支持仍在开发中
- 性能:JSON-RPC over stdio 在高频调用场景有开销
- 调试:错误排查工具不够完善
Q3: 如何在自己的 AI 应用中使用 MCP?
答案:
- 使用 MCP Client SDK 连接现有 Server
- 调用
listTools()获取工具定义 - 将工具定义转为 LLM 的 Function Calling 格式
- LLM 返回 tool_call 后,通过 MCP Client 执行
- 将结果返回 LLM 生成最终回答