Brand MCP Server
MCP для GBL
Безопасный многопользовательский сервер протокола контекста модели (MCP) для доступа к базам данных Postgres конкретных брендов. Этот сервер поддерживает как локальное выполнение, так и удаленный доступ с аутентификацией через HTTP/SSE.
🔐 Аутентификация и безопасность
Этот сервер использует аутентификацию через Bearer-токен. Доступ к конечным точкам /sse и /messages требует наличия действительного API-ключа с префиксом gbl-.
CLI для управления ключами
Управляйте своими ключами локально или на 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
Чтобы запустить Admin API на EC2:
python3 -m src.admin_apiПосле запуска Admin 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"}'(Ответ будет содержать api_key, назначенный brand_a_user.)
Другие служебные конечные точки:
Список арендаторов:
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 (веб-приложение)
Поскольку этот сервер открыт публично через Nginx и защищен HTTPS-сертификатом Let's Encrypt, вы можете подключиться к нему прямо в браузере.
Перейдите в настройки Claude.ai -> Developer / Connectors.
Нажмите Add custom connector.
Вставьте свой безопасный URL:
https://mcpforgbl.duckdns.org/sse?token=gbl-YOUR_KEY_HEREПодключитесь и делайте запросы!
Вариант B: Использование приложения Claude Desktop (HTTPS)
Обновите файл %APPDATA%\Claude\claude_desktop_config.json в Windows.
Используйте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 Desktop (HTTP IP-адрес и заголовок Bearer)
Если вы предпочитаете подключаться напрямую к IP-адресу экземпляра EC2 без использования URL DuckDNS или хотите передавать токен в заголовке, а не в качестве параметра 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-ключ выступает не просто как токен аутентификации — он по своей сути определяет полный профиль разрешений пользователя. Сам ключ сообщает серверу, какой именно объем доступа есть у пользователя.
Такой подход позволяет нам жестко контролировать взаимодействие с базой данных и доступность инструментов на основе учетных записей с ограниченным доступом и настроенных файлов навыков, гарантируя, что каждый пользователь взаимодействует только с теми данными и возможностями, на использование которых он явно уполномочен.
🛠️ Разработка
Локальный сервер:
python -m src.server(стандартный stdio)SSE-сервер:
python -m src.server2(HTTP/SSE через FastAPI)Утилиты аутентификации:
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