mcp到pi工具
一个命令可以将任何MCP服务器转换为本机pi工具——具有自动分组、TypeBox模式和零配置。
](https://www.npmjs.com/package/mcp-to-pi-tools)  
npx mcp-to-pi-tools chrome-devtools-mcp快速开始
# Generate a pi extension from any MCP server
npx mcp-to-pi-tools chrome-devtools-mcp
# Python packages work too
npx mcp-to-pi-tools mcp-server-time --uvx
# List installed extensions
npx mcp-to-pi-tools list扩展名由pi自动发现 ~/.pi/agent/extensions/--无需注册。
它的作用
- 发现 MCP工具通过 麦克波特
- 群组 使用AI的相关工具(例如,单击+悬停+拖动→
chrome_interact) - 产生 TypeScript的pi扩展名:
- pi.registerTool() 对于每个分组工具 - 用于参数验证的TypeBox模式 - 多工具组的动作判别器
- 写 到
~/.pi/agent/extensions//
生成的扩展结构
~/.pi/agent/extensions/chrome-devtools/
├── index.ts # Pi extension with registerTool() calls
├── package.json # Manifest with MCP source info
└── README.md # Tool documentation生成工具示例
// Grouped tool: chrome_interact (wraps: click, hover, drag)
pi.registerTool({
name: "chrome_interact",
label: "Chrome Interact",
description: "Mouse interactions on page elements",
parameters: Type.Object({
action: StringEnum(["click", "hover", "drag"] as const),
uid: Type.String({ description: "Element UID from snapshot" }),
doubleClick: Type.Optional(Type.Boolean()),
}),
async execute(toolCallId, params, onUpdate, ctx, signal) {
const result = callMcp(params.action, { uid: params.uid, ... });
return { content: [{ type: "text", text: result }], details: {} };
},
});用法
生成扩展
# NPM packages
mcp2ext chrome-devtools-mcp
mcp2ext @upstash/context7-mcp
# Python packages
mcp2ext mcp-server-fetch --uvx
mcp2ext mcp-server-time --pip
# Custom command
mcp2ext --command "docker run -i mcp/fetch" --name fetch管理插件
# List installed extensions
mcp2ext list
# Remove an extension
mcp2ext remove chrome-devtools
# Regenerate from latest MCP schema (coming soon)
mcp2ext refresh chrome-devtools选项
--name Extension directory name (default: derived from package)
--output
Output path (default: ~/.pi/agent/extensions/)
--dry-run Preview generated files without writing
--force, -f Overwrite existing extension
--quiet, -q Suppress progress output
--agent Force AI agent for grouping (pi, claude, codex)
--http-url Connect to HTTP/HTTPS MCP endpoint (requires --name, --description)
--description Description for extension (required for HTTP servers)
--allow-http Allow non-localhost HTTP URLsPython/Runner选项
--uvx Use uvx runner (Python packages, no install needed)
--pip Use pip runner (requires: pip install
)
--command Use explicit command (docker, custom paths, etc.)HTTP服务器
对于公开HTTP端点的MCP服务器(如Figma MCP桌面服务器):
# Local HTTP endpoint (localhost auto-allowed)
mcp2ext --http-url http://127.0.0.1:3845/mcp --name figma --description "Figma design tools"
# HTTPS endpoints
mcp2ext --http-url https://api.example.com/mcp --name api --description "API tools"
# Non-localhost HTTP (requires explicit flag)
mcp2ext --http-url http://192.168.1.100:8080/mcp --name internal --description "Internal tools" --allow-http注: --name 和 --description 是HTTP所必需的(没有包注册表来获取元数据)。
安全: 本地主机HTTP是自动允许的。非本地主机需要HTTPS或 --allow-http.
从CLI格式迁移
如果您在中有现有工具 ~/agent-tools/,将它们迁移到扩展:
# Scan for migrateable tools
mcp2ext migrate
# Migrate all at once
mcp2ext migrate --all --cleanup
# Migrate one tool
mcp2ext migrate chrome-dev-tools --cleanup看 MIGRATION.md 查看完整的迁移指南。
配置
创建 ~/.pi/agent/mcp2ext.settings.json 对于默认值:
{
"agent": "pi"
}工具分组的工作原理
AI分析MCP工具和组相关操作:
| MCP工具 | 分组工具 | 动作值 |
|---|---|---|
| 单击、悬停、拖动 | chrome_interact | 单击、悬停、拖动 |
| take_screenshot | chrome_screenshot | (单一工具,无动作) |
| list_console_message,get_sole_message | chrome_console | 列表,获取 |
对于多工具组:
- 一
action参数添加了工具名称的枚举 - 所有工具的参数都被合并(常用的参数仍然是必需的,特定于工具的参数变为可选的)
- 执行功能分派到相应的MCP工具
故障排除
| 问题 | 修复 |
|---|---|
mcporter not found | npm install -g mcporter |
| 发现超时 | `MCPORTER_CALL_TIMEOUT=120000 mcp2ext |
| ` | |
| 无AI代理 | 无需Pi/Claude即可工作(1:1工具映射) |
| 扩展未加载 | 重新启动pi以获取新的扩展 |
______________________________________________________________________
传统:CLI包装格式
原版 mcp2cli 命令生成shell可调用的CLI脚本,而不是本机扩展。
为什么mcp2ext更适合Pi:
- 自动发现(无AGENTS.md注册)
- 无符号链接或PATH配置
- 直接工具集成(无bash层)
- 用于类型安全的TypeBox模式
何时改用mcp2cli:
- 使用没有Pi扩展系统的其他代理(Claude CLI、Codex、Gemini)
- 需要shell可访问的命令以供手动使用
- 使用通过bash调用工具的系统
CLI使用情况
# Generate CLI wrappers (legacy)
mcp2cli chrome-devtools-mcp
# Manage CLI tools
mcp2cli list
mcp2cli remove chrome-devtools
mcp2cli refreshCLI输出
~/agent-tools//
├── README.md
├── chrome-snapshot.js
└── chrome-interact.js
~/agent-tools/bin/
├── chrome-snapshot → ..//chrome-snapshot.js
└── chrome-interact → ..//chrome-interact.jsCLI包装器需要:
~/agent-tools/bin在PATH中- 在AGENTS.md中注册
- 通过bash工具调用Shell
看 CLI文档 对于传统格式。
______________________________________________________________________
贡献
欢迎在GitHub上发布PR和问题。
许可证
麻省理工学院
