轻量级LLM-MCP编排器(LLMO)
一种可配置的服务,协调LLM API和微能力协议(MCP)服务器之间的交互,具有动态工具发现和强大的流程管理功能。
概述
LLMO v1.4是一个后端服务,它:
- 管理本地MCP服务器进程(启动、停止、监视)
- 通过stdio JSON-RPC从MCP服务器动态发现工具
- 将请求路由到不同的LLM提供商
- 协调LLM和MCP之间的工具调用
- 支持流式响应,实现流畅的对话体验
主要特点
- 动态工具发现:启动时自动从每个MCP中发现可用工具
- 配置驱动:LLM提供者和MCP服务器的简单配置
- 稳健的流程管理:可靠的MCP流程生命周期,优雅的关机
- 弹性沟通:强大的stdio JSON-RPC通信,具有全面的错误处理功能
- 工具调用编排:按顺序执行工具调用,并提供详细的错误报告
- 流媒体支持:响应式用户体验的服务器发送事件(SSE)
- 结构化日志记录:用于调试和监控的详细上下文丰富的日志记录
需求
- Node.js 18+(LTS)
- npm或纱线
安装
- 克隆存储库:
git clone [repository-url]
cd llmo- 安装依赖项:
npm install- 复制示例环境文件并使用API密钥对其进行更新:
cp .env.example .env
# Edit .env with your API keys- 审查和更新
config.yaml配置LLM提供程序和MCP服务器的文件。
配置
LLMO v1.4使用YAML或JSON中的简化配置格式:
LLM提供商
配置一个或多个LLM提供程序及其API端点、身份验证和支持的模型。
MCP服务器
仅使用MCP服务器的启动参数进行配置-LLMO将在启动时动态发现其工具。
配置示例
# LLM Providers
llmProviders:
- name: openai
apiEndpoint: https://api.openai.com/v1/chat/completions
authType: bearer
authEnvVar: OPENAI_API_KEY
models:
- gpt-4
- gpt-3.5-turbo
# MCP Servers (Local Processes)
mcpServers:
- name: filesystem
command: npx
args:
- -y
- "@modelcontextprotocol/server-filesystem"
- "/path/to/directory"
- name: calculator
command: node
args:
- ./mcp-servers/calculator.js
env:
DEBUG: "true"
# Timeouts (in milliseconds)
timeouts:
mcpResponse: 30000 # 30 seconds
gracefulShutdown: 5000 # 5 seconds运行服务
- 构建项目:
npm run build- 启动服务器:
npm start对于自动重新加载的开发:
npm run dev运作原理
- 启动过程:
- LLMO加载配置并对其进行验证 - 启动所有已配置的MCP进程 - 发送 tools/list 请求每个MCP发现可用工具 - 在内存中缓存工具定义 - 启动HTTP服务器
- 工具发现:
- 启动时,LLMO发送 tools/list 向每个MCP发送JSON-RPC请求 - MCP使用其可用工具(名称、描述、参数模式)进行响应 - LLMO缓存这些定义,并将工具名称映射到其提供的MCP
- 聊天请求流:
- 客户端向发送请求 /chat 端点 - LLMO根据请求的模型路由到适当的LLM - LLMO在LLM请求中包含所有缓存的工具定义 - 当LLM返回tool_calls时,LLMO: - 将工具名称映射到其MCP - 发送a tools/call 向相应的MCP提出请求 - 将MCP的响应(或错误)返回给LLM - 流式响应实时转发给客户端
API终点
健康检查
GET /health返回服务器状态信息。
聊天
POST /chat主体:
{
"model": "gpt-4",
"messages": [
{"role": "user", "content": "What's in my Documents folder?"}
],
"stream": true
}错误处理
LLMO实现了标准化的错误处理:
- 对于非流式响应:带有代码和消息的JSON错误对象
- 对于流式响应:SSE错误事件
- 对于工具调用:具有详细消息的特定MCP\_\*错误类型:
- MCP_UNAVAILABLE:MCP流程不可用 - MCP_COMMUNICATION_ERROR:stdio通信错误 - MCP_TIMEOUT:MCP响应超时 - MCP_INVALID_RESPONSE:来自MCP的JSON-RPC响应无效
项目结构
该项目组织如下:
src/config:配置模式和加载src/process-manager:MCP过程生命周期管理src/mcp-client:标准JSON-RPC通信src/llm-client:LLM API交互src/routes:API端点src/types:TypeScript接口和类型src/utils:共享公用设施
许可证
麻省理工学院
