MCP远程执行服务

通过HTTP/SSE远程运行MCP服务器,提供按需执行的MCP包服务,适用于团队内部网关和托管MCP运行时环境。

  • by LLMBaseAI
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 LLMBaseAI/mcp-as-a-service

使用说明

MCP即服务

通过HTTP/SSE远程运行MCP服务器,并按需执行包。

mcp-as-a-service 从npm/PyPI获取MCP包,在隔离的Podman容器中运行它们,并通过web友好的网关公开它们,这样客户端就不需要本地stdio运行时。

使用Bun+Hono+TypeScript构建。

为什么这个项目

  • 将MCP运行时执行集中在您控制的基础架构上
  • 跨多个客户端共享远程MCP连接
  • 仅在需要时启动包运行时
  • 使用Podman安全边界隔离运行时
  • 保持一流的协议支持(2024-11-05)

最佳适配

  • 团队内部MCP网关
  • 为无法运行本地进程的客户端托管MCP运行时
  • 具有可观察性的受控包执行环境

快速启动

先决条件:

  • Bun 1.1+
  • 波德曼(无根)

设置:

bun install
bun run build:runtime-images
bun run dev

生产开始:

bun run start

运行测试:

bun test

默认端口: 8787 (或 PORT 有人)。

60秒内首次成功

  1. 启动SSE流:
curl -N "http://127.0.0.1:8787/package/firecrawl-mcp/sse?firecrawlApiKey=YOUR_KEY"
  1. 发送JSON-RPC消息:
curl -X POST "http://127.0.0.1:8787/package/firecrawl-mcp/messages?firecrawlApiKey=YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

API概述

核心:

  • GET / 服务元数据和使用提示
  • GET /health 健康+协议状态
  • GET /servers 活动运行时统计信息

MCP协议:

  • POST /mcp JSON-RPC 2.0端点
  • GET /mcp/capabilities 服务器能力/状态

HTTP/SSE包桥:

  • GET /package/:packageName/sse 流服务器事件/消息
  • POST /package/:packageName/messages 发送JSON-RPC有效载荷

规范写入端点为 POST /package/:packageName/messages. 已删除别名:

  • POST /package/:packageName/respond
  • POST /package/:packageName/message

客户端使用示例

克劳德桌面:

claude mcp add firecrawl \
  'https://mcp.llmbase.ai/package/firecrawl-mcp/sse?firecrawlApiKey=YOUR_KEY' \
  -t http

直接MCP:

curl -X POST https://mcp.llmbase.ai/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

安全和运行时模型

  • 仅波德曼执行模型
  • 强化容器默认值(取消上限、资源限制、隔离网络模式)
  • 输入和参数净化
  • 包配置的参数到环境映射
  • 自动清理非活动运行时

Ubuntu Podman先决条件:

sudo apt-get update
sudo apt-get install -y podman uidmap slirp4netns fuse-overlayfs apparmor apparmor-utils
podman --version
podman info | grep rootless

电流限制

  • 内存中进程注册表(重新启动时状态重置)
  • maxConcurrentProcesses 默认值:10
  • 容器启动延迟取决于包安装/引导时间

建筑

Client (Claude/Desktop/App)
  -> HTTP/SSE
mcp-as-a-service
  -> JSON-RPC over stdio
Containerized MCP package runtime (npm/pypi)
  -> external APIs/tools/resources

项目结构

src/
  app/         app wiring and routes
  transport/   HTTP/SSE and MCP protocol controllers
  runtime/     process orchestration, execution plans, stdio framing
  packages/    package parsing and registry detection
  security/    input and environment policies
  shared/      config, logging, errors, and types

文档

  • docs/API_REFERENCE.md 端点参考和示例
  • docs/DEPLOYMENT.md 生产部署运行手册
  • docs/OPERATIONS.md 第二天作战指挥
  • docs/MIGRATION.md 打破变化迁移笔记
  • docs/TROUBLESHOOTING.md 常见故障和修复
  • docs/MCP_COMPLIANCE.md MCP协议实现细节
  • docs/CLOUDFLARE_SETUP.md Cloudflare设置指南
  • CONTRIBUTING.md 贡献工作流程
  • SECURITY.md 漏洞报告策略
  • CODE_OF_CONDUCT.md 贡献者行为标准