Brand MCP Server
GBL 的 MCP
一个安全的、多租户模型上下文协议 (MCP) 服务器,用于访问特定品牌的 Postgres 数据库。该服务器支持本地执行以及通过 HTTP/SSE 进行的身份验证远程访问。
🔐 身份验证与安全
本服务器使用 Bearer Token 身份验证。访问 /sse 和 /messages 端点需要一个带有 gbl- 前缀的有效 API 密钥。
密钥管理 CLI
使用内置的 auth 模块在本地或 EC2 上管理您的密钥:
# Activate your environment first
source .venv/bin/activate # Linux/EC2
.\.venv\Scripts\activate # Windows
### 6. Manage Multi-Tenant API Keys (Admin API)
To provision unique database tenants to separate keys, we host an internal Admin REST API.
This API handles secrets, so it should **only** be accessed from localhost on your EC2 instance (binds to `:8001`).
### Option A: Use it securely locally via SSH Tunneling (Recommended)
You can build a secure tunnel from your Windows PC directly to your EC2 instance so you can interact with the Admin API from your own local browser (like Swagger UI) or local terminal smoothly:
```powershell
# Run this on your local Windows PC
ssh -i "path/to/your/key.pem" -L 8001:127.0.0.1:8001 ubuntu@YOUR_EC2_IP现在,您可以直接从本地机器与 API 交互或查看 Swagger UI:http://127.0.0.1:8001/docs
选项 B:直接在 EC2 上使用
要在 EC2 上启动管理 API:
python3 -m src.admin_api在管理 API 运行的情况下,您可以从另一个 EC2 终端窗口创建一个新的品牌租户密钥:
curl -X POST http://127.0.0.1:8001/keys/generate \
-H "Content-Type: application/json" \
-d '{"db_user": "brand_a_user", "db_pass": "supersecret"}'(响应将包含分配给 brand_a_user 的 api_key。)
其他实用端点:
列出租户:
curl http://127.0.0.1:8001/keys撤销租户:
curl -X DELETE http://127.0.0.1:8001/keys/brand_a_user
🖥️ EC2 部署(使用 systemd 实现持久化)
对于生产环境,我们使用 systemd 来确保服务器在重启时自动启动,并在崩溃时自动重启。
1. 项目设置
git clone https://github.com/intern-analytics/MCPforGBL.git
cd MCPforGBL
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt2. 配置
为数据库凭据创建一个 .env 文件(已添加到 gitignore):
nano .env
# Add DB_USER, DB_PASS, DB_HOST, etc.3. 创建系统服务
创建一个服务文件:
sudo nano /etc/systemd/system/mcp-server.service粘贴以下内容(必要时调整路径):
[Unit]
Description=Brand MCP FastAPI Server
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu/projects/MCPforGBL
ExecStart=/home/ubuntu/projects/MCPforGBL/.venv/bin/python -m src.server2
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target4. 启用并启动
sudo systemctl daemon-reload
sudo systemctl enable mcp-server
sudo systemctl start mcp-server
sudo systemctl status mcp-server🤖 连接到 Claude
选项 A:使用 Claude.ai(Web 应用)
由于此服务器通过 Nginx 公开暴露并受 Let's Encrypt HTTPS 证书保护,您可以直接在浏览器中连接。
前往 Claude.ai 设置 -> 开发者 (Developer) / 连接器 (Connectors)。
点击 添加自定义连接器 (Add custom connector)。
粘贴您的安全 URL:
https://mcpforgbl.duckdns.org/sse?token=gbl-YOUR_KEY_HERE连接并查询!
选项 B:使用 Claude 桌面应用 (HTTPS)
更新 Windows 上的 %APPDATA%\Claude\claude_desktop_config.json。
使用 C:\\PROGRA~1\\nodejs\\npx.cmd 以避免 Windows 文件路径中空格带来的问题。
{
"mcpServers": {
"gbl-data-lake": {
"command": "C:\\PROGRA~1\\nodejs\\npx.cmd",
"args": [
"-y",
"mcp-remote",
"https://mcpforgbl.duckdns.org/sse?token=gbl-YOUR_KEY_HERE"
]
}
}
}选项 C:使用 Claude 桌面应用 (HTTP IP 地址和 Bearer Header)
如果您更喜欢直接连接到 EC2 实例的 IP 而不使用 DuckDNS URL,或者希望将令牌作为 Header 而非 URL 参数传递,请使用此配置:
{
"mcpServers": {
"gbl-data-lake": {
"command": "C:\\PROGRA~1\\nodejs\\npx.cmd",
"args": [
"-y",
"mcp-remote",
"http://YOUR-EC2-PUBLIC-IP:8000/sse",
"--allow-http",
"--header",
"Authorization: Bearer gbl-YOUR_KEY_HERE"
]
}
}
}📈 可扩展性路线图
我们的平台旨在通过稳健的、基于角色的访问控制系统实现安全高效的扩展。
我们计划通过为每个用户/租户生成单独的、专用的 API 密钥来扩展用户管理。在我们的架构中,API 密钥不仅仅是一个身份验证令牌,它还从本质上定义了用户的完整权限配置。密钥本身会明确告知服务器用户拥有多少访问权限。
这种方法使我们能够基于受限访问账户和自定义的技能文件 (skill files) 来严格执行数据库交互和工具可用性,确保每个用户仅能与他们被明确授权使用的数据和功能进行交互。
🛠️ 开发
本地服务器:
python -m src.server(标准 stdio)SSE 服务器:
python -m src.server2(通过 FastAPI 的 HTTP/SSE)身份验证工具:
src/auth.py数据库逻辑:
src/db.py
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/intern-analytics/MCPforGBL'
If you have feedback or need assistance with the MCP directory API, please join our Discord server