返回市场
MCP命令代理服务器

MCP命令代理服务器

作者:Hormold11 星标更新:2025-03-09

项目介绍

MCP Command Proxy

一个作为CLI命令代理的MCP(模型上下文协议)服务器,特别设计用于Expo开发,但也可适应任何命令行应用程序。

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

  1. 进入你的Expo项目的目录
  2. 运行 npx mcp-command-proxy --prefix "ExpoServer" --command "expo start" --port 8383
  3. 前往Cursor设置 -> MCP -> +添加新MCP服务器,如下所示:
    add_mcp_server
  4. 将名称设为“ExpoServer”,类型设为“SSE”,URL设为 http://localhost:8383/sse
  5. 点击“保存”,你现在应该可以在Cursor中使用该MCP服务器了。如下所示: mcp_server_in_cursor

建议使用 --port 8383 标志以避免与其他服务器冲突。 另外,你还可以在 .cursorrules 文件中添加以下指令:

你可以使用MCP的getRecentLogs工具来获取Expo服务器的最新日志。如果需要,你可以使用sendKeyPress工具向正在运行的进程发送按键。

功能

  • 命令代理:通过MCP服务器运行任何CLI命令
  • 日志收集:捕获并存储来自运行进程的日志(可配置缓冲区大小)
  • 按键转发:将客户端的按键转发给正在运行的进程
  • 透明体验:最终用户看到的命令输出与直接运行时完全相同
  • 交互式命令:适用于如Expo这样的交互式CLI工具
  • MCP集成:使用MCP SDK构建,便于与Claude和其他支持MCP的AI助手集成

工作原理

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

使用场景

  • Expo开发:运行 expo start 并与其互动同时收集日志
  • 构建过程:监控构建过程并分析日志
  • 长时间运行的服务:监控服务并保持最近的日志历史
  • 远程命令执行:从远程客户端执行并监控命令

要求

  • Node.js 18+
  • TypeScript
  • pnpm(推荐)或npm

安装

# 安装依赖
pnpm install

# 构建项目
pnpm build

# 直接运行
pnpm start -- --prefix "MyServer" --command "expo start"

# 或全局安装
pnpm install -g
mcp-command-proxy --prefix "MyServer" --command "expo start"

使用

基本用法

# 使用CLI
mcp-command-proxy --prefix "ExpoServer" --command "expo start"

# 或编程方式
import { createServer } from 'mcp-command-proxy';

const server = await createServer({
  prefix: 'ExpoServer',
  command: 'expo start',
  bufferSize: 500,
  port: 8080
});

// 后续停止服务器
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)(默认:全部)
  2. sendKeyPress:向正在运行的进程发送按键

    • 参数:
      • key:要发送的键(例如:"enter", "a", "1", "space")
  3. getProcessStatus:返回进程的当前状态

    • 参数:无

示例

运行Expo Start

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

与Claude一起使用

  1. 配置Claude连接到这个MCP服务器(SSE端点:http://localhost:8080/sse)
  2. 让Claude运行Expo或其他命令
  3. Claude可以分析日志并帮助解决故障

开发

# 克隆仓库
git clone https://github.com/hormold/mcp-command-proxy.git
cd mcp-command-proxy

# 安装依赖
pnpm install

# 构建项目
pnpm build

# 在开发模式下运行
pnpm dev

许可证

MIT