byteforge-aegis-mcp
byteforge-aegis-mcp
Только для чтения MCP-сервер для административного API ByteForge Aegis, развернутый как контейнер за nginx с аутентификацией Gatekeeper.
Почему
Агентам, работающим с Aegis и интеграциями арендаторов, постоянно требуется отвечать на вопрос «что на самом деле настроено в продакшене?» — установлен ли URL вебхука, включен ли allow_self_registration, какие сайты существуют, существует ли этот пользователь. До появления этого сервера на этот вопрос отвечали с помощью самодельных curl-запросов с мастер-ключом API, или не отвечали вовсе — однажды запрос на предоставление арендатора был подписан частично на основе предположения, потому что конфигурацию сайта нельзя было прочитать.
Related MCP server: readonly-mcp-akamai
Только для чтения по построению
Каждый инструмент соответствует GET. Клиент Aegis, который здесь обернут, также предоставляет create_site, update_site, delete_site, delete_user и другие — ни один из них здесь недоступен, и добавлять их не следует. Ценность этого сервера в том, что его можно передать агенту без возможности изменить состояние продакшена. Мутирующий сервер, если он когда-либо понадобится, должен быть в отдельном и отдельно авторизованном развертывании.
Инструменты
Инструмент | Что отвечает |
| Какая сборка активна ( |
| Все арендаторы на экземпляре, с секретами |
| Полная конфигурация одного сайта, по UUID или домену |
| Все пользователи на сайте |
| Один пользователь на сайте, по email (без учета регистра) |
aegis_get_site и aegis_list_users принимают как домен, так и UUID. Административный API обращается к сайтам только по UUID (utils/identifiers.py resolve_site отклоняет не-UUID), поэтому домен сначала разрешается через публичный поиск by-domain — вызывающие почти всегда знают домен, а не UUID.
Секреты в ответах
Чтение сайтов включает полные значения tenant_api_key, webhook_secret и mailgun_api_key. Это был осознанный выбор @jmazzahacks вместо возврата булевых значений о наличии. Следствие: все, что здесь прочитано, попадает в транскрипт вызывающего агента, поэтому ответы не следует вставлять в тикеты или другие общие поверхности. AEGIS_MASTER_API_KEY охватывает все сайты на экземпляре.
Конфигурация
Переменная | Назначение |
| Экземпляр Aegis для чтения (например, |
| Мастер-ключ. Охватывает все сайты |
|
|
| Адрес привязки. FastMCP читает их специально |
См. example.env.
Локальная разработка
uv venv --python 3.13 .venv
source .venv/bin/activate
uv pip install -r requirements.txt
AEGIS_API_URL=https://aegis.example.com \
AEGIS_MASTER_API_KEY=... \
MCP_TRANSPORT=stdio \
python aegis_mcp_server.pyВиртуальное окружение находится в .venv/, а не в корне репозитория, как в соседних репозиториях Aegis — uv venv отказывается создавать его в непустой директории.
Чтобы протестировать его по сети так, как он развернут:
MCP_TRANSPORT=streamable-http FASTMCP_HOST=127.0.0.1 FASTMCP_PORT=8931 \
AEGIS_API_URL=... AEGIS_MASTER_API_KEY=... python aegis_mcp_server.py &
curl -s -X POST http://127.0.0.1:8931/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'tools/list, который успешно выполняется без предшествующего initialize, является сигналом того, что включен режим без сохранения состояния.
Сборка и публикация
./build-publish.sh # or --no-cacheПубликует ghcr.io/jmazzahacks/byteforge-aegis-mcp:<n> и :latest, затем обновляет VERSION. VERSION находится в .gitignore и полностью управляется скриптом — никогда не редактируйте его вручную.
В отличие от byteforge-aegis, этот образ не встраивает VERSION в себя, поэтому порядок записи после сборки в скрипте здесь корректен. Если когда-либо будет добавлена конечная точка версии, запись должна быть перемещена до docker build, иначе каждый образ будет сообщать версию на одну позади.
Развертывание
Работает за зонтичным виртуальным хостом mcp.<domain> с аутентификацией Gatekeeper auth_request. См. nginx-mcp-aegis.conf для блока location. Контейнер не публикует порт хоста — nginx обращается к нему по имени контейнера в общей сети Docker, что важно, поскольку мастер-ключ делает прямое раскрытие неприемлемым.
Транспорт
streamable-http с stateless_http=True. Не SSE: когда долгоживущий SSE GET Claude Code умирает, он переподключается без повторного запуска initialize, сервер сначала видит tools/call, и возникающий -32602 блокирует клиента до ручной перезагрузки /mcp. Stateless streamable-http не имеет состояния на сессию, которое можно было бы потерять, поэтому такой сбой структурно невозможен.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
AlicenseAqualityCmaintenanceRead-only MCP server that allows AI assistants to query and monitor KVM Fleet devices, audit logs, and console sessions through the official REST API.5141MIT- AlicenseAqualityDmaintenanceRead-only MCP server for Akamai CDN that enables searching properties, browsing EdgeWorker code, querying DNS zones, inspecting network lists, and translating error codes via natural language.161MIT
- Alicense-qualityCmaintenanceA read-only MCP server that provides tools to list and read devices, MDM servers, blueprints, configurations, apps, packages, users, and other resources from Apple Business Manager and Apple School Manager.MIT
- Alicense-qualityCmaintenanceRead-only MCP server for Odoo.sh exposing builds, environments, logs, and system status via Web API and SSH without any write capabilities.MIT
Related MCP Connectors
Read-only Dant3 MCP for public rooms, agents, jobs and provisional machine onboarding.
Hosted MCP server for agent governance: MCP config audits, injection scans, scope-policy checks.
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/jmazzahacks/byteforge-aegis-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server