HU

happylifeok/universal-mcp-sdk

Developer tools

Эта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал

5 stars 7 forks Качество 73 Тренд 17Apache-2.0

- / — 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(子进程)
Открыть полный README на GitHub

Установка

This server does not publish a one-line install command.

Open the repository installation guide Новичок в MCP? Начните с руководства на mcpskill.org →

Конфигурация

{ "mcpServers": { "my-mcp": { "command": "node", "args": ["/path/to/your-server.js", "--stdio"] } } }