# 30行代码打通AI Agent任督二脉:MCP协议实战
你有没有遇到过这种情况——
让Claude帮你查个数据库,它说"我无法访问";让Cursor自动发个HTTP请求,你得先写一堆胶水代码;想在GPT和Claude之间共享同一套工具,结果每个平台都要重写一遍。
说白了,AI再聪明,没有"手"也是白搭。
2024年底,Anthropic推出了MCP(Model Context Protocol),就是给AI装"手"的标准。到2026年,MCP已经从实验性协议变成了AI工具链的基础设施——Claude Desktop、Cursor、Windsurf、VS Code Copilot全支持了。
今天不聊概念,直接上手:30行Python代码写一个MCP Server,让Claude和Cursor都能调用你的工具。
## 一、MCP到底在解决什么问题?
先说痛点。
假设你是个全栈开发者,日常要:
- 查询数据库里的用户数据
- 调用公司内部API接口
- 读写本地配置文件
- 搜索代码仓库
没有MCP之前,你得每个AI平台写一套适配代码。Claude用Claude的格式,OpenAI用OpenAI的格式,Gemini又有一套。三个平台三套代码,维护到怀疑人生。
MCP的解法:**统一协议,一次开发,到处使用**。
就像USB统一了外设接口,MCP统一了AI和工具之间的接口。你写一个MCP Server,Claude能用,Cursor能用,任何支持MCP的客户端都能用——零适配成本。
> 个人看法:MCP之前,AI工具链就像春秋战国,各家协议不互通。MCP相当于"书同文车同轨",这是AI Agent落地的关键基础设施。
## 二、5分钟搞懂MCP架构
MCP架构其实很简单,三层:
- **Host(宿主应用)**:Claude Desktop、Cursor这些你日常用的AI工具
- **Client(客户端)**:嵌在Host里面,负责和Server通信
- **Server(服务端)**:你写的,暴露工具给AI调用
核心就一句话:**你只需要写Server,剩下的MCP框架全帮你搞定。**
MCP Server可以暴露三种东西:
1. **Tool(工具)**——AI可以"执行"的函数,比如查天气、写文件、调API
2. **Resource(资源)**——AI可以"读取"的数据源,比如数据库表、文档内容
3. **Prompt(提示模板)**——预定义的提示模板,快速触发常见操作
简单判断:有副作用用Tool,只读用Resource,固定流程用Prompt。
## 三、实战:30行代码写一个MCP Server
开始写代码。
**安装FastMCP:**
```bash
pip install fastmcp
```
验证安装:
```bash
$ fastmcp version
FastMCP version: 3.2.4
MCP version: 1.27.0
```
**写一个DevOps工具箱Server:**
```python
from fastmcp import FastMCP, Context
import subprocess
import json
mcp = FastMCP("devops-toolkit", version="1.0.0")
@mcp.tool()
def check_service_status(service_name: str) -> str:
"""检查指定服务的运行状态"""
try:
result = subprocess.run(
["systemctl", "is-active", service_name],
capture_output=True, text=True, timeout=5
)
status = result.stdout.strip()
return f"服务 {service_name} 当前状态: {status or '未找到'}"
except Exception as e:
return f"检查失败: {str(e)}"
@mcp.tool()
async def search_logs(keyword: str, log_path: str = "/var/log/app.log",
lines: int = 20, ctx: Context = None) -> str:
"""在日志文件中搜索关键词"""
if ctx:
await ctx.info(f"正在搜索日志: {keyword}")
try:
result = subprocess.run(
["grep", "-n", "-C", str(lines//2), keyword, log_path],
capture_output=True, text=True, timeout=10
)
if result.returncode == 0:
return f"找到匹配项:\n{result.stdout[:2000]}"
return f"未找到包含 '{keyword}' 的日志"
except Exception as e:
return f"搜索失败: {str(e)}"
@mcp.tool()
def get_system_info() -> dict:
"""获取系统基本信息"""
import psutil
return {
"cpu_percent": psutil.cpu_percent(interval=1),
"memory": {
"total_gb": round(psutil.virtual_memory().total / 1e9, 2),
"used_percent": psutil.virtual_memory().percent
},
"disk": {
"total_gb": round(psutil.disk_usage("/").total / 1e9, 2),
"used_percent": psutil.disk_usage("/").percent
}
}
if __name__ == "__main__":
mcp.run()
```
核心就是几个装饰器:
- `@mcp.tool()` → 注册工具函数
- `@mcp.resource()` → 注册只读资源
- `@mcp.prompt()` → 注册提示模板
函数的类型标注自动变成JSON Schema,docstring自动变成AI看到的工具描述。`mcp.run()`一行搞定启动。
> 踩坑经验:docstring是灵魂!AI选择工具靠的是description字段。写清楚参数和适用场景,比写对更重要。
## 四、接入Claude Desktop和Cursor
Server写好了,怎么让AI用起来?
**方式一:手动配置**
找到Claude Desktop配置文件:
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
- Windows: %APPDATA%\Claude\claude_desktop_config.json
添加你的Server:
```json
{
"mcpServers": {
"devops-toolkit": {
"command": "python",
"args": ["C:\\path\\to\\devops_server.py"]
}
}
}
```
Cursor类似,在Settings → MCP里添加。
**方式二:一行命令自动注册**
```bash
fastmcp install devops_server.py --client claude
```
重启Claude Desktop后,你应该能看到工具图标里多了"devops-toolkit"。
现在可以直接跟Claude说:
- "帮我检查一下nginx和mysql的状态"
- "在日志里搜一下ConnectionTimeout关键词"
- "分析这个错误:redis connection refused"
> 实测效果:第一次看到AI自动调用自己写的工具,那种感觉挺奇妙的——就像AI突然有了手,能帮你干活了。
## 五、进阶:远程部署和HTTP模式
上面的例子用的是stdio模式(本地进程通信)。如果需要部署在远程服务器上多人共享,就用HTTP模式。
改一行代码:
```python
if __name__ == "__main__":
mcp.run(transport="http", host="0.0.0.0", port=8000)
```
客户端配置跟着变:
```json
{
"mcpServers": {
"devops-toolkit": {
"url": "http://your-server:8000/mcp/"
}
}
}
```
也可以挂载到现有FastAPI应用上:
```python
from fastapi import FastAPI
app = FastAPI()
app.mount("/mcp", mcp.http_app())
```
## 六、生态里现成的Server
不用什么都自己写,社区有很多现成的:
| Server | 功能 | 安装命令 |
|--------|------|----------|
| filesystem | 文件系统读写 | npx @modelcontextprotocol/server-filesystem |
| postgres | PostgreSQL查询 | npx @modelcontextprotocol/server-postgres |
| github | GitHub操作 | npx @modelcontextprotocol/server-github |
| brave-search | 网络搜索 | npx @modelcontextprotocol/server-brave-search |
| puppeteer | 浏览器自动化 | npx @modelcontextprotocol/server-puppeteer |
零代码,配上就能用。
## 小结
MCP做的事情很简单——给AI一个标准化的接口层,让它能真正操作你手边的工具。
你只需要:
1. `pip install fastmcp`
2. 写几个带`@mcp.tool()`装饰器的Python函数
3. 配置到Claude Desktop / Cursor
4. 直接跟AI说你要做什么
30行代码,你的AI就从"只能聊天"进化到"能干活"了。
2026年是AI Agent落地的关键年,而MCP就是连接AI和真实世界的基础设施。**早学早受益,晚学要追赶。**
如果你已经在用Claude Desktop或Cursor,今晚就可以加一个MCP Server试试——感受一下AI真正调用你工具的那个瞬间。
---
*你对MCP有什么看法?或者想看什么方向的AI实战教程?评论区聊聊。*
版权归属:
西瓜
许可协议:
本文使用《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》协议授权
评论区