MCP2Serial
# MCP2Serial: 连接物理世界与AI大模型的桥梁
[English](README_EN.md) | 简体中文
<div align="center">
<img src="docs/images/logo.png" alt="MCP2Serial Logo" width="200"/>
<p>通过自然语言控制硬件,开启物联网新纪元</p>
</div>
## 系统架构
<div align="center">
<img src="docs/images/stru_chs.png" alt="系统架构图" width="800"/>
<p>MCP2Serial 系统架构图</p>
</div>
## 工作流程
<div align="center">
<img src="docs/images/workflow_chs.png" alt="工作流程图" width="800"/>
<p>MCP2Serial 工作流程图</p>
</div>
## 项目愿景
MCP2Serial 将串口设备接入AI大模型的项目,它通过 Model Context Protocol (MCP) 将物理世界与 AI 大模型无缝连接。最终实现:
- 用自然语言控制你的硬件设备
- AI 实时响应并调整物理参数
- 让你的设备具备理解和执行复杂指令的能力
## 主要特性
- **智能串口通信**
- 自动检测和配置串口设备 用户也可指定串口号
- 支持多种波特率(默认 115200)
- 实时状态监控和错误处理
- **MCP 协议集成**
- 完整支持 Model Context Protocol
- 支持资源管理和工具调用
- 灵活的提示词系统
## 支持的客户端
MCP2Serial 支持所有实现了 MCP 协议的客户端,包括:
| 客户端 | 特性支持 | 说明 |
|--------|----------|------|
| Claude Desktop | 完整支持 | 推荐使用,支持所有 MCP 功能 |
| Continue | 完整支持 | 优秀的开发工具集成 |
| Cline | 资源+工具 | 支持多种 AI 提供商 |
| Zed | 基础支持 | 支持提示词命令 |
| Sourcegraph Cody | 资源支持 | 通过 OpenCTX 集成 |
| Firebase Genkit | 部分支持 | 支持资源列表和工具 |
## 支持的 AI 模型
得益于灵活的客户端支持,MCP2Serial 可以与多种 AI 模型协同工作:
### 云端模型
- OpenAI (GPT-4, GPT-3.5)
- Anthropic Claude
- Google Gemini
- AWS Bedrock
- Azure OpenAI
- Google Cloud Vertex AI
### 本地模型
- LM Studio 支持的所有模型
- Ollama 支持的所有模型
- 任何兼容 OpenAI API 的模型
### 准备
Python3.11 或更高版本
Claude Desktop 或 Cline
## 快速开始
### 1. 安装
#### Windows用户
下载 [install.py](https://raw.githubusercontent.com/mcp2everything/mcp2serial/main/install.py)
```bash
python install.py
```
#### macOS用户
```bash
# 下载安装脚本
curl -O https://raw.githubusercontent.com/mcp2everything/mcp2serial/main/install_macos.py
# 运行安装脚本
python3 install_macos.py
```
#### Ubuntu/Raspberry Pi用户
```bash
# 下载安装脚本
curl -O https://raw.githubusercontent.com/mcp2everything/mcp2serial/main/install_ubuntu.py
# 运行安装脚本
python3 install_ubuntu.py
```
安装脚本会自动完成以下操作:
- ✅ 检查系统环境
- ✅ 安装必要的依赖
- ✅ 创建默认配置文件
- ✅ 配置Claude桌面版(如果已安装)
- ✅ 检查串口设备
### 手动分步安装依赖
```bash
windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
MacOS
curl -LsSf https://astral.sh/uv/install.sh | sh
```
主要依赖uv工具,所以当python和uv以及Claude或Cline安装好后就可以了。
### 基本配置
在你的 MCP 客户端(如 Claude Desktop 或 Cline)配置文件中添加以下内容:
注意:如果使用的自动安装那么会自动配置Calude Desktop无需此步。
使用默认配置文件:
```json
{
"mcpServers": {
"mcp2serial": {
"command": "uvx",
"args": [
"mcp2serial"
]
}
}
}
```
> 注意:修改配置后需要重启Cline或者Claude客户端软件
配置串口和命令:
注意下面的配置默认为COM11 需要根据实际进行修改
```yaml
# config.yaml
serial:
port: COM11 # 或自动检测
baud_rate: 115200 # 可选,默认 115200
timeout: 1.0 # 可选,默认 1.0
read_timeout: 1.0 # 读取超时时间,1秒内不应答则报错
response_start_string: OK # 可选,串口应答的开始字符串,默认为OK
commands:
set_pwm:
command: "PWM {frequency}\n"
need_parse: false
prompts:
- "把PWM调到{value}"
```
## 配置说明
### 配置文件位置
配置文件(`config.yaml`)可以放在不同位置,程序会按以下顺序查找:
#### 1. 当前工作目录(适合开发测试)
- 路径:`./config.yaml`
- 示例:如果你在 `C:\Projects` 运行程序,它会查找 `C:\Projects\config.yaml`
- 适用场景:开发和测试
- 不需要特殊权限
#### 2. 用户主目录(推荐个人使用)
```bash
# Windows系统
C:\Users\用户名\.mcp2serial\config.yaml
# macOS系统
/Users/用户名/.mcp2serial/config.yaml
# Linux系统
/home/用户名/.mcp2serial/config.yaml
```
- 适用场景:个人配置
- 需要创建 `.mcp2serial` 目录:
```bash
# Windows系统(在命令提示符中)
mkdir "%USERPROFILE%\.mcp2serial"
# macOS/Linux系统
mkdir -p ~/.mcp2serial
```
#### 3. 系统级配置(适合多用户环境)
```bash
# Windows系统(需要管理员权限)
C:\ProgramData\mcp2serial\config.yaml
# macOS/Linux系统(需要root权限)
/etc/mcp2serial/config.yaml
```
- 适用场景:多用户共享配置
- 创建目录并设置权限:
```bash
# Windows系统(以管理员身份运行)
mkdir "C:\ProgramData\mcp2serial"
# macOS/Linux系统(以root身份运行)
sudo mkdir -p /etc/mcp2serial
sudo chown root:root /etc/mcp2serial
sudo chmod 755 /etc/mcp2serial
```
程序会按照上述顺序查找配置文件,使用找到的第一个有效配置文件。根据你的需求选择合适的位置:
- 开发测试:使用当前目录
- 个人使用:建议使用用户主目录(推荐)
- 多用户环境:使用系统级配置(ProgramData或/etc)
### 串口配置 命令配置进阶
在 `config.yaml` 中添加自定义命令:
默认不使用真实串口 用模拟串口来演示则无需修改
```yaml
serial:
# 串口配置
port: LOOP_BACK # 可选,如果不指定则自动查找。设置为LOOP_BACK时启用回环模式,发送什么就接收什么
baud_rate: 115200 # 可选,默认 115200
timeout: 1.0 # 可选,默认 1.0
read_timeout: 1.0 # 读取超时时间,1秒内不应答则报错
response_start_string: CMD # 可选,串口应答的开始字符串,默认为OK
commands:
# PWM控制命令
set_pwm:
command: "CMD_PWM {frequency}" # 实际发送的命令格式,server会自动添加\r\n
need_parse: false # 不需要解析响应内容
prompts:
- "把PWM调到最大"
- "把PWM调到最小"
- "请将PWM设置为{value}"
- "关闭PWM"
- "把PWM调到一半"
```
使用真实串口
```yaml
# config.yaml
serial:
port: COM11 # 或自动检测
baud_rate: 115200 # 可选,默认 115200
timeout: 1.0 # 可选,默认 1.0
read_timeout: 1.0 # 读取超时时间,1秒内不应答则报错
response_start_string: OK # 可选,串口应答的开始字符串,默认为OK
commands:
set_pwm:
command: "PWM {frequency}\n"
need_parse: false
prompts:
- "把PWM调到{value}"
```
指定配置文件:
比如指定加载Pico配置文件:Pico_config.yaml
```json
{
"mcpServers": {
"mcp2serial": {
"command": "uvx",
"args": [
"mcp2serial",
"--config",
"Pico" //指定配置文件名,不需要添加_config.yaml后缀
]
}
}
}
```
为了能使用多个串口,我们可以新增多个mcp2serial的服务 指定不同的配置文件名即可。
如果要接入多个设备,如有要连接第二个设备:
指定加载Pico2配置文件:Pico2_config.yaml
```json
{
"mcpServers": {
"mcp2serial2": {
"command": "uvx",
"args": [
"mcp2serial",
"--config",
"Pico2" //指定配置文件名,不需要添加_config.yaml后缀
]
}
}
}
```
### 响应解析说明
1. 简单响应(`need_parse: false`):
- 设备返回 "OK" 开头的消息表示成功
- 其他响应将被视为错误
2. 需要解析的响应(`need_parse: true`):
- 完整响应将在 `result.raw` 字段中返回
- 可以在应用层进行进一步解析
### 硬件连接
1. 将你的设备通过USB连接到电脑
2. 打开设备管理器,记下设备的COM端口号
3. 在`config.yaml`中配置正确的端口号和波特率
<div align="center">
<img src="docs/images/conn
ect.jpg" alt="硬件连接示例" width="600"/>
<p>硬件连接和COM端口配置</p>
</div>
### 启动客户端Claude 桌面版或Cline
<div align="center">
<img src="docs/images/pwm.png" alt="Cline Configuration Example" width="600"/>
<p> Example in Claude</p>
</div>
<div align="center">
<img src="docs/images/test_output.png" alt="Cline Configuration Example" width="600"/>
<p>Example in Cline</p>
</div>
### 硬件编程
firmware可以在项目仓库中下载,目前演示的是Pico的micropython代码案例。另存到Pico开发板运行即可。
### 从源码快速开始
1. 从源码安装
```bash
# 通过源码安装:
git clone https://github.com/mcp2everything/mcp2serial.git
cd mcp2serial
# 创建虚拟环境
uv venv .venv
# 激活虚拟环境
# Windows:
.venv\Scripts\activate
# Linux/macOS:
source .venv/bin/activate
# 安装开发依赖
uv pip install --editable .
```
2. 配置串口和命令:
默认不使用真实串口 用模拟串口来演示
如果你的电脑没有串口或者目前没有串口可用
可以将port参数设置为LOOP_BACK,这样就可以在命令行直接发送命令了
但同时请修改应答OK的命令的起始符需要和发送的命令一样。
比如发送LED_ON
那么应答起始符也是LED_ON
```yaml
serial:
# 串口配置
port: LOOP_BACK # 可选,如果不指定则自动查找。设置为LOOP_BACK时启用回环模式,发送什么就接收什么
baud_rate: 115200 # 可选,默认 115200
timeout: 1.0 # 可选,默认 1.0
read_timeout: 1.0 # 读取超时时间,1秒内不应答则报错
response_start_string: CMD # 可选,串口应答的开始字符串,默认为OK
commands:
# PWM控制命令
set_pwm:
command: "CMD_PWM {frequency}" # 实际发送的命令格式,server会自动添加\r\n
need_parse: false # 不需要解析响应内容
prompts:
- "把PWM调到最大"
- "把PWM调到最小"
- "请将PWM设置为{value}"
- "关闭PWM"
- "把PWM调到一半"
```
如果使用真实串口
```yaml
# config.yaml
serial:
port: COM11 # 或自动检测
baud_rate: 115200 # 可选,默认 115200
timeout: 1.0 # 可选,默认 1.0
read_timeout: 1.0 # 读取超时时间,1秒内不应答则报错
response_start_string: OK # 可选,串口应答的开始字符串,默认为OK
commands:
set_pwm:
command: "PWM {frequency}\n"
need_parse: false
prompts:
- "把PWM调到{value}"
```
### MCP客户端配置
在使用支持MCP协议的客户端(如Claude Desktop或Cline)时,需要在客户端的配置文件中添加以下内容:
直接自动安装的配置方式
源码开发的配置方式
#### 使用默认演示参数:
```json
{
"mcpServers": {
"mcp2serial": {
"command": "uv",
"args": [
"--directory",
"你的实际路径/mcp2serial", // 例如: "C:/Users/Administrator/Documents/develop/my-mcp-server/mcp2serial"
"run",
"mcp2serial"
]
}
}
}
```
#### 指定参数文件名
```json
{
"mcpServers": {
"mcp2serial": {
"command": "uv",
"args": [
"--directory",
"你的实际路径/mcp2serial", // 例如: "C:/Users/Administrator/Documents/develop/my-mcp-server/mcp2serial"
"run",
"mcp2serial",
"--config", // 可选参数,指定配置文件名
"Pico" // 可选参数,指定配置文件名,不需要添加_config.yaml后缀
]
}
}
}
```
3. 运行服务器:
```bash
# 确保已激活虚拟环境
.venv\Scripts\activate
# 运行服务器(使用默认配置config.yaml 案例中用的LOOP_BACK 模拟串口,无需真实串口和串口设备)
uv run src/mcp2serial/server.py
或
uv run mcp2serial
# 运行服务器(使用指定配置Pico_config.yaml)
uv run src/mcp2serial/server.py --config Pico
或
uv run mcp2serial --config Pico
```
## 文档
- [安装指南](./docs/zh/installation.md)
- [API文档](./docs/zh/api.md)
- [配置说明](./docs/zh/configuration.md)
## 应用场景
1. **智能家居自动化**
- 通过自然语言控制灯光、风扇等设备
- AI 根据环境自动调节设备参数
2. **工业自动化**
- 智能控制生产线设备
- 实时监控和调整工艺参数
3. **教育和研究**
- 物联网教学演示
- 硬件控制实验平台
4. **原型开发**
- 快速验证硬件控制方案
- 简化开发流程
## 🚀 项目发展规划
### 第一阶段:协议扩展
- **工业协议支持**
- MODBUS RTU/TCP
- OPC UA
- MQTT
- CoAP
- TCP/IP Socket
- **硬件接口扩展**
- I2C
- SPI
- CAN
- 1-Wire
- GPIO
### 第二阶段:MCP2Anything 平台
- **统一集成平台**
- 可视化配置界面
- 一键启用各类协议
- 实时监控仪表盘
- 设备管理系统
- **智能功能**
- 协议自动检测
- 设备自动发现
- 参数智能优化
- 异常预警系统
### 第三阶段:生态系统建设
- **插件市场**
- 协议插件
- 设备驱动
- 自定义功能模块
- 社区贡献集成
- **云服务集成**
- 设备云管理
- 远程控制
- 数据分析
- AI 训练平台
### 第四阶段:行业解决方案
- **垂直领域适配**
- 工业自动化
- 智能建筑
- 农业物联网
- 智慧城市
- **定制化服务**
- 行业协议适配
- 专业技术支持
- 解决方案咨询
- 培训服务
## 🔮 愿景展望
MCP2Serial 正在开启物联网的新篇章:
- **协议统一**: 通过 MCP2Anything 平台实现全协议支持
- **即插即用**: 一键配置,自动发现,零门槛使用
- **AI 赋能**: 深度集成 AI 能力,实现智能决策
- **开放生态**: 建立活跃的开发者社区和插件市场
## 未来展望
MCP2Serial 正在开启物联网的新篇章:
- **多协议支持**: 计划支持更多通信协议(I2C、SPI等)
- **设备生态**: 建立开放的设备支持生态系统
- **AI 增强**: 集成更多 AI 能力,提供更智能的控制逻辑
- **可视化**: 开发直观的监控和配置界面
## 相关资源
- [MCP 协议规范](https://modelcontextprotocol.io/)
- [项目文档](docs/)
- [示例代码](examples/)
- [常见问题](docs/FAQ.md)
## 参与贡献
我们欢迎各种形式的贡献,无论是新功能、文档改进还是问题报告。查看 [贡献指南](CONTRIBUTING.md) 了解更多信息。
## 许可证
本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件