🛠️ 工具先生
为Captain32和个人生产力提供集中化的工具和基础设施。
Mr Tools 是一个单体仓库,包含了 Pete 开发工作流中使用的所有命令行界面(CLI)工具和 MCP 服务器。它采用 Bun 构建,以实现快速执行和轻松维护。
建筑学
双层工具策略
基于 Anthropic的代理工具编写指南mr-tools 采用了一种两级方法:
第一级:通用CLI工具 - 灵活,探索性强
- 带有子命令的多功能工具
- 特工们使用
--help发现能力 - 适用于多样/未知的工作流程
- 示例:
gmail list,gmail search,gmail read
第二级:工作流工具 - 聚焦,优化
- 针对已知模式的专用工具
- 命名明确意图:
gmail_clerk_pin,cal_today - 执行速度更快,令牌数量更少
- 示例:
gmail_clerk_pin(只需获取PIN码,无需进一步探索)
mr-tools/
├── bin/ # All executables
│ ├── gmail # General CLI (Tier 1)
│ ├── grok
│ ├── gmail_clerk_pin # Workflow tool (Tier 2)
│ ├── cal_today
│ └── ...
├── tools/ # General CLI implementations (Tier 1)
│ ├── gmail/
│ │ ├── gmail.ts # Full-featured email CLI
│ │ ├── CLAUDE.md # AI assistant docs
│ │ └── README.md # Human docs
│ └── ...
├── workflows/ # Workflow tool implementations (Tier 2)
│ ├── email/
│ │ ├── gmail_clerk_pin.ts
│ │ └── gmail_latest_from.ts
│ ├── scheduling/
│ │ ├── cal_today.ts
│ │ └── cal_next_free.ts
│ ├── auth/
│ └── content/
├── mcps/ # MCP server sources
│ └── (future MCPs here)
├── lib/ # Shared utilities
│ └── config.ts # Centralized secrets management
├── package.json # Single dependency file
└── install-tool.sh # Global installation script为何选择运行时脚本?
以往的方法: 每个工具编译成一个56MB的二进制文件(10个工具=560MB)
当前方法: 使用Bun即时执行的微型运行时脚本
好处:
- ✅ 仓库体积小(~5MB 对比 560MB)
- ✅ 实时更新(编辑→运行,无需编译)
- ✅ 共享依赖(一个 node_modules)
- ✅ CLI工具和MCP服务器采用相同的模式
- ✅ 快速的开发迭代
安装
# Install dependencies
bun install
# Add bin/ to PATH
./install-tool.sh
# Or manually add to ~/.zshrc:
export PATH="/Users/pete/Projects/mr-tools/bin:$PATH"可用工具
沟通与社交
- Gmail - 通过OAuth管理Gmail
- “grok”在中文中可以翻译为“理解透彻”或“深刻领悟”。这个词汇源自科幻小说作家罗伯特·海因莱因(Robert A. Heinlein)的作品,用来形容一种深入且全面的理解或领悟能力 - xAI Grok聊天界面
日历与日程安排
- “cal-com”可以翻译为“加利福尼亚州计算与通信”(如果是指与加利福尼亚州相关的某个计算或通信领域或项目)或者根据具体上下文可能有其他更贴切的翻译,但基于常见理解,“cal-com”通常被理解为与加利福尼亚州(California)相关的计算(cal)和通信(com)的组合词 - Cal.com 日程安排
- gcal(谷歌日历) / 谷歌日历 - Google日历管理
地图与位置
- 谷歌地图 谷歌地图API
图像生成
- GPT图像生成器 - OpenAI图像生成
内容与出版
- 这个英文单词“typefully”并不是一个标准的或常见的英文词汇,它可能是由“type”(类型)和“fully”(完全地)组合而成的一个非标准词汇,用于表达某种特定的、完全的类型或风格。在中文中,可以将其翻译为“颇具类型特色地”或“完全类型的(方式/风格)”,具体翻译取决于上下文和使用场景。但需要注意的是,由于这不是一个标准词汇,翻译时可能需要根据具体语境进行适当调整 - 在推特/社交媒体上发帖
发展
- uploadthing(直译为“上传之物”,通常可理解为一个用于上传文件或内容的平台或功能名称,具体翻译可能需根据上下文调整) - 文件上传
- 正方形 - 平方支付
配置
所有工具均使用集中式密钥管理 ~/.config/mr-tools/secrets.json:
# Set API keys for tools
grok config set api-key "xai-..."
gmail config set client-id "..."
gmail config set client-secret "..."
google-maps config set api-key "..."
cal-com config set api-key "..."
gpt-image-gen config set api-key "sk-..."环境变量也受支持,并且具有优先权:
GROK_API_KEYGMAIL_CLIENT_ID,GMAIL_CLIENT_SECRETGOOGLE_MAPS_API_KEYCALCOM_API_KEYOPENAI_API_KEY
使用方法
所有工具均支持 --help 并且 --json 标志:
# Get help
gmail --help
grok --help
# Use tools
gmail list -n 10
grok "What are the latest trends on X?"
gcal list --from "2025-01-01" --to "2025-01-31"
google-maps geocode "1600 Amphitheatre Parkway"
# JSON output for scripting
gmail list --json | jq '.messages[0]'
cal-com bookings list --json发展
添加新工具
- 创建工具目录:
mkdir -p tools/my-tool- 创建源文件
tools/my-tool/my-tool.ts:
#!/usr/bin/env bun
import { getSecret, setSecret } from "../../lib/config";
// Your tool implementation
console.log("Hello from my-tool!");- 创建二进制文件入口点:
echo '#!/usr/bin/env bun\nimport "../tools/my-tool/my-tool.ts";' > bin/my-tool
chmod +x bin/my-tool- 测试一下:
./bin/my-tool添加一个MCP服务器
相同的模式,但位置在 mcps/ 而不是 tools/:
mkdir -p mcps/my-mcp
# Create mcps/my-mcp/my-mcp.ts
echo '#!/usr/bin/env bun\nimport "../mcps/my-mcp/my-mcp.ts";' > bin/mcp-my-mcp
chmod +x bin/mcp-my-mcp团队背景/团队环境
“Mr. Tools”可以翻译为“工具先生”或根据语境简化为“工具(人)”,但通常直接音译为“工具先生”更为常见,以保持原名的特色。不过,具体翻译还需结合上下文或品牌、产品的具体含义来确定 是Captain32团队的模具专家:
- 应用团队 (captain32-mobile) - React Native/Expo
- API团队 (captain32-api) - Cloudflare Workers(中文可译为:“(captain32-api)- Cloudflare 工作者”)
- 代理团队 (captain32-agents) - 人工智能代理服务
- 工具先生 (这个仓库) - 基础设施与工具
从工具库迁移
这个仓库替换了旧的 tool-library 一个具有更简洁、更易维护架构的代码库。有关迁移策略的完整详情,请参阅CLAUDE.md文件。
许可证
麻省理工学院(MIT)
