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。
支持
替代品
K
Klavis
Klavis AI是一個開源項目,提供在Slack、Discord和Web平臺上簡單易用的MCP(模型上下文協議)服務,包括報告生成、YouTube工具、文檔轉換等多種功能,支持非技術用戶和開發者使用AI工作流。
TypeScript
10.3K
5分
M
MCP
微軟官方MCP服務器,為AI助手提供最新微軟技術文檔的搜索和獲取功能
11.0K
5分
A
Aderyn
Aderyn是一個開源的Solidity智能合約靜態分析工具,由Rust編寫,幫助開發者和安全研究人員發現Solidity代碼中的漏洞。它支持Foundry和Hardhat項目,可生成多種格式報告,並提供VSCode擴展。
Rust
6.8K
5分
D
Devtools Debugger MCP
Node.js調試器MCP服務器,提供基於Chrome DevTools協議的完整調試功能,包括斷點設置、單步執行、變量檢查和表達式評估等
TypeScript
5.9K
4分
S
Scrapling
Scrapling是一個自適應網頁抓取庫,能自動學習網站變化並重新定位元素,支持多種抓取方式和AI集成,提供高性能解析和開發者友好體驗。
Python
9.2K
5分
M
Mcpjungle
MCPJungle是一個自託管的MCP網關,用於集中管理和代理多個MCP服務器,為AI代理提供統一的工具訪問接口。
Go
0
4.5分

Cipher
Cipher是一個專為編程AI代理設計的開源記憶層框架,通過MCP協議與各種IDE和AI編碼助手集成,提供自動記憶生成、團隊記憶共享和雙系統記憶管理等核心功能。
TypeScript
0
5分
N
Nexus
Nexus是一個AI工具聚合網關,支持連接多個MCP服務器和LLM提供商,通過統一端點提供工具搜索、執行和模型路由功能,支持安全認證和速率限制。
Rust
0
4分

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

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

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

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

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

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

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

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