开发第一个MCP与数据采集实践
# 开发第一个MCP与数据采集实践
从加法函数到设备温度采集,明确 SDK 做什么、业务函数做什么,以及结果如何回到 AI。
# 1. 自己写一个 MCP,需要哪些步骤?
- 确定要提供的能力。
- 先实现普通业务函数。
- 用 MCP SDK 创建服务。
- 注册工具名称、说明、参数和执行函数。
- 选择 stdio 或 Streamable HTTP,并配置客户端。
- 验证工具发现、正常调用、参数错误和业务失败。
最简单的加法服务如下,使用官方 Python SDK v1 API:
python -m venv .venv
.venv/bin/python -m pip install 'mcp[cli]>=1,<2'
1
2
2
创建 server.py:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("计算工具")
@mcp.tool()
def add(a: float, b: float) -> float:
"""计算两个数的和。"""
return a + b
if __name__ == "__main__":
mcp.run(transport="stdio")
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Windows 环境需使用对应的虚拟环境路径。安装后可记录实际依赖版本,便于复现。客户端启动命令指向虚拟环境中的 Python,参数为 server.py 的绝对路径。stdio 模式不要把普通调试日志写到 stdout,应写 stderr,以免污染协议消息。
用户:12 加 30
↓
模型选择 add,生成参数 a=12、b=30
↓
客户端发送 MCP 工具调用
↓
服务执行 return a + b
↓
结果 42 经 SDK 返回客户端,再交给模型
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
与 draw.io 的对应关系是:加法工具的业务是计算和返回数字;画图工具的业务是处理图形、生成链接、打开浏览器和返回链接。SDK 处理通信,业务代码由开发者自己写。示例 API 参考 官方 Python SDK (opens new window)。
# 2. 数据采集领域里,MCP 做什么?
以工厂温度采集为例,可以提供:
| 工具 | 实际业务 |
|---|---|
list_devices() | 查询设备列表 |
read_temperature(device_id) | 调用采集接口,或通过 Modbus 等协议读设备 |
query_history(device_id, start, end) | 查询历史数据库 |
用户:3 号设备当前多少度?
↓
模型选择 read_temperature,参数为 device-3
↓
MCP 服务调用采集函数
↓
采集函数读取设备并换算数值
↓
返回温度、单位、设备编号和采样时间
↓
AI 用自然语言回答
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
设备离线应返回错误,读取历史缓存时应标明采样时间,避免把旧值称为“当前值”。持续轮询、断线重连和数据落库由采集系统承担;MCP 可以暴露查询、任务启动和配置接口,但不是采集引擎本身。
# 3. 记住这几个边界
- 协议不等于函数,工具可以包装函数。
- Server 不一定是一台远程机器,也可以是本地进程。
- 工具描述负责说明,业务代码负责执行,SDK 负责协议通信。
- 图形数据、链接、文件和渲染产物是不同阶段。
- 本地 MCP 不自动意味着离线;需要检查完整依赖链。
- MCP 的价值是标准化连接与调用,让已有程序能力被 AI 应用复用。
# 延伸阅读
编辑 (opens new window)
上次更新: 2026/10/19, 01:44:57