MCP Server Executable

Um servidor executável para executar serviços MCP, com encadeamento de ferramentas, gerenciamento de múltiplos serviços e suporte a plugins.

Documentação

MCP EXE

MCP Server.exe

小智 & Cursor 的 MCP 启动器 - MCP For Cursor&xiaozhi

MCP Server.exe é um servidor executável poderoso que não apenas executa serviços MCP (Model Context Protocol) padrão, mas também oferece recursos avançados:

  • Execução em cadeia de ferramentas: suporta a combinação sequencial de múltiplas ferramentas para fluxos de automação complexos
  • Combinação de múltiplos serviços MCP: pode executar e gerenciar vários serviços MCP simultaneamente, suportando modos SSE e stdio
  • Sistema de ferramentas plugável: suporta carregamento dinâmico e configuração de ferramentas personalizadas
  • Opções de implantação flexíveis: desde execução standalone até implantação distribuída, atendendo a diversos cenários de integração
  • Recarregamento automático: monitora alterações em --mcp-config e --mcp-js, reiniciando automaticamente para aplicar as mudanças

MCP Server.exe é um servidor executável poderoso que não apenas executa serviços MCP (Model Context Protocol) padrão, mas também oferece recursos avançados:

  • Execução em cadeia de ferramentas: suporta a combinação sequencial de múltiplas ferramentas para automação complexa
  • Múltiplos serviços MCP: pode executar e gerenciar vários serviços MCP simultaneamente, suportando modos SSE e stdio
  • Sistema de ferramentas plugável: suporta carregamento dinâmico e configuração de ferramentas personalizadas
  • Implantação flexível: desde operação standalone até implantação distribuída, atendendo a diversos cenários de integração
  • Recarregamento automático para alterações de configuração

Uso

# 推荐:通过 CLI 运行(无需本地构建)
npx mcp_exe --mcp-config ./examples/mcp.json

# 或运行打包后的可执行文件(Windows/macOS)
./executables/mcp_server-win-x64.exe --mcp-config ./examples/mcp.json

🎯 Principais Cenários de Uso

1. Modo de Conexão WebSocket

Suporta conexão a outros serviços MCP via WebSocket, especialmente adequado para conectar-se a serviços MCP habilitados para WebSocket como xiaozhi.me. Através de arquivos de configuração, você pode facilmente integrar múltiplos serviços MCP com xiaozhi.me.

Suporta conexão a outros serviços MCP via WebSocket, especialmente adequado para conectar-se a serviços MCP habilitados para WebSocket como xiaozhi.me. Através de arquivos de configuração, você pode facilmente integrar múltiplos serviços MCP com xiaozhi.me.

xiaozhi-mcp

# 使用配置文件连接到 xiaozhi.me / Start in WebSocket mode
npx mcp_exe --ws wss://api.xiaozhi.me/mcp/?token=...xxx --mcp-config ./examples/mcp-sse.json

Exemplo de configuração (mcp-sse.json):

{
    "mcpServers": {
        "Model Server sse": {
            "url": "http://127.0.0.1:3000"
        }
    },
    "serverInfo": {
        "serverName": "ws-client-mcp-server",
        "version": "1.0.0",
        "description": "WebSocket 客户端的 MCP 服务器实例",
        "author": "shadow"
    }
}

Recursos do modo WebSocket:

  • Suporta comunicação bidirecional em tempo real
  • Mecanismo de reconexão automática
  • Gerenciamento unificado de múltiplos serviços
  • Compatível com o protocolo MCP padrão

Projeto relacionado Visualizador do inicializador xiaozhi-mcp

2. Início Rápido de Serviço Standalone

A maneira mais simples - clique duas vezes para executar, ou inicie via npx.

A maneira mais simples - clique duas vezes para executar, ou inicie via npx.

# 双击运行 mcp_server.exe,或通过命令行启动
./executables/mcp_server-win-x64.exe
# 或
npx mcp_exe

Configuração padrão:

  • Porta de escuta: 3000 (modificável via --port)
  • Endpoints SSE: GET / estabelece sessão, POST /sessions?sessionId=... envia mensagens
  • Conjunto básico de ferramentas integradas
  • Recarregamento automático de --mcp-config e --mcp-js

3. Combinando Múltiplos Serviços MCP

Use o mesmo arquivo de configuração mcp.json do Cursor para combinar múltiplos serviços MCP, suportando simultaneamente os modos de transporte SSE e stdio. Isso permite escolher o método de transporte adequado para diferentes cenários de aplicação, aumentando a flexibilidade e escalabilidade do sistema.

Use o mesmo arquivo de configuração mcp.json do Cursor para combinar múltiplos serviços MCP, suportando simultaneamente os modos de transporte SSE e stdio.

npx mcp_exe --mcp-config ./examples/mcp.json

Exemplo de configuração (mcp.json):

{
  "mcpServers": {
    "Model Server sse": { "url": "http://127.0.0.1:9090" },
    "Model Server - stdio": { "command": "xxx", "args": ["--transport", "stdio"] }
  },
  "serverInfo": { "serverName": "dynamic-mcp-server" },
  "tools": [],
  "namespace": "."
}
  • tools: Lista de permissões de ferramentas (array vazio significa sem filtro)
  • namespace: Separador de namespace de combinação, padrão . (também pode usar ::)

4. Execução em Cadeia de Ferramentas

Suporta a combinação de múltiplas ferramentas em uma cadeia de ferramentas para implementar fluxos de automação complexos. As cadeias de ferramentas podem configurar flexivelmente o fluxo de dados e a saída de resultados.

Suporta a combinação de múltiplas ferramentas em uma cadeia de ferramentas para implementar fluxos de automação complexos. As cadeias de ferramentas podem configurar flexivelmente o fluxo de dados e a saída de resultados.

npx mcp_exe --mcp-config ./examples/product-hunt/mcp-tools.json

Exemplo de configuração (trecho, ajuste conforme necessário):

{
  "toolChains": [
    {
      "name": "product_hunt_news",
      "description": "get product hunt news",
      "steps": [
        { "toolName": "get_product_hunt_url", "args": {} },
        { "toolName": "load_product_hunt_js_code", "args": {} },
        { "toolName": "browser_navigate", "args": {}, "outputMapping": { "url": "content.0.text" }, "fromStep": 0 },
        { "toolName": "browser_execute_javascript", "args": {}, "outputMapping": { "code": "content.0.text" }, "fromStep": 1 },
        { "toolName": "browser_close", "args": {} }
      ],
      "output": { "steps": [3] }
    }
  ]
}

Recursos da cadeia de ferramentas:

  • Suporta execução sequencial de múltiplas etapas
  • Mapeamento flexível de fluxo de dados (outputMapping/fromStep)
  • Pode obter resultados de qualquer etapa (output.steps)

5. Mecanismo de Plugins para Ferramentas Personalizadas

Defina ferramentas, recursos e prompts de forma flexível através de arquivos de configuração JavaScript.

Defina ferramentas, recursos e prompts de forma flexível através de arquivos de configuração JavaScript.

npx mcp_exe --mcp-js ./examples/custom-mcp-config.js

Exemplo de configuração (custom-mcp-config.js):

module.exports = {
  // 推荐导出名:configureMcp(也兼容 mcpPlugin)
  configureMcp: function(server, ResourceTemplate, z) {
    server.tool('myTool', '自定义工具示例', { /* zod schema */ }, async (args) => ({ content: [{ type: 'text', text: 'ok' }] }))
    server.resource('custom-echo', new ResourceTemplate('custom-echo://{message}', { list: undefined }), async (uri, { message }) => ({ contents: [{ uri: uri.href, text: message }] }))
    server.prompt('custom-prompt', { /* zod */ }, ({ message }) => ({ messages: [{ role: 'user', content: { type: 'text', text: message } }] }))
  }
}

6. Modo de Tarefas Agendadas (Cronjob)

Use --cronjob para executar ferramentas em horários agendados. Operações atualmente suportadas: listTools, callTool. As tarefas são executadas imediatamente na inicialização e depois em intervalos de schedule, com resultados enviados via notificações de desktop/e-mail/ntfy.

# 示例:结合自定义工具与定时任务
npx mcp_exe --cronjob ./examples/cronjob.json --mcp-js ./examples/product-hunt/custom-mcp-config.js

Exemplo de configuração (examples/cronjob.json):

{
  "tasks": [
    {
      "schedule": "*/30 * * * * *",
      "operations": [
        { "type": "callTool", "name": "get_product_hunt_url", "arguments": {} }
      ],
      "notify": [
        { "type": "desktop", "title": "任务执行结果", "icon": "" }
      ]
    }
  ]
}

Suporte a notificações:

  • desktop: balão do sistema (requer ambiente de desktop local)
  • email: envio de e-mail (requer to, subject, etc.)
  • ntfy: envio para ntfy (requer url, topic, tags, priority)

Nota: tarefas agendadas chamam diretamente as ferramentas combinadas (incluindo ferramentas SSE remotas/stdio locais), sem necessidade de especificar transporte na tarefa.

7. Integração Embutida

Integre como um processo independente em qualquer aplicação.

Integre como um processo independente em qualquer aplicação.

// Node.js 示例 | Node.js Example
const { spawn } = require('child_process')

const mcpServer = spawn('./executables/mcp_server-win-x64.exe', [
  '--port', '3000',
  '--transport', 'stdio'
])

mcpServer.stdout.on('data', (data) => {
  // 处理 MCP 服务器的输出
})

mcpServer.stdin.write(JSON.stringify({
  // 发送请求到 MCP 服务器
}))

📚 Documentação Detalhada

Argumentos de Linha de Comando

O servidor suporta os seguintes argumentos de linha de comando para personalizar seu comportamento: O servidor suporta os seguintes argumentos de linha de comando:

ArgumentoDescriçãoValor Padrão
--ws <url>Endereço do servidor WebSocket, habilita o modo de conexão WebSocketNenhum
--mcp-js <路径>Caminho do arquivo de configuração JavaScript do MCP (suporta configureMcp ou mcpPlugin)Nenhum
--mcp-config <路径/json字符串>Caminho do arquivo de configuração JSON do MCP ou string JSONNenhum
--server-name <name>Nome do servidormcp_server_exe

| --port <端口> | Porta de escuta do servidor | 3000 | | --transport <模式> | Modo de transporte, suporta sse ou stdio (aplicável fora do modo WS) | sse | | --cronjob <路径/json> | Caminho do arquivo de configuração de tarefas agendadas ou string JSON | Nenhum | | --cursor-link | Integração rápida no Cursor após iniciar (modo SSE) | Desativado | | --log-level <level> | Nível de log: TRACE/DEBUG/INFO/WARN/ERROR/FATAL/OUTPUT | INFO | | --version <version> --description <desc> --author <author> --license <license> --homepage <url> | Metainformações | - |

Dica: se --ws for fornecido, o modo WebSocket terá prioridade; caso contrário, o padrão será sse quando não especificado explicitamente.

Formato do Arquivo de Configuração

O servidor suporta o uso de arquivos de configuração para configurar simultaneamente parâmetros do servidor e funcionalidades MCP:

module.exports = {
  // MCP 配置函数 | MCP configuration function
  configureMcp: function(server, ResourceTemplate, z) {
    // 配置资源和工具 | Configure resources and tools
  },
  // 可选:提供额外的 mcp 配置对象
  mcpConfig: { /* mcpServers/tools/toolChains/namespace */ }
}

Recarregamento Automático

  • Monitora alterações no arquivo --mcp-config: reanalisa e reinicia automaticamente o serviço (incluindo cadeias de ferramentas/namespaces/listas de permissões de ferramentas, etc.)
  • Monitora alterações no arquivo --mcp-js: recarrega automaticamente configureMcp/mcpPlugin personalizados

Guia de Desenvolvimento

Instalação

npm install

Build

yarn build # 或 npm run build

Execução

npm start
# 或开发模式(SSE):
npm run dev
# WebSocket 开发:
npm run dev-ws
# Cronjob 开发:
npm run dev-cronjob

Empacotamento

# Windows 打包
npm run package-win

# macOS 打包(Intel/Apple Silicon)
npm run package-mac-intel
npm run package-mac-arm

O executável empacotado será gerado no diretório executables.

Logs

  • Use --log-level para controlar o nível mínimo de saída (padrão INFO)
  • Console com saída de timestamp/categoria/cores; o nível OUTPUT é usado para saída literal para análise por ferramentas

API de Biblioteca

Desde v0.11.x, exportações estáveis são fornecidas: McpRouterServer.

// CommonJS
const { McpRouterServer } = require('mcp_exe');

(async () => {
  const server = new McpRouterServer({ name: 'my-app' }, { transportType: 'sse', port: 3000 });
  await server.importMcpConfig(require('./mcp.json'), null);
  await server.start();
})();
// TypeScript / ESM
import { McpRouterServer } from 'mcp_exe';

const server = new McpRouterServer({ name: 'my-app' }, { transportType: 'stdio' });
await server.importMcpConfig(mcpJson, null);
await server.start();
  • Declarações de tipos são emitidas em dist/index.d.ts, expostas automaticamente via types/exports.
  • A CLI ainda é fornecida via bin/cli.js, e a biblioteca e a CLI podem ser usadas em paralelo.

📝 Licença

MIT