MCP 服务器怎么搭建:从零到本地部署完整入门指南(2026)
MCP(Model Context Protocol)是 Anthropic 于 2024 年推出的 AI 工具扩展接口标准,基于 JSON-RPC 2.0 协议,让 AI 模型可以通过标准化方式调用外部工具、读取资源和使用提示模板。2026 年,Cursor、TRAE、Claude Code、OpenClaw 已全线接入 MCP,开发者只需搭建一次 MCP 服务器,就能在所有支持 MCP 的 AI 客户端里直接调用自定义工具。

MCP 的三大能力与两种传输方式
理解这两组概念,是搭建 MCP 服务器的前提。
三大能力
| 能力类型 | 作用 | 示例 |
|---|---|---|
| Tools(工具) | AI 可主动调用的函数,执行操作并返回结果 | 查数据库、调 API、操作文件 |
| Resources(资源) | AI 可读取的数据或信息,类似只读文件系统 | 读取本地文档、访问知识库 |
| Prompts(提示模板) | 预定义的提示词模板,供 AI 按需调用 | 代码审查模板、报告格式模板 |
大多数场景只需实现 Tools 即可满足需求。
两种传输方式
STDIO(标准输入输出):本地进程间通信,AI 客户端直接启动 MCP 服务进程,最简单,适合本地使用。
SSE / Streamable HTTP:远程 HTTP 服务,适合团队共享或云端部署,需要服务器地址和端口。
选择原则:个人开发和本地测试选 STDIO;团队共享或需要远程访问选 HTTP。
方案一:Python 搭建 MCP 服务器(推荐新手)
FastMCP 是 Python 版 MCP 官方 SDK 的高层封装,几行代码即可定义工具。
环境准备
bash
# 推荐使用 uv 管理 Python 环境(比 pip 快 10-100 倍)
# 安装 uv(macOS/Linux)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 初始化项目
uv init MyMcpServer
cd MyMcpServer
# 创建虚拟环境并安装依赖
uv venv
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows
uv add "mcp[cli]" httpx
编写第一个 MCP 服务器
创建 server.py:
python
from mcp.server.fastmcp import FastMCP
import os
# 初始化 MCP 服务器实例
mcp = FastMCP("我的工具箱")
# 注册 Tool:读取本地文件内容
@mcp.tool()
def read_file(path: str) -> str:
"""读取指定路径的文件内容,返回文本"""
try:
with open(path, "r", encoding="utf-8") as f:
return f.read()
except Exception as e:
return f"读取失败:{str(e)}"
# 注册 Tool:列出目录文件
@mcp.tool()
def list_files(directory: str) -> list[str]:
"""列出指定目录下的所有文件名"""
try:
return os.listdir(directory)
except Exception as e:
return [f"错误:{str(e)}"]
# 注册 Resource:暴露本地文档
@mcp.resource("docs://readme")
def get_readme() -> str:
"""返回项目说明文档"""
return "这是我的 MCP 工具箱,支持文件读写操作。"
if __name__ == "__main__":
mcp.run() # 默认 STDIO 模式
本地调试
bash
# 启动 MCP Inspector(可视化测试工具)
fastmcp dev server.py
# 打开浏览器访问 http://localhost:5173 进行交互测试
方案二:Node.js 搭建 MCP 服务器
适合已有 Node.js 项目或需要集成前端生态的场景。
bash
npm init -y
npm install @modelcontextprotocol/sdk zod
创建 server.js:
javascript
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: 'node-tools',
version: '1.0.0'
});
// 注册工具:两数相加
server.tool(
'add',
{ a: z.number(), b: z.number() },
async ({ a, b }) => ({
content: [{ type: 'text', text: String(a + b) }]
})
);
// 启动 STDIO 传输(注意:只能用 console.error 打日志,console.log 会污染通信通道)
const transport = new StdioServerTransport();
await server.connect(transport);
console.error('✅ MCP 服务器启动成功(STDIO 模式)');
接入主流 AI 客户端

接入 Claude Desktop
配置文件路径:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
C:\Users\用户名\AppData\Roaming\Claude\claude_desktop_config.json
json
{
"mcpServers": {
"my-tools": {
"command": "python",
"args": ["/Users/你的用户名/MyMcpServer/server.py"],
"env": {
"PYTHONPATH": "/Users/你的用户名/MyMcpServer"
}
},
"node-tools": {
"command": "node",
"args": ["/Users/你的用户名/node-mcp/server.js"]
}
}
}
保存后重启 Claude Desktop,在对话中输入"你有哪些工具?"验证是否生效。
接入 Claude Code(命令行)
bash
# 添加 MCP 服务器
claude mcp add my-tools python /绝对路径/server.py
# 查看已添加的 MCP 服务器列表
claude mcp list
# 删除某个服务器
claude mcp remove my-tools
接入 Cursor
Settings → MCP → Add new MCP server,填写:
- Type :
command - Name :自定义名称(如
my-tools) - Command :
python /绝对路径/server.py
接入 TRAE
在项目根目录创建 .trae/mcp.json:
json
{
"servers": [
{
"name": "my-tools",
"command": "python",
"args": ["/绝对路径/server.py"],
"transport": "stdio"
}
]
}
不想自己写?直接安装这 5 个热门 MCP 服务器
开源社区已有大量高质量 MCP 服务器可直接使用,无需从零编写:
| MCP 服务器 | 功能 | GitHub Stars | 安装命令 |
|---|---|---|---|
chrome-devtools-mcp |
浏览器自动化,26 个工具 | 18.5k | npx chrome-devtools-mcp@latest |
github-mcp |
GitHub API 集成,管理 Issue/PR | 10k+ | npx @modelcontextprotocol/server-github |
postgres-mcp |
PostgreSQL 数据库操作 | 5k+ | npx @modelcontextprotocol/server-postgres |
filesystem-mcp |
增强文件系统读写 | 3k+ | npx @modelcontextprotocol/server-filesystem |
web-search-mcp |
网络搜索功能 | 2k+ | npx @modelcontextprotocol/server-brave-search |
以 Claude Desktop 接入 GitHub MCP 为例:
json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_你的token"
}
}
}
}
对于不想维护本地环境的团队,也可以接入托管型 MCP 编排平台------例如七牛云 MCP 服务支持标准化模型能力编排,无需本地部署服务器即可构建 Agent 应用,具体接入方式见官方文档。
常见问题

Q:MCP 和普通函数调用(Function Calling)有什么区别? Function Calling 是各家大模型私有实现,格式不统一,换模型就要改代码。MCP 是跨模型的标准协议,一套 MCP 服务器可以被 Claude、GPT、Cursor、TRAE 等任意支持 MCP 的客户端调用,不需要为每个客户端单独适配。
Q:STDIO 模式下 console.log 为什么会让 MCP 服务器出错? STDIO 模式使用标准输入输出作为通信通道,console.log 输出的内容会被客户端误认为 JSON-RPC 消息,导致解析报错。Node.js 中必须用 console.error 打印日志(走 stderr),Python 中使用 import sys; print("log", file=sys.stderr)。
Q:MCP 服务器的 args 路径必须是绝对路径吗? 是的,配置文件中的 args 必须使用绝对路径。使用相对路径会因为客户端的工作目录不确定而导致找不到文件。可以用 $(pwd)/server.py 在终端里打印当前路径再粘贴进配置。
Q:如何让团队共享同一个 MCP 服务器,而不是每人本地跑一份? 将 MCP 服务器改为 HTTP 模式部署到云服务器,客户端配置中将 command 替换为 url 指向远程地址。Python FastMCP 切换 HTTP 模式只需 mcp.run(transport="streamable-http", port=8000),不需要修改工具逻辑代码。
Q:MCP Inspector 是什么,有什么用? MCP Inspector 是官方提供的可视化调试工具,运行 fastmcp dev server.py 后在浏览器中打开,可以直接测试每个 Tool 的输入输出,不需要连接真实 AI 客户端。开发阶段强烈推荐先用 Inspector 验证工具逻辑,再接入 Claude/Cursor。
延伸资源
- 托管型 MCP 服务(无需本地部署,标准化模型能力编排):七牛云 MCP 服务文档
- 多模型 API 统一接入(Claude / DeepSeek / Kimi,兼容 OpenAI 格式):七牛云 AI 推理 API Key
- MCP 官方 Python SDK:github.com/modelcontex...
- 开源 MCP 服务器目录:github.com/modelcontex...
把本文"接入 Claude Desktop"一节的配置模板加入团队 Runbook,新成员 15 分钟内即可完成 MCP 环境搭建,不依赖口口相传的口头文档。
本文内容基于 2026 年 5 月 MCP 官方 Python SDK、Node.js SDK 及各客户端最新文档,代码示例已在 Python 3.12 / Node.js 22 环境验证。