MCP 协议从入门到实战:手把手搭建你的第一个 AI 工具服务器
为什么你需要了解 MCP?
说实话,一年前我听到 MCP 这个词的时候,第一反应是——又来了个新协议。但当我真正上手搭建了一个 MCP 服务器,把内部工具都接上去之后,我真香了。
MCP(Model Context Protocol)是 Anthropic 在 2024 年底提出的开放协议,目的是让 AI 模型能标准化地调用外部工具和数据。说白了,它解决了一个最根本的问题:大模型再强,也碰不到你的数据库、文件系统和 API。

MCP 的核心概念
MCP 的架构其实很简单,就三层:
- Host — 运行 AI 模型的主机(比如 Claude Desktop、VS Code 里的 AI 插件)
- Client — 和 MCP 服务器建立一对一连接的客户端
- Server — 提供工具、资源、提示的轻量服务程序
每个 Server 只连一个 Client,但一个 Host 可以连多个 Server。这就好比你电脑上装了一个 IDE,IDE 里装了各种插件——每个插件就是一个 MCP Server。

环境准备
开始之前,你需要准备好:
- Node.js 18+(推荐 20 LTS)
- Python 3.10+(可选,如果你更熟悉 Python)
- Claude Desktop 或其他支持 MCP 的客户端
- 一个简单的 API Key(比如用 OpenClaw 的本地服务)
第一步:搭建一个最简单的 MCP Server
我们先用 Python 搭一个最简的「天气查询」工具服务器:
from mcp.server import FastMCPServer, Tool
app = FastMCPServer("weather-server", "1.0.0")
@app.tool()
async def get_weather(city: str) -> str:
"""查询指定城市的天气信息"""
# 这里简化处理,实际可以调用天气API
return f"{city} 当前温度 26°C,多云,空气质量良好"
if __name__ == "__main__":
app.run()
保存为 weather_server.py,然后运行:
pip install mcp-python-sdk
python weather_server.py
第二步:配置 Claude Desktop
在 Claude Desktop 的配置文件中添加:
{
"mcpServers": {
"weather": {
"command": "python",
"args": ["path/to/weather_server.py"]
}
}
}
重启 Claude Desktop,你就能在对话中使用 get_weather 工具了。
第三步:接入实际数据库
光查天气没啥意思,真正的价值在于让 AI 操作你的业务数据。来个 PostgreSQL 查询工具:
import asyncpg
from mcp.server import FastMCPServer, Tool
app = FastMCPServer("db-query", "1.0.0")
pool = None
@app.tool()
async def query_database(sql: str) -> list:
"""执行 SQL 查询并返回结果"""
async with pool.acquire() as conn:
rows = await conn.fetch(sql)
return [dict(row) for row in rows]
@app.on_startup()
async def init():
global pool
pool = await asyncpg.create_pool(dsn="postgresql://user:pass@localhost/db")
app.run()
常见问题 Q&A
Q:MCP 和 Function Calling 有什么区别?
A:Function Calling 是每个模型各自定义的接口规范,而 MCP 是一个开放标准。你用 MCP 写的工具,可以在 Claude、GPT 甚至本地的开源模型之间复用。
Q:安全怎么保证?
A:MCP Server 运行在你的本地机器上,数据不会经过第三方。你可以控制每个工具能做什么、不能做什么。权限控制在 Server 端,模型只是调用接口。
Q:性能怎么样?
A:MCP 走的是 JSON-RPC 协议,每次调用开销在几毫秒级别。对于大多数业务场景完全够用。如果你需要高吞吐,可以考虑连接池和异步处理。
总结
MCP 不是那种「必须学的技术」,但它确实是那种「学了之后效率提升一大截」的技术。
我自己的感受是:
- 原来需要手动查询数据 → 现在跟 Claude 说一句就行
- 原来要写脚本批量处理 → 现在直接对话式操作
- 原来工具和服务散落一地 → 现在统一通过 MCP 暴露给 AI
下一步你可以试试:把你的常用 API 封装成 MCP 工具,接入 CI/CD 流程,或者做个文件操作服务器。路子给你铺好了,动手试一下吧。

更多推荐




所有评论(0)