首页 /
实操教程 /
MCP协议实战:用10分钟接入第一个MCP Server MCP协议实战:用10分钟接入第一个MCP Server
技术开发MCP协议AIClaudeHTTP/SSE2026-08-21
MCP协议实战:用10分钟接入第一个MCP Server
封面图:Unsplash 图库,仅供学习演示。
MCP(Model Context Protocol)是 Anthropic 于 2026 年底开源的标准协议,旨在让 AI 模型与外部工具、数据源即插即用。本教程将用 10 分钟完成一个基于 HTTP/SSE 的 MCP Server,并接入 Claude 或本地模型。
1. 什么是MCP:核心概念与设计哲学
MCP 采用客户端/服务端架构:
graph LR
A[AI模型/客户端] -->|MCP协议| B[MCP Client]
B <-->|HTTP/SSE| C[MCP Server]
C --> D[工具Tool]
C --> E[资源Resource]
C --> F[提示词Prompt]
核心概念对照表:
| 概念 | 说明 | 类比 |
|---|
| MCP Server | 提供工具、资源、提示词的独立服务 | USB 设备 |
| MCP Client | 连接 Server 并调用工具的组件 | 电脑系统 |
| Tool | 可被模型调用的函数 / API | 设备功能 |
| Transport | 数据传输方式,如 HTTP/SSE、Stdio | USB 接口 |
设计哲学:
- 模型与工具解耦:模型不直接调用 API,而是通过 MCP 协商。
- 标准化交互:工具发现、调用、结果返回都有统一协议。
- 安全边界:Server 可独立部署、鉴权和审计。
2. 开发环境准备
建议版本:
| 依赖 | 版本要求 | 用途 |
|---|
| Python | 3.10+ | 运行 FastMCP |
| fastmcp | latest | MCP Server 开发框架 |
| mcp | latest | Python MCP Client SDK |
| httpx | latest | 调用 Ollama API |
| Ollama | latest | 本地模型推理(可选) |
安装命令:
pip install fastmcp mcp httpx
3. 搭建HTTP/SSE服务端
创建 `server.py`:
from fastmcp import FastMCP
mcp = FastMCP('demo-server')
@mcp.tool()
def add(a: float, b: float) -> float:
"""相加两个数字"""
return a + b
@mcp.tool()
def get_time() -> str:
"""返回当前时间"""
from datetime import datetime
return datetime.now().isoformat()
if __name__ == '__main__':
mcp.run(transport='sse')
启动服务:
fastmcp run server.py
默认 SSE 地址为 `http://localhost:8000/sse`。
4. 集成Claude或本地模型
4.1 Claude Code
Claude Code 是 Anthropic 官方 CLI,支持远程 SSE MCP Server。在终端添加:
claude mcp add demo --transport sse --url http://localhost:8000/sse
重启 Claude Code 后,在对话中发送:
用 add 工具计算 1 + 2,结果是多少?
4.2 本地模型(Ollama + 最小Agent)
先拉取模型:
ollama pull llama3.2
然后用 Python MCP SDK 连接 Server:
import httpx
from mcp import ClientSession
from mcp.client.sse import sse_client
def ask_ollama(prompt: str) -> str:
r = httpx.post(
'http://localhost:11434/api/generate',
json={'model': 'llama3.2', 'prompt': prompt, 'stream': False},
timeout=30
)
return r.json()['response']
async def run():
async with sse_client('http://localhost:8000/sse') as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
print('可用工具:', tools)
result = await session.call_tool('add', {'a': 1, 'b': 2})
print('add(1,2):', result)
if __name__ == '__main__':
import asyncio
asyncio.run(run())
实际接入时,可以用大模型输出结构化工具调用,再由客户端执行 Tool 并把结果返回模型,形成 Agent 闭环。
5. 常见踩坑与优化
| 问题 | 原因 | 解决方案 |
|---|
| 端口被占用 | 默认 8000 被占 | 指定 --port 9000 |
| SSE 连不上 | 路径错误 | 确认使用 /sse 路径 |
| CORS 报错 | 浏览器跨域 | 配置 CORS 允许域 |
| 工具调用超时 | Tool 执行过久 | 将长时间任务改为异步/轮询 |
| 小模型不会用工具 | 模型能力不足 | 使用 7B 以上模型并给出 few-shot 示例 |
优化建议:
- 使用 streamable HTTP 替代 SSE,支持更多传输语义。
- 为 Tool 增加输入校验和错误重试。
- 生产环境加入鉴权(如 Bearer Token)。
- 先在一行里打印日志,方便调试 MCP 协议报文。
附加内容
推荐视频(平台检索出处)
| 平台 | 推荐内容 | 来源/检索入口 |
|---|
| B站 | 搜索“MCP协议实战”,观看热门实战视频 | B站检索 |
| 腾讯视频 | 搜索“MCP教程” | 腾讯视频检索 |
| 优酷 | 搜索“MCP Server” | 优酷检索 |
| 抖音 | 搜索“MCP教程” | 抖音检索 |
视频出处为各平台搜索结果,版权归原作者所有;本教程仅为学习推荐,不承担相关责任。
操作清单
避坑指南
- 端口占用:使用
--port 显式指定端口,避免与本地服务冲突。
- SSE 路径:确认连接地址是
/sse,不是根路径 /。
- 跨域问题:浏览器端调用时需在网关或 Server 层开启 CORS。
- 远程访问:如果不在本机调试,需要将监听地址改为
0.0.0.0,并注意防火墙。
- 模型幻觉:小模型可能会伪造工具调用结果,建议用更大的模型并做结果校验。
免责声明
本教程仅用于技术学习和研究。实际部署请遵循 OpenAI、Anthropic、Ollama 等平台的服务条款,并确保你有权访问和调用相关 API。MCP 并未取代 API 安全策略,请勿在公开环境中暴露无鉴权的服务端。PREMIUM需要完整版教程?
包含详细步骤、视频演示、提示词模板和可下载资料包。微信支付即时获取。
购买完整版 ¥29.90