MCPorter:让 MCP 变成"终端里的 API"
> 来源: github.com/steipete/mcporter
> 作者: Peter Steinberger(@steipete,OpenClaw 创始人,PSPDFKit 前创始人)
> npm: mcporter v0.7.3
> 研究时间: 2026-03-29
🎯 一句话版本
MCPorter 把 MCP(Model Context Protocol)服务器变成了可以在终端直接调用的命令行工具,或者可以在 TypeScript 里像调函数一样使用的 API。一行 npx mcporter call linear.create_comment body:"搞定了" 就能调 Linear 的 MCP 接口——不用写 boilerplate,不用翻 schema。
🔧 核心功能
MCPorter 解决的问题:MCP 生态越来越大,但调用 MCP server 依然很麻烦——要配连接、要写客户端代码、要处理 OAuth。MCPorter 提供三层接口:
1. CLI — 终端直接调
# 两种语法都行
npx mcporter call linear.create_comment issueId:ENG-123 body:'Looks good!'
npx mcporter call 'linear.create_comment(issueId: "ENG-123", body: "Looks good!")'
# 列出所有已配置的 MCP server 和工具签名
npx mcporter list
# 查看特定 server 的完整 schema
npx mcporter list context7 --schema
# 连 ad-hoc HTTP 端点
npx mcporter call https://mcp.linear.app/mcp.list_issues assignee=me
输出长得像 TypeScript 头文件——可以直接复制签名来调用:
/**
* Create a comment on a specific Linear issue
* @param issueId The issue ID
* @param body The content of the comment as Markdown
*/
function create_comment(issueId: string, body: string, parentId?: string);
2. TypeScript API — 程序化调用
import { createRuntime, createServerProxy } from 'mcporter';
const runtime = await createRuntime();
const linear = createServerProxy(runtime, 'linear');
// camelCase 方法,类型安全
const result = await linear.createComment({ issueId: 'ENG-123', body: '搞定了' });
console.log(result.text());
createServerProxy() 自动把 MCP 工具暴露为 camelCase 方法,填默认值、校验必填参数,返回带 .text() / .json() / .images() 等 helper 的 CallResult。
3. 代码生成 — 生成 CLI 或类型定义
# 把 MCP server 变成独立 CLI(可 bundle/compile)
mcporter generate-cli
# 生成 .d.ts 类型定义或可运行的客户端 wrapper
mcporter emit-ts
🧩 智能特性
零配置发现
MCPorter 自动合并所有能找到的 MCP 配置:
~/.mcporter/mcporter.json ← 全局配置
./config/mcporter.json ← 项目配置
Cursor 配置 ← 自动导入
Claude Desktop/Code 配置 ← 自动导入
Codex/Windsurf/OpenCode/VS Code ← 自动导入
不用手动配置——你在 Cursor 里加的 MCP server,MCPorter 自动就能用。
守护进程管理
有状态的 MCP server(如 chrome-devtools, mobile-mcp)自动起后台 daemon:
mcporter daemon status # 查看状态
mcporter daemon start # 预热
mcporter daemon stop # 停止
自动纠错
打错工具名?MCPorter 会查服务器目录,如果编辑距离小就自动纠正,否则给出 "Did you mean ...?" 提示。
OAuth 一键登录
mcporter auth vercel # 浏览器弹出 → 登录 → 搞定
自动检测 Supabase、Vercel 等需要浏览器登录的 MCP,缓存 token。
💡 与我们的关联
1. 同一个作者
MCPorter 是 OpenClaw 创始人 steipete 自己做的。GitHub bio 写着 "Clawdfather @OpenClaw"。这不是随便一个开源项目——这是 OpenClaw 生态的核心组件。
2. OpenClaw 的 MCP 管道就靠它
OpenClaw 支持 MCP,MCPorter 就是底层的调用层。理解 MCPorter 就理解了 OpenClaw 怎么和外部工具交互。
3. 我们可以直接用
场景:
- 调试 MCP server:
npx mcporter list看所有已配置的 MCP,npx mcporter call直接测 - 脚本化 MCP 调用:Shell 脚本里
npx mcporter call比写 TypeScript 客户端快得多 - 给 Cron 任务用:需要定时调某个 MCP 工具?一行 mcporter call 搞定
- 代码生成:
emit-ts生成类型定义,IDE 自动补全
4. 和 witcheer 的 shell 脚本思路一致
昨天 witcheer 的报告里提到他有 35 个 shell 脚本调各种 API。MCPorter 本质上是同一个思路的升级版——把 MCP server 变成 shell 可调的命令,但多了类型安全、自动发现、OAuth 管理。
📊 评分
| 维度 | 评分(/10) |
|---|---|
| 实用性 | 9.0 — 直接解决 MCP 调用痛点,零配置即用 |
| 技术质量 | 8.5 — 多传输支持、daemon 管理、类型生成 |
| 文档质量 | 8.0 — README 详尽,有专门的 docs/ 目录 |
| 生态价值 | 8.5 — OpenClaw 创始人出品,生态核心组件 |
| 与我们的相关度 | 8.0 — 可直接用于调试和脚本化 MCP 调用 |
| **综合** | **8.5** |
报告由深度研究助手自动生成 | 2026-03-29