English | 简体中文
<div align="center"> <img src="docs/images/logo.png" alt="mcp2tcp Logo" width="200"/> <p>通过自然语言控制硬件,开启物联网新纪元</p> </div>Mcp2tcp 将 TCP 设备连接到 AI 大模型项目,通过模型上下文协议(MCP)无缝链接物理世界与 AI 大模型。最终实现:
智能 TCP 通信
MCP 协议集成
MCP2TCP 支持所有实现了 MCP 协议的客户端,包括:
| 客户端 | 功能支持 | 描述 |
|---|---|---|
| Claude Desktop | 全部支持 | 推荐使用,支持所有 MCP 功能 |
| Continue | 全部支持 | 优秀的开发工具集成 |
| Cline | 资源+工具 | 支持多个 AI 提供商 |
| Zed | 基础支持 | 支持提示词命令 |
| Sourcegraph Cody | 资源支持 | 通过 OpenCTX 集成 |
| Firebase Genkit | 部分支持 | 支持资源列表和工具 |
得益于灵活的客户端支持,mcp2tcp 可以协同多个 AI 模型:
Python 3.11 或更高版本 Claude Desktop 或 Cline
下载 install.py
python install.py
# 下载安装脚本
curl -O https://raw.githubusercontent.com/mcp2everything/mcp2tcp/main/install_macos.py
# 运行安装脚本
python3 install_macos.py
# 下载安装脚本
curl -O https://raw.githubusercontent.com/mcp2everything/mcp2tcp/main/install_ubuntu.py
# 运行安装脚本
python3 install_ubuntu.py
安装脚本将自动完成以下操作:
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 将被自动配置,无需此步骤。 使用默认配置文件:
{
"mcpServers": {
"mcp2tcp": {
"command": "uvx",
"args": [
"mcp2tcp"
]
}
}
}
注意:修改配置后,需要重启 Cline 或 Claude 客户端软件
配置 TCP 和命令: 请注意,以下配置默认为 COM11,需要根据实际情况进行修改
# config.yaml
tcp:
# TCP服务器配置
remote_ip: "127.0.0.1" # 远端IP地址
port: 9999 # 端口号
connect_timeout: 3.0 # 连接超时时间,单位为秒
receive_timeout: 2.0 # 接收超时时间,单位为秒
communication_type: "client" # 通信类型,client或server
response_start_string: "CMD" # 可选,TCP应答的开始字符串,默认为OK
commands:
# PWM控制命令
set_pwm:
command: "CMD_PWM {frequency}" # frequency为0-100的整数,表示PWM占空比
need_parse: false # 不需要解析响应内容
data_type: "ascii" # 数据类型,ascii或hex
parameters:
- name: "frequency"
type: "integer"
description: "PWM频率值 (0-100)"
required: true
prompts:
- "把PWM调到最大 (frequency=100)"
- "把PWM调到最小 (frequency=0)"
- "请将PWM设置为{frequency} (0-100的整数)"
- "关闭PWM (frequency=0)"
- "把PWM调到一半 (frequency=50)"
配置文件(config.yaml)可以放置在以下位置:
用户主目录(推荐用于个人使用)
# Windows系统
C:\Users\用户名\.mcp2tcp\config.yaml
# macOS系统
/Users/用户名/.mcp2tcp/config.yaml
# Linux系统
/home/用户名/.mcp2tcp/config.yaml
.mcp2tcp 目录
# Windows系统(在命令提示符中)
mkdir "%USERPROFILE%\.mcp2tcp"
# macOS/Linux系统
mkdir -p ~/.mcp2tcp
在 config.yaml 中添加自定义命令:
使用真实 TCP
# config.yaml
# PICO信息查询命令
get_pico_info:
command: "CMD_PICO_INFO" # 实际发送的命令格式,server会自动添加\r\n
need_parse: true # 需要解析响应内容
data_type: "ascii" # 数据类型,ascii或hex
prompts:
- "查询Pico板信息"
- "显示开发板状态"
指定配置文件: 例如,指定加载 Pico 配置文件:Pico_config.yaml
{
"mcpServers": {
"mcp2tcp": {
"command": "uvx",
"args": [
"mcp2tcp",
"--config",
"Pico" //指定配置文件名,不需要添加_config.yaml后缀
]
}
}
}
为了使用多个 TCP,我们可以添加多个 mcp2tcp 服务并指定不同的配置文件名。 如果需要连接多个设备,并且需要连接第二个设备: 指定加载 Pico2 配置文件:Pico2.config.yaml
{
"mcpServers": {
"mcp2tcp2": {
"command": "uvx",
"args": [
"mcp2tcp",
"--config",
"Pico2" //指定配置文件名,不需要添加_config.yaml后缀
]
}
}
}
在开始使用之前,建议进行测试以确保一切正常。
首先,在测试目录下启动 TCP 服务器以模拟硬件设备:
# 进入项目目录
cd tests
# 启动测试服务器
python tcp_server.py
服务器将在本地启动并监听 9999 端口。您将看到类似以下的输出:
TCP server started on 127.0.0.1:9999
Waiting for connections...
# 通过源码安装:
git clone https://github.com/mcp2everything/mcp2tcp.git
cd mcp2tcp
# 创建虚拟环境
uv venv .venv
# 激活虚拟环境
# Windows:
.venv\Scripts\activate
# Linux/macOS:
source .venv/bin/activate
# 安装开发依赖
uv pip install --editable .
如果使用真实 TCP
# config.yaml
tcp:
# TCP服务器配置
remote_ip: "127.0.0.1" # 远端IP地址
port: 9999 # 端口号
connect_timeout: 3.0 # 连接超时时间,单位为秒
receive_timeout: 2.0 # 接收超时时间,单位为秒
communication_type: "client" # 通信类型,client或server
response_start_string: "CMD" # 可选,TCP应答的开始字符串,默认为OK
commands:
# PWM控制命令
set_pwm:
command: "CMD_PWM {frequency}" # frequency为0-100的整数,表示PWM占空比
need_parse: false # 不需要解析响应内容
data_type: "ascii" # 数据类型,ascii或hex
parameters:
- name: "frequency"
type: "integer"
description: "PWM频率值 (0-100)"
required: true
prompts:
- "把PWM调到最大 (frequency=100)"
- "把PWM调到最小 (frequency=0)"
- "请将PWM设置为{frequency} (0-100的整数)"
- "关闭PWM (frequency=0)"
- "把PWM调到一半 (frequency=50)"
当使用支持 MCP 协议的客户端(如 Claude Desktop 或 Cline)时,需要在客户端配置文件中添加以下内容: 直接自动安装配置方法 源代码开发配置方法
{
"mcpServers": {
"mcp2tcp": {
"command": "uv",
"args": [
"--directory",
"你的实际路径/mcp2tcp", // 例如: "C:/Users/Administrator/Documents/develop/my-mcp-server/mcp2tcp"
"run",
"mcp2tcp"
]
}
}
}
{
"mcpServers": {
"mcp2tcp": {
"command": "uv",
"args": [
"--directory",
"你的实际路径/mcp2tcp", // 例如: "C:/Users/Administrator/Documents/develop/my-mcp-server/mcp2tcp"
"run",
"mcp2tcp",
"--config", // 可选参数,指定配置文件名
"Pico" // 可选参数,指定配置文件名,不需要添加_config.yaml后缀
]
}
}
}
配置文件(config.yaml)可以放置在不同位置,程序将按以下顺序搜索:
./config.yamlC:\Projects 运行程序,它将搜索 C:\Projects\config.yaml# Windows系统
C:\Users\用户名\.mcp2tcp\config.yaml
# macOS系统
/Users/用户名/.mcp2tcp/config.yaml
# Linux系统
/home/用户名/.mcp2tcp/config.yaml
.mcp2tcp 目录
# Windows系统(在命令提示符中)
mkdir "%USERPROFILE%\.mcp2tcp"
# macOS/Linux系统
mkdir -p ~/.mcp2tcp
# Windows系统(需要管理员权限)
C:\ProgramData\mcp2tcp\config.yaml
# macOS/Linux系统(需要root权限)
/etc/mcp2tcp/config.yaml
# Windows系统(以管理员身份运行)
mkdir "C:\ProgramData\mcp2tcp"
# macOS/Linux系统(以root身份运行)
sudo mkdir -p /etc/mcp2tcp
sudo chown root:root /etc/mcp2tcp
sudo chmod 755 /etc/mcp2tcp
程序将按上述顺序搜索配置文件,并使用找到的第一个有效配置文件。根据需求选择适当的位置:
# 确保已激活虚拟环境
.venv\Scripts\activate
# 运行服务器(使用默认配置config.yaml 案例中用的LOOP_BACK 模拟TCP,无需真实TCP和TCP设备)
uv run src/mcp2tcp/server.py
或
uv run mcp2tcp
# 运行服务器(使用指定配置Pico_config.yaml)
uv run src/mcp2tcp/server.py --config Pico
或
uv run mcp2tcp --config Pico