MCP 实战:3 步把任意 API 接入 Claude / Cursor
发布 2026-08-02更新 2026-08-02核实 2026-08-02一句话结论
MCP(Model Context Protocol)是 Anthropic 提出的开放标准,让 AI 工具能像调函数一样调你已有的工具——数据库、GitHub、Slack、文件系统。接入成本极低:先吃现成 server 解决 80% 需求,再按需用 TypeScript SDK 自建。别一上来就造轮子。
MCP 是什么(30 秒理解)
过去每个 AI 工具要接外部工具,都得各自写一套适配。MCP 把这套适配标准化成「客户端(Claude Code / Cursor)— 协议 — Server(暴露 tools 的程序)」:
AI 客户端 ←— MCP 协议 —→ MCP Server ←—→ 你的数据库 / API / 文件系统
Server 暴露三类能力:
- Tools:AI 可调用的函数(如「查 PostgreSQL」「建 GitHub issue」)
- Resources:AI 可读的数据(如配置文件、日志)
- Prompts:预置的提示词模板
3 步上手
第 1 步:选一个现成 Server
社区已有大量现成 server(官方 registry),常用:
| Server | 能力 | 适合 |
|---|---|---|
@modelcontextprotocol/server-filesystem | 读/写本地文件 | 让 AI 操作项目文件 |
@modelcontextprotocol/server-postgres | 跑 SQL 查数据 | 数据分析 / 查库 |
github MCP | 建 issue / 读 PR / 搜代码 | 研发工作流 |
slack MCP | 发消息 / 搜频道 | 通知 / 协作 |
linear / notion MCP | 读写工单 / 文档 | 项目管理 |
第 2 步:配到客户端
Claude Code(写入 .mcp.json 或 ~/.claude.json):
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://user:pass@localhost:5432/db"]
}
}
}
然后 claude 里跑 /mcp 看是否连上。
Cursor(Settings → MCP → 粘贴同款 JSON 到 ~/.cursor/mcp.json):
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"]
}
}
}
第 3 步:验证
在对话里直接说自然语言,看 AI 是否自动调 tool:
> 查一下 users 表里最近 7 天注册的人数
如果 AI 调用了 Postgres tool 并返回结果,说明 MCP 通了。Claude Code 里 /mcp 可看每个 server 的 tools 列表。
现成 Server 推荐
| 场景 | 推荐 Server | 备注 |
|---|---|---|
| 文件操作 | filesystem | 最基础,先接这个 |
| 数据库 | postgres / sqlite | 接了就能「对话式查库」 |
| 代码协作 | github | 建 issue、读 diff |
| 项目管理 | linear / notion | 工单联动 |
| 内部系统 | 自建 | 写一个最小 server 暴露内部 API |
自建 MCP Server:Node + TypeScript 最小例子
当现成 server 不够,比如要暴露公司内部 API,用官方 SDK 写一个:
npm init -y
npm i @modelcontextprotocol/sdk zod
// server.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({ name: "demo", version: "1.0.0" });
// 暴露一个 tool:把文本转大写
server.tool("to_upper", { text: z.string() }, async ({ text }) => ({
content: [{ type: "text", text: text.toUpperCase() }],
}));
// 暴露一个查内部 API 的 tool
server.tool("get_orders", { userId: z.string() }, async ({ userId }) => {
const res = await fetch(`https://internal.api/orders?user=${userId}`);
const data = await res.json();
return { content: [{ type: "text", text: JSON.stringify(data) }] };
});
const transport = new StdioServerTransport();
await server.connect(transport);
配置到客户端:
{
"mcpServers": {
"demo": { "command": "npx", "args": ["tsx", "/path/to/server.ts"] }
}
}
之后 AI 就能直接说「查一下用户 123 的订单」。
排错指南
- server 没出现:检查
command路径和npx是否可访问;Claude Code 跑/mcp看报错。 - 连上了但 tool 调不动:看 server 日志,多数是权限 / 网络(如 Postgres 连接串错)。
- AI 不主动调:提示词要明确「用 X tool 做 Y」,或 tool 描述写得太模糊。
- 安全风险:MCP server 能访问你的文件 / 数据库,只装信任来源的 server,限制 filesystem server 的目录范围。
- 超时:MCP 调用超 2 分钟(Claude Code)会自动转后台,长任务别担心。
AIHO 观点:MCP 的最大价值是「你的私有数据 / 内部系统,不用把数据传给通用大模型就能被 AI 调用」。企业场景里,接一个 Postgres + 内部 API 的 server,比把数据库导给 ChatGPT 安全得多。
常见问题
Q:MCP 和 Function Calling 什么关系? A:Function Calling 是模型调用函数的能力,MCP 是「工具如何暴露给模型」的标准协议。MCP 让工具提供方和模型客户端解耦,一次写 server,多客户端可用。
Q:自建 server 要部署吗? A:stdio 模式的 server 随客户端本地拉起,不用单独部署;HTTP 模式的 server(SSE)才需要部署。
Q:多个 server 冲突怎么办?
A:每个 server 的 tool 名全局唯一,重名会冲突。命名加前缀(如 pg_query / gh_create_issue)避免。
相关阅读
- 工具卡:Claude Code | Cursor
- 概念:MCP 百科 | Function Calling
- 评测:MCP 生态评测
- 方案:Cursor MCP 深度集成
来源说明:本文基于 modelcontextprotocol.io 官方规范、TypeScript SDK、Claude Code / Cursor MCP 文档及 AIHO 编辑部实操归纳。SDK 版本迭代快,以官方最新文档为准。