命令行代理服务

MCP命令代理服务器是一个专为Expo开发设计的CLI命令代理工具,可适用于任何命令行应用程序,提供命令代理、日志收集和按键转发功能。

  • by Hormold
  • TypeScript
  • 本地部署
  • 12 星标
  • 更新于
在 GitHub 查看 Hormold/mcp-command-proxy

使用说明

MCP命令代理

MCP(模型上下文协议)服务器,充当CLI命令的代理,专门为Expo开发设计,但适用于任何命令行应用程序。

如何在Cursor中使用(Expo示例)

  1. 转到您的世博会项目目录
  2. 跑 npx mcp-command-proxy --prefix "ExpoServer" --command "expo start" --port 8383
  3. 转到光标设置->MCP->+添加新的MCP服务器,如下所示:
  4. 将名称设置为“ExpoServer”,键入“SSE”,URL设置为 http://localhost:8383/sse
  5. 单击“保存”,您现在应该可以在Cursor中使用MCP服务器。这样地:

建议使用 --port 8383 标记以避免与其他服务器冲突。 此外,您还可以将以下指令添加到.cursorules文件中:

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助手集成

运作原理

  1. 服务器在伪终端(PTY)中启动指定命令
  2. 所有stdout/stderr输出为:
    • 实时流式传输到客户端
    • 存储在循环缓冲区中(大小可配置,默认300行)
  3. 客户端的按键被转发到正在运行的进程
  4. 服务器提供以下工具:
    • 查看收集的日志
    • 将按键发送到进程
    • 获取进程的当前状态

用例

  • 世博发展:运行 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工具:

  1. getRecentLogs:返回缓冲区中的最新日志

    • 参数:
      • limit (可选):要返回的日志数(默认值:100)
      • types (可选):要包含的日志类型(stdout、stderr、system)(默认值:all)
  2. sendKeyPress:向正在运行的进程发送按键

    • 参数:
      • key:要发送的键(例如“enter”、“a”、“1”、“空格”)
  3. getProcessStatus:返回进程的当前状态

    • 参数:无

例子

世博会开幕

mcp-command-proxy -p "ExpoServer" -c "expo start" -b 500

与克劳德一起使用

  1. 配置Claude以连接到此MCP服务器(SSE端点:http://localhost:8080/sse)
  2. 让Claude运行Expo或其他命令
  3. 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

许可证

麻省理工学院