
想象一个世界,每部手机用不同的充电线,每个接口形状都不一样。你出差要带一包线,每次还得猜"这根是给哪个设备的"。
这个场景听起来荒谬,但它正是 AI 工具生态 过去两年的真实写照。
每个 AI 工具开发商都推自己的 MCP 服务器——Linear 有 Linear 的项目工具,Vercel 有 Vercel 的部署工具,Chrome DevTools 有 Chrome 的调试工具。每套工具自己一套配置、自己一套认证、自己一套调用方式。AI 开发者想把这些能力接进来?先读三天的文档,再踩一圈的坑。
MCP(Model Context Protocol)就是为了解决这件事诞生的——像 USB-C 统一充电口一样,统一 AI 和外部工具的连接协议。由 Anthropic 主推,Claude 支持,Cursor、Cline、Windsurf、VS Code 纷纷跟进,一时间似乎 USB-C 时刻真的要来了。
但协议标准化只是第一步。真正让人用起来的,是工具链。 USB-C 之所以普及,不光是因为欧盟强制要求,更是因为你买一根线,所有设备都能用——不需要查手册,不需要对型号。
mcporter 做的,就是这件事:让 MCP 从"我知道有这东西"变成"我真的在用"。

零配置发现:已经装好的,直接用
MCP 服务器最大的门槛,从来不是"会不会用",而是"去哪找"。
你在 Cursor、Claude Code/Desktop、Codex、Windsurf 里配置了一堆 MCP 服务器,但这些配置散落在各个工具的独立配置文件里。AI 开发者想用?你得先知道去哪读这些配置,再搞清楚每个服务器暴露了哪些工具。
mcporter 的 `createRuntime()` 干的第一件事,就是自动合并所有配置来源——从你的 home 目录配置、到 Cursor 配置、Claude 配置、VS Code 配置,全部一次性读进来。你不需要改任何文件,不需要做任何配置,运行一行命令,所有已配置的 MCP 服务器一目了然:
npx mcporter list
输出长这样:
linear - Hosted Linear MCP; exposes issue search, create, and workflow tooling.
23 tools · 1654ms · HTTP https://mcp.linear.app/mcp
vercel - Vercel MCP (requires OAuth).
[tools exposed by Vercel]
context7 - Library docs search.
[tools for querying React, Vue, etc. documentation]
23 个工具、响应时间 1654ms、HTTP 地址一目了然。 这就是"零配置发现"——你装了什么,mcporter 就知道什么。不多,不少。

调用工具:比写代码更简单
光"发现"还不够,关键是"用起来"。
传统方式下,你想让 AI 调用 Linear 的评论创建功能,得先看 Linear MCP 的文档,搞清楚认证怎么过、参数怎么传、HTTP 请求怎么构造。就算搞清楚了,写出来的代码也是一堆胶水代码——读配置、建连接、处理 OAuth、调用、关闭连接,每个工具都要写一遍。
mcporter 把这堆东西压缩成一行命令:
npx mcporter call linear.create_comment issueId:ENG-123 body:'Looks good!'
或者用函数调用风格:
npx mcporter call 'linear.create_comment(issueId: "ENG-123", body: "Looks good!")'
AI 工具名字自动补全,参数名称自动补全,连参数顺序都给你标出来。拼写错了?mcporter 会告诉你 "Did you mean create_comment?"——打字机式的容错体验。
你甚至可以直接用 URL 调用任何 MCP 端点,不需要先注册到配置里:
npx mcporter list https://mcp.linear.app/mcp --all-parameters
这个能力叫 ad-hoc 连接——临时用一下,不需要持久化配置。临时调试、一次性调用、测试新服务器,全都是一行命令搞定。

TypeScript typed API:给 AI 看的接口定义
CLI 解决的是"人用"的问题。但 AI Agent 需要的是编程接口。
mcporter 的 TypeScript API 把这个体验也做到了极致:
import { createRuntime, createServerProxy } from 'mcporter';
const runtime = await createRuntime();
const linear = createServerProxy(runtime, 'linear');
// 工具名字直接是驼峰法方法名
const docs = await linear.search_documentation({ query: 'automations' });
// 返回结果有 .text() / .markdown() / .json() / .images() 多种格式
console.log(docs.json());
每个工具的参数、返回值、类型定义全部由 mcporter 从 MCP 服务器的 schema 自动生成,不需要手写任何类型声明。AI 在调用的时候,拿到的不是"泛型的 JSON",而是带完整类型的函数签名——就像 IDE 给你自动补全一样。
还有一招更狠的:`mcporter emit-ts` 可以把整个 MCP 服务器的接口导出成 `.d.ts` 类型文件,AI 开发者直接引用进项目,调用工具就像调用本地函数一样安全。
认证、守护进程、录制回放:生产级的细节
工具要真正进生产环境,光有 CLI 不够。
OAuth 是很多 MCP 服务器的标配——Vercel、Supabase 这些服务需要浏览器登录授权。mcporter 处理好了这件事:`mcporter auth vercel` 会自动启动 OAuth 流程,token 自动缓存,自动刷新。你不需要写任何 OAuth 代码。
守护进程(Daemon) 是另一个关键能力。Chrome DevTools 这类有状态的 MCP 服务器,每次启动都要重建连接,开销很大。mcporter 的守护进程模式让这些服务器保持连接,AI 随时调用不需要等待启动时间。
录制和回放功能对调试来说是神器:`mcporter record` 把一次 MCP 调用的完整 JSON-RPC 流量录制成 NDJSON 文件,`mcporter replay` 可以随时重放这些流量,用于离线调试或者脱敏复现。
# 录制
mcporter record --output session.ndjson
# 回放(不需要真实服务器)
mcporter replay session.ndjson
并行安全也是很多人会踩的坑:多个 AI Agent 同时往配置文件里写东西,常见的结果是互相覆盖。mcporter 的写入操作全部是序列化的、原子化的——多个 Agent 同时跑也不会互相踩脚。
工具碎片化时代,需要一个"万能转接头"
过去两年 MCP 生态经历了爆发式增长。Anthropic 推出协议,Cursor 接入了几十个 MCP 服务器,linear、vercel、context7、shadcn 纷纷发布自己的 MCP 实现。每个工具都在建设自己的孤岛。
mcporter 的价值不是取代这些孤岛,而是在孤岛之间架桥。零配置发现意味着你不需要为了 mcporter 再做任何配置,ad-hoc 连接意味着临时需求不需要持久化代价,TypeScript typed API 意味着 AI 代码可以像人写的一样类型安全。
68,117 次下载——这个数字背后,是大量开发者真的在用 mcporter 作为日常工具,而不是尝鲜之后束之高阁。
MCP 的 USB-C 时刻,不光需要协议标准,还需要让这个标准真正好用的工具链。mcporter 正在做的事,就是让"USB-C for AI"不再是一句口号。
夜雨聆风