TCP套接字MCP服务器
   ](https://badge.fury.io/py/TcpSocketMCP) ](https://pepy.tech/projects/tcpsocketmcp) 
一种模型上下文协议(MCP)服务器,提供原始TCP套接字访问,使AI模型能够使用原始TCP套接字直接与网络服务交互。 支持多个并发连接,缓冲响应数据并触发自动响应。
动机和背景
许多网络服务和物联网设备通过现有基于HTTP的MCP服务器未涵盖的原始TCP协议进行通信。TcpSocketMCP启用:
- 与嵌入式设备和物联网系统的直接交互
- 网络协议调试与测试
- 没有HTTP包装器的遗留系统集成
- 协议逆向工程与分析
- 通过触发模式自动响应(适用于IRC、telnet、自定义协议)
这解决了几个社区成员所表达的对低级网络访问的需求,特别是对于工业自动化、物联网开发和网络安全测试场景。
演示
*询问设备以弄清楚它是什么*
*向设备发送数据*
*TCP交互的示例输出*
安装和设置
从PyPI安装
# Install with pip
pip install TcpSocketMCP
# Install with uv (recommended)
uv add TcpSocketMCP
# Add to Claude Code (recommended)
claude mcp add rawtcp -- uvx TcpSocketMCP适用于克劳德桌面
将服务器添加到Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
选项1:使用已安装的软件包(推荐)
{
"mcpServers": {
"tcp-socket": {
"command": "TcpSocketMCP",
"env": {}
}
}
}选项2:来源
{
"mcpServers": {
"tcp-socket": {
"command": "python",
"args": ["/path/to/tcp-socket-mcp/run.py"],
"env": {}
}
}
}开发设置
# Clone the repository
git clone https://github.com/kaseyk/tcp-socket-mcp.git
cd tcp-socket-mcp
# Install with uv (recommended)
uv pip install -e .
# Or install with pip
pip install -e .
# Run the server directly
python run.py
# Or use the command
TcpSocketMCP可用工具
通过MCP配置后,AI模型可以使用以下工具:
核心连接工具
tcp_connect
打开与任何主机的TCP连接:端口
- 返回a
connection_id用于后续操作 - 支持预注册触发器的自定义connection_id
- 例子:
tcp_connect("example.com", 80)
tcp_send
通过已建立的连接发送数据
- 编码选项:
utf-8,hex(推荐二进制),base64 - 十六进制格式:素色双,如
"48656C6C6F"为“你好” - 终结者:可选十六进制后缀,如
"0D0A"对于CRLF
tcp_read_buffer
从连接缓冲区读取接收到的数据
- 发送后可能无法立即获得数据
- 缓冲区存储所有接收到的数据,直到清除
- 支持
index/count部分阅读 - 格式选项:
utf-8,hex,base64
tcp断开连接
关闭连接并释放资源
- 完成后始终关闭连接
- 所有触发器自动删除
高级功能
tcp_set_trigger
设置模式匹配的自动响应
- 预注册:在连接之前设置触发器以立即激活
- 支持带有捕获组的正则表达式模式(
$1,$2) - 当模式匹配时,响应会自动触发
- 非常适合协议握手(IRC PING/PONG等)
tcp_connect_and_send
在一个原子操作中组合连接和发送
- 对时间敏感的协议至关重要
- 可用于即时握手或抓取横幅
- 返回connection_id以进行进一步操作
实用工具
- tcp_list_connections:查看所有具有统计信息的活动连接
- tcp_connection_info:获取有关特定连接的详细信息
- tcp_baffer_info:在不读取数据的情况下检查缓冲区统计信息
- tcp_clear_buffer:清除缓冲区中的接收数据
- tcp_remove_trigger:删除特定的自动响应触发器
使用示例
基本TCP通信
# Connect to a service
conn_id = tcp_connect("example.com", 80)
# Send data (hex encoding recommended for protocols)
tcp_send(conn_id, "474554202F20485454502F312E310D0A", encoding="hex") # GET / HTTP/1.1\r\n
# Read response (may need to wait for data)
response = tcp_read_buffer(conn_id)
# Clean up
tcp_disconnect(conn_id)自动化协议处理
# Pre-register trigger for IRC PING/PONG
tcp_set_trigger("irc-conn", "ping-handler", "^PING :(.+)", "PONG :$1\r\n")
# Connect with pre-registered triggers
tcp_connect("irc.server.com", 6667, connection_id="irc-conn")
# PING responses now happen automatically!使用二进制协议
# Use hex encoding for precise byte control
tcp_send(conn_id, "0001000400000001", encoding="hex") # Binary protocol header
# Read response in hex for analysis
response = tcp_read_buffer(conn_id, format="hex")重要提示
行结尾的十六进制编码
许多文本协议(HTTP、SMTP、IRC)都需要特定的行尾。使用十六进制编码来避免JSON转义问题:
# Common hex sequences:
# 0D0A = \r\n (CRLF) - HTTP, SMTP, IRC
# 0A = \n (LF) - Unix line ending
# 0D0A0D0A = \r\n\r\n - HTTP header terminator
# 00 = Null byte - Binary protocols时间研究
- 网络响应不是即时使用的
tcp_buffer_info检查数据 - 考虑实现延迟较小的重试逻辑
- 缓冲区累积所有接收到的数据-需要时清除
🧪 测试与质量
TcpSocketMCP通过全面测试保持企业级质量:
测试覆盖率
- 85%覆盖率 (超过80%的目标)
- 80+综合测试 所有组件
- 跨平台测试 (Ubuntu、Windows、macOS)
- Python 3.10-3.12支持
质量门
- 自动化CI/CD GitHub操作
- 安全扫描 土匪与安全
- 代码质量分析 Ruff和MyPy
- 性能监控 复杂性分析
在本地运行测试
# Install with test dependencies
uv pip install -e .
uv pip install pytest pytest-asyncio pytest-cov
# Run full test suite with coverage
uv run pytest tests/ --cov=src/TcpSocketMCP --cov-report=term-missing
# Quick test run
uv run pytest看 测试.md 获取全面的测试文档。
许可证
麻省理工学院
