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。
支持
替代品
R
Rsdoctor
Rsdoctor 是一款專為 Rspack 生態系統打造的構建分析工具,全面兼容 webpack,提供可視化構建分析、多維度性能診斷及智能優化建議,幫助開發者提升構建效率與工程質量。
TypeScript
9.4K
5分
N
Next Devtools MCP
Next.js開發工具MCP服務器,為Claude、Cursor等AI編程助手提供Next.js開發工具和實用程序,包括運行時診斷、開發自動化和文檔訪問功能。
TypeScript
9.1K
5分
T
Testkube
Testkube是一個面向雲原生應用的測試編排與執行框架,提供統一平臺來定義、運行和分析測試,支持現有測試工具和Kubernetes基礎設施。
Go
5.6K
5分
M
MCP Windbg
一個MCP服務器,將AI模型與WinDbg/CDB集成,用於分析Windows崩潰轉儲文件和進行遠程調試,支持自然語言交互執行調試命令。
Python
9.2K
5分
R
Runno
Runno是一個JavaScript工具包集合,用於在瀏覽器和Node.js等環境中安全地運行多種編程語言的代碼,通過WebAssembly和WASI實現沙盒化執行,支持Python、Ruby、JavaScript、SQLite、C/C++等語言,並提供Web組件、MCP服務器等集成方式。
TypeScript
8.6K
5分
P
Praisonai
PraisonAI是一個生產就緒的多AI智能體框架,具有自反思功能,旨在創建AI智能體來自動化解決從簡單任務到複雜挑戰的各種問題。它通過將PraisonAI智能體、AG2和CrewAI集成到一個低代碼解決方案中,簡化了多智能體LLM系統的構建和管理,強調簡單性、定製化和有效的人機協作。
Python
10.0K
5分

Netdata
Netdata是一個開源即時基礎設施監控平臺,提供每秒級指標收集、可視化、機器學習驅動的異常檢測和自動化告警,無需複雜配置即可實現全棧監控。
Go
10.2K
5分
M
MCP Server
Mapbox MCP服務器是一個Node.js實現的模型上下文協議服務器,為AI應用提供Mapbox地理空間API的訪問能力,包括地理編碼、興趣點搜索、路線規劃、等時線分析和靜態地圖生成等功能。
TypeScript
9.2K
4分

Baidu Map
已認證
百度地圖MCP Server是國內首個兼容MCP協議的地圖服務,提供地理編碼、路線規劃等10個標準化API接口,支持Python和Typescript快速接入,賦能智能體實現地圖相關功能。
Python
36.4K
4.5分

Markdownify MCP
Markdownify是一個多功能文件轉換服務,支持將PDF、圖片、音頻等多種格式及網頁內容轉換為Markdown格式。
TypeScript
27.5K
5分

Firecrawl MCP Server
Firecrawl MCP Server是一個集成Firecrawl網頁抓取能力的模型上下文協議服務器,提供豐富的網頁抓取、搜索和內容提取功能。
TypeScript
107.2K
5分

Sequential Thinking MCP Server
一個基於MCP協議的結構化思維服務器,通過定義思考階段幫助分解複雜問題並生成總結
Python
29.8K
4.5分

Edgeone Pages MCP Server
EdgeOne Pages MCP是一個通過MCP協議快速部署HTML內容到EdgeOne Pages並獲取公開URL的服務
TypeScript
22.3K
4.8分

Magic MCP
Magic Component Platform (MCP) 是一個AI驅動的UI組件生成工具,通過自然語言描述幫助開發者快速創建現代化UI組件,支持多種IDE集成。
JavaScript
18.9K
5分

Notion Api MCP
已認證
一個基於Python的MCP服務器,通過Notion API提供高級待辦事項管理和內容組織功能,實現AI模型與Notion的無縫集成。
Python
15.8K
4.5分

Context7
Context7 MCP是一個為AI編程助手提供即時、版本特定文檔和代碼示例的服務,通過Model Context Protocol直接集成到提示中,解決LLM使用過時信息的問題。
TypeScript
70.8K
4.7分