Nexus
概述
安装
内容详情
替代品
什么是Nexus MCP Router?
Nexus是一个智能路由平台,可以将多个Model Context Protocol (MCP) 服务器和大型语言模型 (LLM) 提供商连接到一个统一的端点。它让AI助手能够同时访问各种工具和服务,而无需分别配置每个连接。如何使用Nexus?
通过简单的配置文件设置您想要连接的MCP服务器和LLM提供商,然后启动Nexus服务。AI助手(如Cursor、Claude Code)只需连接到Nexus的单一端点即可访问所有配置的工具和模型。适用场景
适合需要集中管理多个AI工具和模型的组织、开发团队希望简化AI助手配置、以及需要统一控制AI资源访问权限的场景。主要功能
MCP服务器聚合
支持STDIO、SSE和HTTP三种协议的MCP服务器,通过单一端点统一访问
LLM提供商路由
统一接口支持OpenAI、Anthropic、Google和AWS Bedrock等多种LLM提供商
智能工具搜索
基于自然语言查询的模糊搜索,快速找到相关工具
企业级安全
内置CORS、CSRF保护、OAuth2认证和TLS支持
多级速率限制
支持全局、IP、服务器和工具级别的速率控制
容器化支持
提供Docker镜像,简化部署和管理
优势
简化配置:只需配置一次,所有AI助手都能使用
集中管理:统一控制所有MCP服务器和LLM提供商的访问
增强安全:提供统一的认证和授权机制
成本控制:通过速率限制管理API使用成本
灵活扩展:轻松添加新的工具和服务
局限性
需要额外的部署和维护工作
单点故障风险(可通过集群部署缓解)
配置复杂度随连接服务数量增加
如何使用
安装Nexus
通过Docker或直接安装二进制文件
创建配置文件
创建nexus.toml文件,配置MCP服务器和LLM提供商
启动服务
运行Nexus服务
配置AI助手
在Cursor或Claude Code中配置连接到Nexus
使用案例
代码开发助手
同时使用GitHub代码搜索、文件系统操作和AI代码生成
多模型对话
根据不同任务选择合适的LLM模型
企业知识管理
结合内部知识库工具和外部AI模型
常见问题
Nexus是免费的吗?
Nexus是开源项目,采用MPL-2.0许可证,可以免费使用和修改。
支持哪些MCP服务器?
支持任何符合MCP标准的服务器,包括STDIO(本地进程)、SSE(服务器发送事件)和HTTP协议。
如何保证安全性?
提供OAuth2认证、TLS加密、速率限制和多层访问控制,确保安全访问。
性能影响大吗?
Nexus设计为轻量级代理,性能开销很小,大多数情况下用户不会感知到延迟。
支持自定义开发吗?
完全开源,支持自定义扩展和二次开发,可以添加新的功能模块。
相关资源
官方文档
完整的安装、配置和使用指南
GitHub仓库
源代码和问题追踪
Discord社区
获取帮助和与其他用户交流
示例配置
各种使用场景的配置文件示例
安装
复制以下命令到你的Client进行配置
{
"mcpServers": {
"nexus": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
}注意:您的密钥属于敏感信息,请勿与任何人分享。
🚀 Nexus - 统一的AI聚合与路由解决方案
Nexus 是一款强大的工具,它可以连接所有的 MCP 服务器、API 和大语言模型(LLM)提供商,通过统一的端点进行路由。它能够聚合、管理和控制你的 AI 栈,为开发者和企业提供便捷的 AI 服务管理方案。
🚀 快速开始
安装
快速安装(Linux/Windows (WSL)/macOS)
curl -fsSL https://nexusrouter.com/install | bash
Docker 安装
拉取最新镜像:
docker pull ghcr.io/grafbase/nexus:latest
或者使用稳定版本:
docker pull ghcr.io/grafbase/nexus:stable
或者使用特定版本:
docker pull ghcr.io/grafbase/nexus:X.Y.Z
从源代码构建
git clone https://github.com/grafbase/nexus
cd nexus
cargo build --release
运行 Nexus
使用二进制文件
nexus
使用 Docker
docker run -p 8000:8000 -v /path/to/config:/etc/nexus.toml ghcr.io/grafbase/nexus:latest
Docker Compose 示例
services:
nexus:
image: ghcr.io/grafbase/nexus:latest
ports:
- "8000:8000"
volumes:
- ./nexus.toml:/etc/nexus.toml
environment:
- GITHUB_TOKEN=${GITHUB_TOKEN}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
✨ 主要特性
- MCP 服务器聚合:通过单个端点连接多个 MCP 服务器(STDIO、SSE、HTTP)。
- LLM 提供商路由:为 OpenAI、Anthropic、Google 等 LLM 提供商提供统一接口。
- 上下文感知工具搜索:使用自然语言查询在所有连接的工具中进行智能模糊搜索。
- 协议支持:支持 STDIO(子进程)、SSE(服务器发送事件)和可流式传输的 HTTP MCP 服务器。
- 灵活配置:基于 TOML 的配置,支持环境变量替换。
- 安全保障:内置 CORS、CSRF 保护、OAuth2 和 TLS 支持。
- 速率限制:支持多级速率限制,可使用内存或 Redis 作为后端。
- Docker 就绪:提供容器镜像,只需最少配置即可使用。
📦 安装指南
安装步骤如上述快速开始部分所述,可根据不同的操作系统和需求选择合适的安装方式。
💻 使用示例
基础用法
列出可用模型
curl http://localhost:8000/llm/models
聊天完成请求
curl -X POST http://localhost:8000/llm/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "openai_primary/gpt-4-turbo",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello, how are you?"}
],
"temperature": 0.7,
"max_tokens": 150
}'
高级用法
流式响应
curl -X POST http://localhost:8000/llm/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-3-5-sonnet-20241022",
"messages": [
{"role": "user", "content": "Write a short poem"}
],
"stream": true,
"max_tokens": 100
}'
📚 详细文档
配置
创建 nexus.toml 文件来配置 Nexus:
# LLM 提供商配置
[llm.providers.openai]
type = "openai"
api_key = "{{ env.OPENAI_API_KEY }}"
forward_token = true
# 模型配置(每个提供商至少需要一个模型)
[llm.providers.openai.models.gpt-4]
[llm.providers.openai.models.gpt-3-5-turbo]
[llm.providers.anthropic]
type = "anthropic"
api_key = "{{ env.ANTHROPIC_API_KEY }}"
[llm.providers.anthropic.models.claude-3-5-sonnet-20241022]
# MCP 服务器配置
[mcp.servers.github]
url = "https://api.githubcopilot.com/mcp/"
auth.token = "{{ env.GITHUB_TOKEN }}"
[mcp.servers.filesystem]
cmd = ["npx", "-y", "@modelcontextprotocol/server-filesystem", "/Users/YOUR_USERNAME/Desktop"]
[mcp.servers.python_server]
cmd = ["python", "-m", "mcp_server"]
env = { PYTHONPATH = "/opt/mcp" }
cwd = "/workspace"
配置选项
服务器配置
server.listen_address:Nexus 监听的地址和端口(默认:127.0.0.1:8000)server.health.enabled:启用健康检查端点(默认:true)server.health.path:健康检查端点路径(默认:/health)
LLM 配置
llm.enabled:启用 LLM 功能(默认:true)llm.path:LLM 端点路径(默认:/llm)
MCP 配置
mcp.enabled:启用 MCP 功能(默认:true)mcp.path:MCP 端点路径(默认:/mcp)mcp.enable_structured_content:控制 MCP 搜索工具响应格式(默认:true)- 当
true时:使用现代structuredContent字段以获得更好的性能和类型安全性 - 当
false时:使用旧的content字段和Content::json对象以兼容旧的 MCP 客户端
- 当
MCP 服务器类型
- STDIO 服务器:启动通过标准输入/输出进行通信的本地进程
[mcp.servers.my_tool]
cmd = ["path/to/executable", "--arg1", "--arg2"]
# 可选:设置环境变量
env = { DEBUG = "1", API_KEY = "{{ env.MY_API_KEY }}" }
# 可选:设置工作目录
cwd = "/path/to/working/directory"
# 可选:配置 stderr 处理(默认:"null")
stderr = "inherit" # 在控制台显示
# 或者
stderr = { file = "/var/log/mcp/server.log" } # 记录到文件
- SSE 服务器:连接到服务器发送事件端点
[mcp.servers.my_sse_server]
protocol = "sse"
url = "http://example.com/sse"
message_url = "http://example.com/messages" # 可选
- HTTP 服务器:连接到可流式传输的 HTTP 端点
[mcp.servers.my_http_server]
protocol = "streamable-http"
url = "https://api.example.com/mcp"
认证
为任何服务器添加服务令牌认证:
[mcp.servers.my_server.auth]
token = "your-token-here"
# 或者使用环境变量
token = "{{ env.MY_API_TOKEN }}"
OAuth2 认证
配置 OAuth2 认证以保护你的 Nexus 端点:
[server.oauth]
url = "https://your-oauth-provider.com/.well-known/jwks.json"
poll_interval = "5m"
expected_issuer = "https://your-oauth-provider.com"
expected_audience = "your-service-audience"
[server.oauth.protected_resource]
resource = "https://your-nexus-instance.com"
authorization_servers = ["https://your-oauth-provider.com"]
速率限制
Nexus 支持全面的速率限制,以防止滥用并确保公平使用资源:
# 全局速率限制配置
[server.rate_limits]
enabled = true
# 存储后端配置
[server.rate_limits.storage]
type = "memory" # 或者 "redis" 用于分布式速率限制
# 对于 Redis 后端:
# url = "redis://localhost:6379"
# key_prefix = "nexus:rate_limit:"
# 全局速率限制(适用于所有请求)
[server.rate_limits.global]
limit = 1000
interval = "60s"
# 每个 IP 的速率限制
[server.rate_limits.per_ip]
limit = 100
interval = "60s"
# 每个 MCP 服务器的速率限制
[mcp.servers.my_server.rate_limits]
limit = 50
interval = "60s"
# 特定工具的速率限制(覆盖服务器默认值)
[mcp.servers.my_server.rate_limits.tools]
expensive_tool = { limit = 10, interval = "60s" }
cheap_tool = { limit = 100, interval = "60s" }
LLM 令牌速率限制
Nexus 为 LLM 提供商提供基于令牌的速率限制,以帮助控制成本并防止滥用。
前提条件
[server.client_identification]
enabled = true
# 选择识别方法(至少需要一种)
client_id.jwt_claim = "sub" # 从 JWT 'sub' 声明中提取 ID
# 或者
client_id.http_header = "X-Client-ID" # 从 HTTP 头中提取 ID
# 可选:限制每个用户的组(最多允许一个)
group_id.jwt_claim = "groups" # 包含用户组的 JWT 声明
# 或者
group_id.http_header = "X-Group-ID" # 从 HTTP 头中提取 ID
# 你必须提供允许的组列表
[server.client_identification.validation]
group_values = ["free", "pro", "max"]
配置层次结构
令牌速率限制可以在四个级别进行配置,从最具体到最不具体:
- 每个用户 + 组的模型:特定组中每个用户的特定模型
- 每个用户的模型:每个用户的特定模型
- 每个用户 + 组的提供商:特定组中每个用户的提供商的所有模型
- 每个用户的提供商:每个用户的提供商的所有模型
基本配置
# 提供商级别的默认速率限制(适用于所有模型)
[llm.providers.openai.rate_limits.per_user]
input_token_limit = 100000 # 100K 输入令牌
interval = "1m" # 每分钟
# 特定模型的速率限制(覆盖提供商默认值)
[llm.providers.openai.models.gpt-4.rate_limits.per_user]
input_token_limit = 50000 # 对于昂贵的模型更严格
interval = "30s"
LLM 提供商配置
启用 LLM 路由
[llm]
enabled = true # 启用 LLM 功能(默认:true)
path = "/llm" # LLM 端点路径(默认:"/llm")
支持的提供商
Nexus 目前支持四个主要的 LLM 提供商:
- OpenAI(包括与 OpenAI 兼容的 API)
- Anthropic(Claude 模型)
- Google(Gemini 模型)
- AWS Bedrock(通过 AWS 提供多个模型系列)
提供商配置
OpenAI 提供商
[llm.providers.openai]
type = "openai"
api_key = "{{ env.OPENAI_API_KEY }}"
# 可选:使用自定义基本 URL(适用于 Azure OpenAI、代理或兼容 API)
base_url = "https://api.openai.com/v1" # 默认
# 模型配置(必需 - 至少必须配置一个模型)
[llm.providers.openai.models.gpt-4]
# 可选:为用户重命名模型
# rename = "smart-model" # 用户将看到 "openai/smart-model"
[llm.providers.openai.models.gpt-3-5-turbo]
# 未重命名的模型使用其原始 ID
Anthropic 提供商
[llm.providers.anthropic]
type = "anthropic"
api_key = "{{ env.ANTHROPIC_API_KEY }}"
# 可选:使用自定义基本 URL
base_url = "https://api.anthropic.com/v1" # 默认
# 模型配置(必需 - 至少必须配置一个模型)
[llm.providers.anthropic.models.claude-3-opus-20240229]
[llm.providers.anthropic.models.claude-3-5-sonnet-20241022]
Google 提供商
[llm.providers.google]
type = "google"
api_key = "{{ env.GOOGLE_API_KEY }}"
# 可选:使用自定义基本 URL
base_url = "https://generativelanguage.googleapis.com/v1beta" # 默认
# 模型配置(必需 - 至少必须配置一个模型)
# 注意:TOML 中包含点的模型 ID 必须加引号
[llm.providers.google.models."gemini-1.5-flash"]
[llm.providers.google.models.gemini-pro]
AWS Bedrock 提供商
[llm.providers.bedrock]
type = "bedrock"
# 可选:使用的 AWS 配置文件(默认为环境设置)
profile = "{{ env.AWS_PROFILE }}"
# 可选:AWS 区域(默认为环境或 us-east-1)
region = "us-west-2"
# 模型配置(必需 - 至少必须配置一个模型)
# Bedrock 使用包含点的模型 ID,因此必须加引号
[llm.providers.bedrock.models."anthropic.claude-3-5-sonnet-20241022-v2:0"]
[llm.providers.bedrock.models."anthropic.claude-3-opus-20240229-v1:0"]
[llm.providers.bedrock.models."amazon.nova-micro-v1:0"]
[llm.providers.bedrock.models."meta.llama3-8b-instruct-v1:0"]
[llm.providers.bedrock.models."ai21.jamba-1.5-mini-v1:0"]
# 重命名模型以简化访问
[llm.providers.bedrock.models.claude-haiku]
rename = "anthropic.claude-3-5-haiku-20241022-v1:0" # 用户将以 "bedrock/claude-haiku" 访问
[llm.providers.bedrock.models.jamba-mini]
rename = "ai21.jamba-1.5-mini-v1:0" # 用户将以 "bedrock/jamba-mini" 访问
模型配置
基本模型配置
[llm.providers.openai]
type = "openai"
api_key = "{{ env.OPENAI_API_KEY }}"
# 你要暴露的每个模型都必须明确配置
[llm.providers.openai.models.gpt-4]
[llm.providers.openai.models.gpt-3-5-turbo]
模型重命名
[llm.providers.openai.models.gpt-4]
rename = "smart-model" # 用户将以 "openai/smart-model" 访问
[llm.providers.openai.models.gpt-3-5-turbo]
rename = "fast-model" # 用户将以 "openai/fast-model" 访问
多个提供商配置
# 主要 OpenAI 账户
[llm.providers.openai_primary]
type = "openai"
api_key = "{{ env.OPENAI_PRIMARY_KEY }}"
[llm.providers.openai_primary.models.gpt-4]
[llm.providers.openai_primary.models.gpt-3-5-turbo]
# 次要 OpenAI 账户或 Azure OpenAI
[llm.providers.openai_secondary]
type = "openai"
api_key = "{{ env.OPENAI_SECONDARY_KEY }}"
base_url = "https://my-azure-instance.openai.azure.com/v1"
[llm.providers.openai_secondary.models.gpt-4]
rename = "azure-gpt-4" # 与主要账户区分
# Anthropic
[llm.providers.claude]
type = "anthropic"
api_key = "{{ env.ANTHROPIC_API_KEY }}"
[llm.providers.claude.models.claude-3-opus-20240229]
# Google Gemini
[llm.providers.gemini]
type = "google"
api_key = "{{ env.GOOGLE_API_KEY }}"
[llm.providers.gemini.models."gemini-1.5-flash"]
令牌转发
配置令牌转发
[llm.providers.openai]
type = "openai"
api_key = "{{ env.OPENAI_API_KEY }}" # 备用密钥(令牌转发时可选)
forward_token = true # 为该提供商启用令牌转发
[llm.providers.openai.models.gpt-4]
[llm.providers.openai.models.gpt-3-5-turbo]
[llm.providers.anthropic]
type = "anthropic"
# 启用令牌转发时不需要 api_key
forward_token = true
[llm.providers.anthropic.models.claude-3-5-sonnet-20241022]
[llm.providers.google]
type = "google"
api_key = "{{ env.GOOGLE_API_KEY }}"
forward_token = false # 显式禁用(默认)
[llm.providers.google.models."gemini-1.5-flash"]
使用令牌转发
# 使用你自己的 OpenAI 密钥
curl -X POST http://localhost:8000/llm/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-Provider-API-Key: sk-your-openai-key" \
-d '{
"model": "openai/gpt-4",
"messages": [{"role": "user", "content": "Hello"}]
}'
# 使用你自己的 Anthropic 密钥
curl -X POST http://localhost:8000/llm/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-Provider-API-Key: sk-ant-your-anthropic-key" \
-d '{
"model": "anthropic/claude-3-opus-20240229",
"messages": [{"role": "user", "content": "Hello"}]
}'
使用 LLM API
列出可用模型
curl http://localhost:8000/llm/models
聊天完成请求
curl -X POST http://localhost:8000/llm/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "openai_primary/gpt-4-turbo",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello, how are you?"}
],
"temperature": 0.7,
"max_tokens": 150
}'
流式响应
curl -X POST http://localhost:8000/llm/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-3-5-sonnet-20241022",
"messages": [
{"role": "user", "content": "Write a short poem"}
],
"stream": true,
"max_tokens": 100
}'
特定提供商注意事项
OpenAI
- 支持所有标准 OpenAI 模型(GPT-3.5、GPT-4 等)
- 与 Azure OpenAI 端点兼容
- 支持函数调用(如果可用)
- 支持使用服务器发送事件(SSE)的流式响应
Anthropic
- 系统消息会自动提取并放置在
system字段中 - 消息必须在用户和助手角色之间交替
- 需要明确的
max_tokens参数(如果未指定,默认为 4096) - 支持所有 Claude 模型(Opus、Sonnet、Haiku)
- 支持使用服务器发送事件(SSE)的流式响应
- 助手角色会自动映射到 "model" 角色
- 系统消息会放置在
systemInstruction字段中 - 支持 Gemini 模型
- 可用时返回适当的安全评级
- 支持使用服务器发送事件(SSE)的流式响应
AWS Bedrock
- 自动检测并路由到适当的模型系列(Anthropic、Amazon、Meta 等)
- 每个模型系列都有自己的请求/响应格式,会自动处理
- 使用 AWS SDK 进行认证和请求签名
- 支持所有 Bedrock 功能,包括流式传输和特定模型参数
- 根据配置或 AWS 默认值选择区域端点
- 模型可用性因 AWS 区域而异
使用 Nexus 与 LLM SDK
OpenAI SDK (Python)
from openai import OpenAI
# 指向你的 Nexus 实例
client = OpenAI(
base_url="http://localhost:8000/llm",
api_key="your-service-token" # 如果启用了 OAuth2,则使用 JWT 令牌,否则使用任何字符串
)
# 使用任何配置的提供商/模型
response = client.chat.completions.create(
model="anthropic/claude-3-5-sonnet-20241022",
messages=[
{"role": "user", "content": "Hello!"}
]
)
# 流式传输无缝工作
stream = client.chat.completions.create(
model="openai/gpt-4-turbo",
messages=[
{"role": "user", "content": "Write a poem"}
],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
OpenAI SDK (Node.js/TypeScript)
import OpenAI from 'openai';
// 配置为使用 Nexus
const openai = new OpenAI({
baseURL: 'http://localhost:8000/llm',
apiKey: 'your-service-token', // 如果启用了 OAuth2,则使用 JWT 令牌,否则使用任何字符串
});
// 通过 Nexus 使用任何提供商
const response = await openai.chat.completions.create({
model: 'google/gemini-1.5-pro',
messages: [
{ role: 'user', content: 'Explain quantum computing' }
],
});
// 与任何提供商进行流式传输
const stream = await openai.chat.completions.create({
model: 'anthropic/claude-3-opus-20240229',
messages: [
{ role: 'user', content: 'Write a story' }
],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
LangChain 集成
from langchain_openai import ChatOpenAI
# 使用 Nexus 作为 LLM 提供商
llm = ChatOpenAI(
base_url="http://localhost:8000/llm",
api_key="your-service-token", # 如果启用了 OAuth2,则使用 JWT 令牌
model="openai/gpt-4-turbo"
)
# 适用于任何配置的提供商
claude = ChatOpenAI(
base_url="http://localhost:8000/llm",
api_key="your-service-token", # 如果启用了 OAuth2,则使用 JWT 令牌
model="anthropic/claude-3-5-sonnet-20241022"
)
cURL 与 jq 用于命令行
# 常规完成(如果启用了 OAuth2 认证)
curl -s http://localhost:8000/llm/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-jwt-token" \
-d '{
"model": "openai/gpt-4",
"messages": [{"role": "user", "content": "Hello"}]
}' | jq -r '.choices[0].message.content'
# 使用 SSE 解析进行流式传输
curl -s http://localhost:8000/llm/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-jwt-token" \
-d '{
"model": "anthropic/claude-3-5-sonnet-20241022",
"messages": [{"role": "user", "content": "Write a haiku"}],
"stream": true
}' | grep "^data: " | sed 's/^data: //' | jq -r 'select(.choices != null) | .choices[0].delta.content // empty'
错误处理
Nexus 为所有提供商提供一致的错误响应:
- 400 Bad Request:无效的请求格式或参数
- 401 Unauthorized:缺少或无效的 API 密钥
- 429 Too Many Requests:速率限制超出
- 500 Internal Server Error:提供商 API 错误或网络问题
添加到 AI 助手
Cursor
将以下配置添加到你的 Cursor 设置中:
- 打开 Cursor 设置(macOS 上使用 Cmd + ,)
- 搜索 "Model Context Protocol"
- 启用 MCP 支持
- 添加到 MCP 服务器配置:
{
"nexus": {
"transport": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
}
Claude Code
将以下配置添加到你的 Claude Code 配置中:
- 打开 Claude Code 并运行命令:
claude mcp add --transport http nexus http://localhost:8000/mcp
- 或者将其添加到你的项目的
.mcp.json文件中:
{
"mcpServers": {
"nexus": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
}
- 验证连接:
claude mcp list
工作原理
MCP 工具聚合
Nexus 为 AI 助手提供两个主要工具:
search:一种上下文感知的工具搜索,使用模糊匹配在所有连接的 MCP 服务器中查找相关工具execute:使用提供的参数执行特定工具
LLM 提供商路由
Nexus 作为多个 LLM 提供商的统一网关:
- 模型发现:列出配置的提供商的所有可用模型,并使用一致的命名
- 请求路由:根据模型名称自动将请求路由到正确的提供商
- 格式转换:在 OpenAI 的 API 格式和特定提供商的格式之间进行转换
- 响应规范化:无论提供商如何,返回一致的响应格式
STDIO 服务器集成
STDIO 服务器作为子进程启动,并通过标准输入/输出上的 JSON-RPC 进行通信:
- 进程管理:Nexus 自动管理 STDIO 服务器进程的生命周期
- 工具发现:STDIO 服务器的工具会动态发现并索引以供搜索
- 错误处理:如果 STDIO 进程崩溃或输出无效的 JSON,则返回适当的错误
- 环境隔离:每个 STDIO 服务器在自己的进程中运行,具有可配置的环境
常见 STDIO 服务器示例
Python MCP 服务器
[mcp.servers.python_tools]
cmd = ["python", "-m", "my_mcp_server"]
env = { PYTHONPATH = "/opt/mcp", PYTHONUNBUFFERED = "1" }
stderr = "inherit" # 在开发期间查看 Python 输出
Node.js MCP 服务器
[mcp.servers.node_tools]
cmd = ["node", "mcp-server.js"]
cwd = "/path/to/project"
env = { NODE_ENV = "production" }
使用 npx 包
[mcp.servers.filesystem]
cmd = ["npx", "-y", "@modelcontextprotocol/server-filesystem", "/home/user"]
故障排除 STDIO 服务器
服务器未启动
- 检查可执行文件路径:确保命令存在且可执行
- 查看 stderr 输出:临时设置
stderr = "inherit"以查看错误消息 - 验证 JSON-RPC 输出:服务器必须在 stdout 上输出有效的 JSON-RPC
- 检查工作目录:如果指定了
cwd路径,请确保其存在
工具未显示
- 等待初始化:STDIO 服务器可能需要一些时间才能启动
- 使用搜索:STDIO 工具仅在搜索结果中显示,而不在基本工具列表中
- 检查服务器日志:启用 stderr 日志记录以查看服务器是否响应工具列表请求
安全注意事项
- 始终使用环境变量存储敏感令牌。
- 为生产部署启用 TLS 验证。
- 使用 CORS 配置限制访问。
- 为生产部署配置 OAuth2 认证。
- 确保在生产中使用 HTTPS 的 JWKs URL。
- 验证 JWT 令牌的发行者和受众声明。
- 保持 MCP 服务器和 Nexus 最新。
- 谨慎使用具有提升权限的 STDIO 服务器。
- 验证和清理传递给 STDIO 服务器命令的任何用户输入。
OAuth2 安全
当使用 OAuth2 认证时:
- 使用 HTTPS:在生产中始终为 JWKs URL 和受保护资源使用 HTTPS。
- 验证声明:配置
expected_issuer和expected_audience以验证 JWT 声明。 - 元数据端点:
/.well-known/oauth-protected-resource端点提供 OAuth2 元数据,并且是公开可访问的。 - 健康检查:
/health端点绕过 OAuth2 认证,用于监控系统。
📄 许可证
Nexus 采用 Mozilla Public License 2.0 (MPL-2.0) 许可。有关详细信息,请参阅 LICENSE 文件。
贡献
有关如何为 Nexus 做出贡献的指南,请参阅 CONTRIBUTING.md。
支持
替代品
M
MCP Agent Mail
MCP Agent Mail是一个为AI编程代理设计的邮件式协调层,提供身份管理、消息收发、文件预留和搜索功能,支持多代理异步协作和冲突避免。
Python
4.4K
5分
K
Klavis
Klavis AI是一个开源项目,提供在Slack、Discord和Web平台上简单易用的MCP(模型上下文协议)服务,包括报告生成、YouTube工具、文档转换等多种功能,支持非技术用户和开发者使用AI工作流。
TypeScript
10.2K
5分
M
MCP
微软官方MCP服务器,为AI助手提供最新微软技术文档的搜索和获取功能
10.7K
5分
A
Aderyn
Aderyn是一个开源的Solidity智能合约静态分析工具,由Rust编写,帮助开发者和安全研究人员发现Solidity代码中的漏洞。它支持Foundry和Hardhat项目,可生成多种格式报告,并提供VSCode扩展。
Rust
7.2K
5分
D
Devtools Debugger MCP
Node.js调试器MCP服务器,提供基于Chrome DevTools协议的完整调试功能,包括断点设置、单步执行、变量检查和表达式评估等
TypeScript
7.2K
4分
S
Scrapling
Scrapling是一个自适应网页抓取库,能自动学习网站变化并重新定位元素,支持多种抓取方式和AI集成,提供高性能解析和开发者友好体验。
Python
9.8K
5分
M
Mcpjungle
MCPJungle是一个自托管的MCP网关,用于集中管理和代理多个MCP服务器,为AI代理提供统一的工具访问接口。
Go
0
4.5分

Cipher
Cipher是一个专为编程AI代理设计的开源记忆层框架,通过MCP协议与各种IDE和AI编码助手集成,提供自动记忆生成、团队记忆共享和双系统记忆管理等核心功能。
TypeScript
0
5分

Duckduckgo MCP Server
已认证
DuckDuckGo搜索MCP服务器,为Claude等LLM提供网页搜索和内容抓取服务
Python
63.2K
4.3分

Figma Context MCP
Framelink Figma MCP Server是一个为AI编程工具(如Cursor)提供Figma设计数据访问的服务器,通过简化Figma API响应,帮助AI更准确地实现设计到代码的一键转换。
TypeScript
58.1K
4.5分

Firecrawl MCP Server
Firecrawl MCP Server是一个集成Firecrawl网页抓取能力的模型上下文协议服务器,提供丰富的网页抓取、搜索和内容提取功能。
TypeScript
106.6K
5分

Exa Web Search
已认证
Exa MCP Server是一个为AI助手(如Claude)提供网络搜索功能的服务器,通过Exa AI搜索API实现实时、安全的网络信息获取。
TypeScript
41.8K
5分

Baidu Map
已认证
百度地图MCP Server是国内首个兼容MCP协议的地图服务,提供地理编码、路线规划等10个标准化API接口,支持Python和Typescript快速接入,赋能智能体实现地图相关功能。
Python
40.2K
4.5分

Context7
Context7 MCP是一个为AI编程助手提供实时、版本特定文档和代码示例的服务,通过Model Context Protocol直接集成到提示中,解决LLM使用过时信息的问题。
TypeScript
78.8K
4.7分

Minimax MCP Server
MiniMax Model Context Protocol (MCP) 是一个官方服务器,支持与强大的文本转语音、视频/图像生成API交互,适用于多种客户端工具如Claude Desktop、Cursor等。
Python
49.0K
4.8分

Edgeone Pages MCP Server
EdgeOne Pages MCP是一个通过MCP协议快速部署HTML内容到EdgeOne Pages并获取公开URL的服务
TypeScript
26.0K
4.8分