关于 tinysa-mcp
tinysa-mcp 是一款实验性的 MCP 服务,可通过串口操作 TinySA。它面向需要借助 MCP 工具发送设备命令、读取版本信息或截取屏幕图像的用户。
主要功能
- 01通过串口连接 TinySA
- 02发送命令并读取响应
- 03获取固件和硬件版本
- 04截取屏幕图像并可保存
适用场景
- 01查看 TinySA 设备及版本信息
- 02向已连接的 TinySA 发送命令
- 03截取 TinySA 屏幕以供查看
MCP 相关
它向 MCP 客户端提供连接 TinySA、执行命令、获取设备信息和截取屏幕图像的工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
tinysa-mcp
通过串口操作 TinySA 的 MCP 服务
抱歉,我目前仍在试验中,无法保证它能正常运行。
概述
本项目是一个 MCP 服务,旨在通过串口操作 TinySA 设备。它利用 pyserial、httpx、numpy、Pillow 和 FastMCP 等 Python 库,提供基于工具的接口,用于连接设备、执行命令以及获取设备版本信息。
架构和线程模型
本项目同时使用基于 Tkinter 的 GUI 和 MCP 服务。由于 Tkinter 要求在主线程中运行,因此采用以下设计:
flowchart TD
subgraph MainThread
A[main()] --> B[tk.Tk() & TinySALogMonitor]
B --> C[root.mainloop()]
end
subgraph MCPThread
D[run_mcp_server(mcp_server)]
D --> E[mcp_server.run()]
end
E -- log_callback --> F[log_monitor.log_queue]
F -- root.afterで定期ポーリング --> B
D -- サーバー終了時 --> G[root.after(0, root.destroy)]
-
Tkinter GUI 在主线程中运行:
主线程初始化 Tkinter 根窗口并启动主事件循环。所有 GUI 操作都在此线程中执行。 -
MCP 服务在后台线程中运行:
MCP 服务通过 Python 的threading.Thread在单独的线程中启动。这样,服务便能与 GUI 并发处理请求。 -
通过队列进行线程安全通信:
MCP 服务(或其他后台线程)中的日志消息和其他数据通过queue.Queue发送到 GUI。GUI 使用root.after定期轮询此队列,以安全地更新显示内容。 -
优雅关闭:
MCP 服务停止时,会通过root.after(0, root.destroy)安排关闭 GUI,确保所有 Tkinter 操作都在主线程中执行。
示例(主函数):
def main():
root = tk.Tk()
log_monitor = TinySALogMonitor(root)
mcp_server = create_mcp_server(log_monitor.add_log)
mcp_thread = threading.Thread(target=run_mcp_server, args=(mcp_server,), daemon=True)
mcp_thread.start()
root.mainloop()
注意事项
- 请勿从后台线程访问 Tkinter 对象。
始终使用提供的队列和root.after进行线程安全通信。 - 此设计可确保 MCP 服务和 GUI 并发运行,同时不违反 Tkinter 的线程要求。
功能
- 发送命令并获取设备响应。
- 获取固件和硬件版本信息。
- 提供 MCP 工具,以便与其他系统集成。
- 支持捕获设备屏幕图像,并可选择带时间戳保存到文件。
MCP 工具
可用的 MCP 工具如下:
- get_version:获取 TinySA 设备的版本信息。
- execute_command:向 TinySA 设备发送命令并获取响应。
- connect:连接到指定端口上的 TinySA 设备。
- disconnect:断开 TinySA 设备的连接。
- get_device_info:获取已连接设备的详细信息。
- capture_image:捕获 TinySA 屏幕图像,并可选择带时间戳保存到文件。
使用示例
使用 MCP 客户端调用 MCP 工具。例如,要获取设备版本:
mcp call get_version --args '{"port": "COM4"}'
故障排除
- 连接问题: 确保指定的串口正确,并且你的用户具有适当的权限。
- 命令失败: 检查 MCP 服务日志(如果有)中的错误消息。
- 图像捕获: 确认设备在捕获图像时返回了足够的数据(307200 字节)。
- 有关 MCP 集成的更多信息,请参阅 Model Context Protocol 文档。
材料
如需其他文档,请参阅 material 目录;建议将文件 "USB interface.txt" 添加为 AI 知识。
许可证
本项目采用 MIT License 许可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。