
- / — stdio 传输 - — streamable-http 传输 - — remote MCP(streamable-http,需公网 HTTPS /mcp 或 Secure MCP Tunnel) - — streamable-http 传输
概览
- / — stdio 传输 - — streamable-http 传输 - — remote MCP(streamable-http,需公网 HTTPS /mcp 或 Secure MCP Tunnel) - — streamable-http 传输 OpenAI Responses API 与 ChatGPT Apps 侧接入时,server_url 必须是外部可访问的 HTTPS /mcp 端点;本机 127.0.0.1 只适合本地客户端或通过 Secure MCP Tunnel / ngrok / Cloudflare Tunnel 暴露。 直接 node your-server.js 启动时,SDK 会自动检测运行环境: - (交互式启动)→ stdio 模式 - (默认)→ HTTP 模式,监听 http://127.0.0.1:8080/mcp 任何客户端 / Agent 接入本 SDK 起的 server,都走 ,协议版本 2024-11-05。stdio 与 streamable-http 两种通道的**,区别只在传输方式。 —— tools/call / resources/read 中 handler 抛异常、或 tool/resource 不存在时,,而是返回**,错误信息塞进 content、文本以 [Error] 开头: 判断工具调用是否成功,看 result.content[].text 是否以 [Error] 开头——本实现用**标识工具错误,未使用 MCP 可选的 isError 字段。 handler 直接返回 string / object 时,SDK 自动包成 text(见下方 API 参考)。 —— 被 Agent 当子进程拉起(Claude Code / Cursor): - 每行一条 JSON-RPC 消息,\n 分隔 → 消息体必须是**,中间不能有换行 - client 写 stdin,server 响应写 stdout(每条以 \n 结尾);通知无响应 - stderr 仅用于日志,
README
以下为原文 README 节选,完整内容请查看原文。
universal-mcp-sdk
跨 Agent 的 MCP Server 开发套件。一次实现,多端接入。
已实测接通:
- Claude Code / Cursor — stdio 传输
- Mavis — streamable-http 传输
- OpenAI / ChatGPT — remote MCP(streamable-http,需公网 HTTPS
/mcp或 Secure MCP Tunnel) - 任何 HTTP-based AI Agent — streamable-http 传输
OpenAI Responses API 与 ChatGPT Apps 侧接入时,
server_url必须是外部可访问的 HTTPS/mcp端点;本机127.0.0.1只适合本地客户端或通过 Secure MCP Tunnel / ngrok / Cloudflare Tunnel 暴露。
安装
npm install universal-mcp-sdk
# 或直接复制本目录到你的项目
快速开始
const { createServer, tool, textContent } = require('universal-mcp-sdk');
const server = createServer({
name: 'my-first-mcp',
version: '1.0.0',
tools: [
tool('hello', '打招呼', { name: { type: 'string' } },
async ({ name }) => textContent(`Hello, ${name}!`)),
tool('add', '两数相加', { a: { type: 'number' }, b: { type: 'number' } },
async ({ a, b }) => textContent(String(a + b))),
],
resources: [
{
uri: 'hello://greeting',
name: 'Default Greeting',
description: '默认问候语',
mimeType: 'text/plain',
read: async () => 'Hello World',
},
],
});
server.start();
直接 node your-server.js 启动时,SDK 会自动检测运行环境:
- TTY 终端(交互式启动)→ stdio 模式
- 非 TTY / 后台服务(默认)→ HTTP 模式,监听
http://127.0.0.1:8080/mcp
需要强制指定模式时:
node your-server.js --stdio # 强制 stdio(Claude Code / Cursor 子进程)
node your-server.js --http # 强制 HTTP
node your-server.js --http --port 9000 # HTTP + 指定端口
完整示例
const {
createServer,
tool,
command,
staticResource,
dynamicResource,
textContent,
errorContent,
imageContentFromFile,
} = require('universal-mcp-sdk');
const server = createServer({
name: 'my-mcp-server',
version: '2.0.0',
tools: [
tool('scene_query_node', '查询场景节点',
{ uuid: { type: 'string' } },
async ({ uuid }) => {
const data = await queryNode(uuid);
return textContent(JSON.stringify(data, null, 2));
}
),
tool('preview_screenshot', '截图预览页面',
{ path: { type: 'string' } },
async ({ path }) => {
const absPath = await captureScreenshot(path);
return textContent(absPath);
}
),
command('preview_refresh', '刷新预览', async () => {
await doRefresh();
return textContent('ok');
}),
],
resources: [
staticResource('project://info', 'Project Info',
JSON.stringify({ name: 'MyGame', version: '1.0.0' })
),
dynamicResource('scene://tree', 'Current Scene Tree', '当前场景节点树',
async () => await querySceneTree()
),
],
});
server.start();
启动模式
| 模式 | 命令 | 适用场景 |
|---|---|---|
| stdio | node your-server.js --stdio |
Claude Code / Cursor(子进程) |
安装
This server does not publish a one-line install command.
Open the repository installation guide 新手?先看 mcpskill.org 教程 →配置
{
"mcpServers": {
"my-mcp": {
"command": "node",
"args": ["/path/to/your-server.js", "--stdio"]
}
}
}