Arduino MCP服务器(简单)
一个简单的模型上下文协议(MCP)服务器,使AI代理能够与Arduino板交互进行开发和测试。
注: 该项目是在macOS上使用Cursor IDE开发和测试的。虽然它应该在其他平台上工作,但某些路径和配置可能需要针对Windows或Linux系统进行调整。
这是什么?
该项目演示了如何创建一个允许AI代理执行以下操作的MCP服务器:
- 列出可用的Arduino板
- 编译Arduino草图
- 将草图上传到板上
- 发送/接收串行消息
先决条件
- Arduino CLI已安装并配置
- Python 3.10+
- 通过USB连接的Arduino板
安装
- 直接从GitHub安装软件包:
# Install from main branch
pip install git+https://github.com/amahpour/arduino-mcp-server-simple.git
# Or install from the specific MCP-enabled branch
pip install git+https://github.com/amahpour/arduino-mcp-server-simple.git@codex/update-pyproject.toml-for-mcp-tool
# For development (editable install)
git clone https://github.com/amahpour/arduino-mcp-server-simple.git
cd arduino-mcp-server-simple
pip install -e .- 确保Arduino CLI已安装并配置:
arduino-cli version用法
启动MCP服务器
安装后,您可以通过多种方式启动服务器:
# Using the console script (recommended)
arduino-mcp-tool
# Or using module execution
python -m arduino_mcp_tool对于开发或本地测试:
# From the repository directory
python -m arduino_mcp_tool封装结构
该项目被组织为一个适当的Python包:
arduino_mcp_tool/
├── __init__.py # Main MCP server implementation
└── __main__.py # Entry point for python -m execution光标集成
该项目包括 .cursor/mcp.json 配置文件,允许Cursor用户将Arduino MCP服务器直接集成到他们的开发环境中。
该配置会自动注册Arduino MCP服务器,使您可以直接在Cursor的AI功能中访问Arduino开发工具。你可以:
- 让Cursor编译并上传Arduino草图
- 通过AI接口测试串行通信
- 获取Arduino开发工作流程的帮助
在Cursor中打开此项目后,MCP服务器将立即可用。
可用工具
list_ports()-列出所有可用的USB/串行端口ping()-简单的健康检查compile(sketch, fqbn=None, port=None)-编译Arduino草图upload(sketch, port, fqbn=None)-将草图上传到板上serial_send(port, baud, message, timeout=2)-通过串行发送消息并读取响应serial_write(port, baud, message)-通过串行发送消息,不读取响应serial_read(port, baud, timeout=2)-从串行读取传入数据,而不发送任何内容
工作流示例
- 列出可用端口以查找Arduino
- 编译草图(自动检测电路板类型)
- 上传到董事会
- 通过串行发送测试消息
示例草图
包括 sketches/echo_serial/echo_serial.ino 是一个简单的echo服务器,它:
- 接收串行输入
- 用前缀回应它
- 非常适合测试MCP服务器功能
整合
此MCP服务器可以与任何兼容MCP的AI代理或开发环境集成,以实现自动化的Arduino开发工作流程。
MCP配置
将此服务器与MCP客户端一起使用时,您可以将其配置为:
{
"mcpServers": {
"arduino": {
"command": "arduino-mcp-tool",
"args": []
}
}
}或者,如果以开发模式安装:
{
"mcpServers": {
"arduino": {
"command": "python",
"args": ["-m", "arduino_mcp_tool"]
}
}
}