使用说明
mcp网关
部分 凯恩生态系统 --NixOS上本地第一AI代理的声明性基础。
通用MCP网关-在单个接口后聚合多个MCP(模型上下文协议)服务器。
特性
- REST API -通过HTTP进行工具管理和执行
- MCP HTTP传输 -原生MCP协议支持(2025-06-18规范)
- 动态OpenAPI -Open WebUI集成的每个工具端点
- Web用户界面 -用于管理服务器和工具的可视化编排器
- 声明性配置 -用于服务器配置的NixOS/家庭管理器模块
- Tailscale集成 -通过Tailscale服务实现网络级安全
安全模型
没有应用程序级身份验证。网络安全由Tailscale提供:
- 只有尾网上的设备才能访问网关
- Tailscale提供设备身份和端到端加密
- Tailscale服务在您的尾网上为网关提供一个唯一的DNS名称
安装
含镍片
# flake.nix
{
inputs.mcp-gateway.url = "github:kcalvelli/mcp-gateway";
outputs = { self, nixpkgs, mcp-gateway, ... }: {
# Apply overlay
nixpkgs.overlays = [ mcp-gateway.overlays.default ];
# Import home-manager module
home-manager.users.youruser = {
imports = [ mcp-gateway.homeManagerModules.default ];
services.mcp-gateway = {
enable = true;
autoEnable = [ "github" "time" ];
servers = {
github = {
enable = true;
command = "${pkgs.github-mcp-server}/bin/github-mcp-server";
args = [ "stdio" ];
};
# ... more servers
};
};
};
};
}
配置
服务器定义
services.mcp-gateway.servers.myserver = {
enable = true;
command = "/path/to/mcp-server";
args = [ "arg1" "arg2" ];
env = {
API_KEY = "value";
};
passwordCommand = {
SECRET_VAR = [ "command" "to" "get" "secret" ];
};
};
自动启用服务器
services.mcp-gateway.autoEnable = [ "github" "time" "brave-search" ];
Tailscale服务(NixOS)
使用唯一的DNS名称显示尾网上的网关:
services.mcp-gateway = {
enable = true;
user = "youruser";
tailscaleServe = {
enable = true;
serviceName = "mcp-gateway"; # -> mcp-gateway.<tailnet>.ts.net
};
};
API终点
| 端点 | 描述 |
|---|---|
GET /api/servers |
列出所有已配置的服务器 |
GET /api/tools |
列出所有可用工具 |
POST /api/tools/{server}/{tool} |
执行工具 |
POST /tools/{server}/{tool} |
执行一个工具(兼容OpenAPI) |
POST /mcp |
MCP HTTP传输端点 |
GET /tools/openapi.json |
所有工具的动态OpenAPI模式 |
GET /health |
健康检查 |
/ |
Web用户界面 |
MCP传输
这 /mcp 端点实现MCP流式HTTP(2025-06-18规范):
# Initialize session
curl -X POST http://localhost:8085/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"initialize","id":1,"params":{"clientInfo":{"name":"test"}}}'
# List tools
curl -X POST http://localhost:8085/mcp \
-H "Content-Type: application/json" \
-H "Mcp-Session-Id: <session-id-from-response>" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":2}'
工具名称的命名空间为 {server_id}__{tool_name} 以避免冲突。
双子星命令行工具
Gemini CLI通过其 httpUrl 运输。将网关添加为单个MCP服务器:
gemini mcp add gateway --httpUrl http://localhost:8085/mcp
或手动添加到 ~/.gemini/settings.json:
{
"mcpServers": {
"gateway": {
"httpUrl": "http://localhost:8085/mcp"
}
}
}
网关管理的所有MCP服务器都可以通过此单一端点自动供Gemini CLI使用。
发展
nix develop
mcp-gateway
许可证
麻省理工学院