MCP Agent 命令行界面 (CLI)
](https://hub.docker.com/r/wholelottahoopla/rarb) 
一个命令行工具,用于连接到MCP(模型上下文协议)服务器,并通过OpenAI的API使用AI模型执行提示。
特点/特性
- MCP 集成通过HTTP传输连接到MCP服务器
- 由人工智能驱动执行具有工具调用能力的提示
- 多种模式无头模式、单提示模式和交互式模式
- 逐步记录工具调用的详细输出及结果
- 优雅关闭正确处理SIGINT和SIGTERM信号
- Docker 支持Docker Hub 上提供预构建的多架构镜像
- 持续集成/持续交付(CI/CD)使用GitHub Actions实现每次提交的自动构建
先决条件
从以下选项中选择一个:
- Node.jsv22或更高版本
- Docker最新版本
此外:
- OpenAI API密钥
- 一个MCP服务器正在运行(默认地址:http://localhost:3000/mcp)
安装
选项1:Node.js(推荐)
git clone https://github.com/r33drichards/rarb.git
cd rarb
npm install选项2:Docker
从Docker Hub拉取(推荐):
docker pull wholelottahoopla/rarb:latest或者本地构建:
git clone https://github.com/r33drichards/rarb.git
cd rarb
docker build -t wholelottahoopla/rarb:latest .可用标签:
latest- 来自主分支的最新构建- `
- 特定的提交版本(例如。,abc123def456...`)
配置
将您的OpenAI API密钥设置为环境变量:
export OPENAI_API_KEY="your-api-key-here"或者通过它传递 --api-key 运行脚本时设置标志。
用法
基本用法
Node.js:
node index.jsDocker:
docker run --rm \
-e OPENAI_API_KEY="your-key" \
--network host \
wholelottahoopla/rarb:latest命令行选项
-u, --url- MCP服务器URL(默认:http://localhost:3000/mcp)-m, --model- 要使用的AI模型(默认:gpt-4o)- `-p, --prompt
` - 提示执行
--headless- 以无头模式运行(自主执行)--max-steps- 最大步数(默认:10)--api-key- OpenAI API密钥(环境变量的替代方案)
示例
交互模式
Node.js:
node index.jsDocker:
docker run -it --rm \
-e OPENAI_API_KEY="your-key" \
--network host \
wholelottahoopla/rarb:latest \
--url "http://localhost:8080/mcp"单一提示
Node.js:
node index.js \
--prompt "go to craigslist and find free things in sf posted today"Docker:
docker run --rm \
-e OPENAI_API_KEY="your-key" \
--network host \
wholelottahoopla/rarb:latest \
--prompt "go to craigslist and find free things in sf posted today"无头模式(无界面模式)并输出文件
Node.js:
node index.js \
--headless \
--prompt "go to craigslist and find free things in sf posted today and write to items.csv"带有卷挂载的Docker:
docker run --rm \
-e OPENAI_API_KEY="your-key" \
--network host \
-v $(pwd)/output:/output \
wholelottahoopla/rarb:latest \
--headless \
--url "http://localhost:8080/mcp" \
--prompt "go to craigslist and find free things in sf posted today and write to /output/items.csv"自定义MCP服务器
Node.js:
node index.js \
--url "http://localhost:8080/mcp" \
--prompt "your prompt here"不同的模型
Node.js:(直接翻译为中文即“Node.js:”,不过通常在中文语境下,我们直接使用“Node.js”这一名称,无需额外翻译冒号后的内容,因为冒号在此处仅表示标题或名称的分隔,不承载实际翻译意义。)
node index.js \
--model "gpt-4-turbo" \
--prompt "your prompt here"使用 Docker Compose
创建一个 .env 请将包含您API密钥的文件:
echo "OPENAI_API_KEY=your-key-here" > .env然后运行:
docker-compose up执行模式
- 交互模式 (当未给出提示时的默认值)
- 为持续对话提供一个REPL(读取-求值-打印循环)环境 - 输入提示并交互式地获取响应 - 类型 exit 或者 quit 停止
- 单提示模式 (与
-p标志)
- 执行给定的提示 - 然后进入交互模式
- 无头模式 (与……一起
--headless标志)
- 自主执行单个提示 - 完成后退出 - 需要 -p 旗帜
示例用例
来自 gist 的原始提示——在 Craigslist 上寻找免费物品:
Node.js:
node index.js \
--url "http://localhost:8080/mcp" \
--headless \
--prompt "go to craigslist and find free things in sf posted today and then write the info to a csv in items.csv only include interesting things, if its junk i don't care. include the urls in the output. if already in items.csv don't include it twice"Docker:
docker run --rm \
-e OPENAI_API_KEY="your-key" \
--network host \
-v $(pwd)/output:/output \
wholelottahoopla/rarb:latest \
--url "http://localhost:8080/mcp" \
--headless \
--prompt "go to craigslist and find free things in sf posted today and write to /output/items.csv only include interesting things, include the urls"这将会:
- 连接到MCP服务器
- 使用现有工具抓取Craigslist上的信息
- 筛选旧金山有趣的免费物品
- 将结果写入包含URL的CSV文件
- 避免重复
输出
该工具显示:
- 连接状态
- 来自MCP服务器的可用工具
- 逐步执行,包含工具调用和结果
- 最终回复文本
- 使用统计信息(标记数、步骤数等)
发展
Node.js:
npm install
node index.jsDocker 开发:
docker build -t wholelottahoopla/rarb:dev .
docker run --rm -it \
-e OPENAI_API_KEY="your-key" \
--network host \
wholelottahoopla/rarb:devDocker 详情
构建形象
docker build -t wholelottahoopla/rarb:latest .使用环境变量运行
docker run --rm \
-e OPENAI_API_KEY="your-key" \
wholelottahoopla/rarb:latest --help输出文件的卷挂载
# Create output directory
mkdir -p output
# Run with volume mount
docker run --rm \
-e OPENAI_API_KEY="your-key" \
-v $(pwd)/output:/output \
--network host \
wholelottahoopla/rarb:latest \
--url "http://localhost:8080/mcp" \
--prompt "your prompt that writes to /output/file.csv"Docker Compose
这个 docker-compose.yml 该文件提供了一种运行代理的简便方法:
- 创建一个
.env文件:
OPENAI_API_KEY=your-key-here- 编辑
docker-compose.yml自定义命令
- 运行:
docker-compose up故障排除
API密钥错误:
- 确保
OPENAI_API_KEY被设定或通过--api-key - 对于Docker:通过
-e OPENAI_API_KEY="your-key"
MCP服务器连接失败:
- 验证MCP服务器是否正在运行
- 用(工具/方法)检查该URL
--url旗帜 - 对于Docker:使用
--network host访问本地主机服务 - 或者使用
host.docker.internal而不是localhost在URL中
Docker 文件访问:
- 使用卷挂载(
-v) 从主机访问文件 - 将输出文件写入挂载的目录
许可证
原始剧本来自 要点;精髓;概要
