MCP命令代理
一个代理服务器,通过模型上下文协议(MCP)使人工智能助手能够运行并与Expo等命令行应用程序交互,捕获日志并允许按键转发。
服务介绍
MCP 命令代理
一个作为 CLI 命令代理的 MCP(模型上下文协议)服务器,专为 Expo 开发设计,但也可适用于任何命令行应用程序。
如何在 Cursor 中使用(以 Expo 为例)
- 进入你的 Expo 项目目录
- 运行
npx mcp-command-proxy --prefix "ExpoServer" --command "expo start" --port 8383 - 转到 Cursor 设置 -> MCP -> + 添加新的 MCP 服务器,如下所示:

- 将名称设置为 "ExpoServer",类型设置为 "SSE",URL 设置为
http://localhost:8383/sse - 点击“保存”,现在你应该可以在 Cursor 中使用这个 MCP 服务器了。如下所示:

建议使用 --port 8383 标志来避免与其他服务器冲突。
此外,你还可以将以下指令添加到 .cursorrules 文件中:
You can use MCP getRecentLogs tool to get the most recent logs from Expo server. And if needed, you can send key presses to the running process using sendKeyPress tool.
功能
- 命令代理:通过 MCP 服务器运行任何 CLI 命令
- 日志收集:捕获并存储来自运行进程的日志(可配置缓冲区大小)
- 按键转发:将客户端的按键转发给运行中的进程
- 透明体验:最终用户看到的命令输出与直接运行时完全相同
- 交互式命令:支持如 Expo 这样的交互式 CLI 工具
- MCP 集成:使用 MCP SDK 构建,便于与 Claude 和其他支持 MCP 的 AI 助手集成
工作原理
- 服务器在一个伪终端 (PTY) 中启动指定的命令
- 所有的 stdout/stderr 输出:
- 实时流式传输到客户端
- 存储在一个循环缓冲区中(可配置大小,默认 300 行)
- 客户端的按键被转发给正在运行的进程
- 服务器提供工具:
- 查看收集的日志
- 向进程发送按键
- 获取进程的当前状态
使用场景
- Expo 开发:运行
expo start并在收集日志的同时与其交互 - 构建过程:监控构建过程并分析日志
- 长时间运行的服务:监控服务并保持最近的日志历史记录
- 远程命令执行:从远程客户端执行和监控命令
要求
- Node.js 18+
- TypeScript
- pnpm(推荐)或 npm
安装
# Install dependencies
pnpm install
# Build the project
pnpm build
# Run directly
pnpm start -- --prefix "MyServer" --command "expo start"
# Or install globally
pnpm install -g
mcp-command-proxy --prefix "MyServer" --command "expo start"
使用
基本用法
# Using the CLI
mcp-command-proxy --prefix "ExpoServer" --command "expo start"
# Or programmatically
import { createServer } from 'mcp-command-proxy';
const server = await createServer({
prefix: 'ExpoServer',
command: 'expo start',
bufferSize: 500,
port: 8080
});
// To stop the server later
server.stop();
选项
--prefix, -p:服务器的名称/前缀(默认:"CommandProxy")--command, -c:要运行的命令(必需)--buffer-size, -b:内存中保留的日志行数(默认:300)--port:HTTP 服务器端口(默认:8080)--help, -h:显示帮助
MCP 集成
此服务器实现了以下 MCP 工具:
-
getRecentLogs: 从缓冲区返回最近的日志- 参数:
limit(可选): 要返回的日志数量(默认:100)types(可选): 要包含的日志类型(stdout, stderr, system)(默认:全部)
- 参数:
-
sendKeyPress: 向正在运行的进程发送按键操作- 参数:
key: 要发送的键(例如:"enter", "a", "1", "space")
- 参数:
-
getProcessStatus: 返回进程的当前状态- 参数: 无
示例
运行 Expo Start
mcp-command-proxy -p "ExpoServer" -c "expo start" -b 500
与 Claude 一起使用
- 配置 Claude 以连接到此 MCP 服务器(SSE 端点:http://localhost:8080/sse)
- 请求 Claude 运行 Expo 或其他命令
- Claude 可以分析日志并帮助解决故障问题
开发
# Clone the repository
git clone https://github.com/hormold/mcp-command-proxy.git
cd mcp-command-proxy
# Install dependencies
pnpm install
# Build the project
pnpm build
# Run in development mode
pnpm dev
许可证
MIT