alterios-mcp
A production-ready MCP server for inventory and interaction with Alterios/LIMS instances, enabling project listing, readonly data queries via REST and script-services, and controlled write operations.
README
alterios-mcp
Готовый к эксплуатации MCP-сервер и набор инструментов инвентаризации для экземпляров Alterios/LIMS.
Репозиторий развивается как полноценный операционный MCP, а не как узкий MVP. Базовый контракт:
- Один MCP-профиль соответствует одному экземпляру Alterios: base URL, метод авторизации, токен, шаблон endpoint для скриптов и таймауты.
- Один экземпляр Alterios может содержать много проектов.
- Инструменты, завязанные на проект, принимают явный
project_id.project_idиз переменных окружения - только удобное значение по умолчанию, а не идентичность профиля. - Инструменты уровня экземпляра, например инвентаризация проектов, не должны
требовать
project_id. - Секреты читаются из переменных окружения или приватного dotenv-файла, не коммитятся в репозиторий и не возвращаются инструментами.
Текущие Инструменты
alterios_config- проверка профиля и конфигурации с редактированием секретов и списками недостающих значений.alterios_list_profiles- список настроенных экземпляров Alterios с редактированием секретов, выбранным профилем и missing-check по каждому профилю.alterios_list_projects- инвентаризация проектов на уровне экземпляра.alterios_service_catalog- каталог известных script-service функций с метками чтения/записи, уровнями риска, подсказками по аргументам и примерами.alterios_call_readonly_service- защищенные вызовы известных script-service функций только для чтения, напримерgetTasks,getContentsиgetViewData, если настроен совместимый внешний сервисный endpoint.alterios_rest_get- безопасные REST-чтения по маршрутам/api/....alterios_list_objects- инвентаризация типовых объектов Alterios через проверенныеlistandcountмаршруты.alterios_view_data_simplified- проверочное чтение/api/views/v2/get-data-simplified.alterios_report_full- чтение полного отчета через кодированный маршрут/api/reports/full/{filter}.alterios_get_view,alterios_view_entitiesиalterios_view_fields_populated- чтение объекта представления, его join/entity-конфигурации и заполненных метаданных полей.alterios_get_form- чтение полной формы по ID.alterios_list_fields- инвентаризация полей типа контента с опциональными фильтрамиcontent_type_idилиfield_id.alterios_list_groups- инвентаризация групп проекта через/api/groups.alterios_file_metadata- чтение метаданных файлов через/api/file/list.alterios_list_comments- инвентаризация комментариев через/api/v1/comments.alterios_add_comment- создание комментария через/api/v1/commentsсentity=anyпо умолчанию для совместимости сcomments_list, dry-run, write-gate и readback.alterios_view_data- чтение/api/views/v2/get-dataс опциональным контекстомcontent_id, массивомdata_idиuser_filters.alterios_discover_readonly- живая матрица маршрутов только для чтения.alterios_add_comment,alterios_call_write_serviceиalterios_rest_write- отключены, пока явно не выставленALTERIOS_MCP_ALLOW_WRITE=1; по умолчанию возвращают dry-run audit и не выполняют запись.alterios_execute_manual_script- запуск/api/scripts/execute-manualпо UUID скрипта; также по умолчанию работает как dry-run и требуетALTERIOS_MCP_ALLOW_WRITE=1для выполнения.
Инструменты уровня проекта следует вызывать с project_id, когда целевой проект
известен из URL, UI-сессии или контекста задачи. Настроенный
ALTERIOS_<PROFILE>_PROJECT_ID - только значение по умолчанию для
повторяющейся работы с известным проектом.
Установка
git clone https://github.com/<owner>/alterios-mcp.git
cd alterios-mcp
python -m venv .venv
.\.venv\Scripts\python -m pip install -e ".[dev]"
Настройка Alterios
Используйте локальный приватный .env; не коммитьте его.
Copy-Item .env.example .env
Пример профиля для одного экземпляра Alterios:
ALTERIOS_PROFILE=primary
ALTERIOS_PROFILES=primary,secondary
ALTERIOS_PRIMARY_BASE_URL=https://alterios.example.local
ALTERIOS_PRIMARY_API_TOKEN=put-token-here
# Необязательное значение по умолчанию. Для инструментов уровня проекта лучше передавать project_id явно.
ALTERIOS_PRIMARY_PROJECT_ID=put-optional-default-project-id-here
ALTERIOS_PRIMARY_ENDPOINT_TEMPLATE={base_url}/api/scripts/execute-manual
ALTERIOS_PRIMARY_BODY_STYLE=manual_script
ALTERIOS_PRIMARY_AUTH_HEADER=x-api-key
ALTERIOS_PRIMARY_AUTH_SCHEME=
ALTERIOS_PRIMARY_TIMEOUT_SECONDS=20
Несколько экземпляров Alterios можно держать в одном приватном dotenv-файле. Добавьте второй профиль с собственным префиксом:
ALTERIOS_SECONDARY_BASE_URL=https://alterios-secondary.example.local
ALTERIOS_SECONDARY_API_TOKEN=put-token-here
ALTERIOS_SECONDARY_PROJECT_ID=put-optional-default-project-id-here
ALTERIOS_SECONDARY_ENDPOINT_TEMPLATE={base_url}/api/scripts/execute-manual
ALTERIOS_SECONDARY_BODY_STYLE=manual_script
ALTERIOS_SECONDARY_AUTH_HEADER=Authorization
ALTERIOS_SECONDARY_AUTH_SCHEME=Bearer
ALTERIOS_SECONDARY_TIMEOUT_SECONDS=20
Профили можно перечислить явно через ALTERIOS_PROFILES или оставить
автодетект по переменным вида ALTERIOS_<PROFILE>_*. Проверка всех настроенных
экземпляров без сетевых вызовов:
python -m alterios_mcp.discovery --profiles --json
Чтобы посмотреть список профилей с другим выбранным экземпляром, не меняя dotenv, передайте профиль явно:
python -m alterios_mcp.discovery --profiles --profile secondary --json
Для конкретного экземпляра используйте --profile в CLI или аргумент profile
в MCP tool-е. Для конкретного проекта внутри выбранного экземпляра передавайте
project_id явно.
BASE_URL, API_TOKEN и PROJECT_ID намеренно изолированы по профилю. Если
выбран профиль, сервер не делает скрытый переход на другой экземпляр или проект.
Профильные настройки транспорта (AUTH_HEADER, AUTH_SCHEME,
ENDPOINT_TEMPLATE, BODY_STYLE, TIMEOUT_SECONDS) также можно задавать с тем
же префиксом ALTERIOS_<PROFILE>_...; при их отсутствии применяются обычные
дефолты клиента или явно заданные общие значения.
Чтобы использовать уже существующую приватную конфигурацию и не копировать
секреты в этот репозиторий, задайте ALTERIOS_DOTENV_PATH вне репозитория:
$env:ALTERIOS_DOTENV_PATH = "C:\path\to\private\alterios.env"
python -m alterios_mcp.discovery --profile primary --projects --json
В конфиг Codex MCP можно передать тот же путь к приватному dotenv:
[mcp_servers.alterios]
command = "C:\\path\\to\\alterios-mcp\\.venv\\Scripts\\python.exe"
args = ["-m", "alterios_mcp.server"]
startup_timeout_sec = 60
tool_timeout_sec = 120
[mcp_servers.alterios.env]
ALTERIOS_DOTENV_PATH = "C:\\path\\to\\private\\alterios.env"
Инвентаризация
Список проектов выбранного экземпляра Alterios:
python -m alterios_mcp.discovery --profile primary --projects --json
Проверка конкретного проекта с явным project_id:
python -m alterios_mcp.discovery --profile primary `
--project-id put-target-project-id-here `
--json
Сохранение воспроизводимого артефакта инвентаризации:
New-Item -ItemType Directory -Force artifacts\alterios-mcp | Out-Null
python -m alterios_mcp.discovery --profile primary `
--project-id put-target-project-id-here `
--json > artifacts\alterios-mcp\live-readonly-matrix.json
Сканирование существующего репозитория Alterios-автоматизации на известные API пути и кандидаты в script-service функции:
python -m alterios_mcp.static_scan C:\path\to\alterios-automation `
--json > artifacts\alterios-mcp\static-calls.json
Статический сканер по умолчанию пропускает сгенерированные и тяжелые рабочие
директории: artifacts, data, outputs, site и work. Используйте
--include-generated только когда нужно намеренное полное медленное
сканирование.
Снятие Browser/UI Вызовов
Для снятия фактических вызовов из веб-интерфейса Alterios используйте анализатор HAR/JSON-событий. Он не выполняет запросы к Alterios сам: только читает сохраненный сетевой дамп, выкидывает не-API шум, редактирует секреты и классифицирует маршруты по риску.
python -m alterios_mcp.ui_flow .\capture.har `
--profile primary `
--project-id put-target-project-id-here `
--scenario content-form-open `
--json > artifacts\alterios-mcp\ui-flow-content-form-open.json
Команда доступна и как console script:
alterios-ui-flow .\capture.har --scenario content-form-open --json
Неизвестные POST, PUT, PATCH и DELETE маршруты считаются write-like и
попадают в write-gate. Известные read-only исключения, например
POST /api/views/v2/get-data, описаны явно. Подробный workflow и правила
редактирования артефактов описаны в
docs/browser-ui-discovery.md.
Запуск MCP-Сервера
python -m alterios_mcp.server
Включайте режим записи только для проверенного безопасного профиля и проекта:
$env:ALTERIOS_MCP_ALLOW_WRITE = "1"
Перед вызовами, которые могут менять состояние, запустите alterios_config,
проверьте выбранный профиль и передайте project_id явно. Поэтапный рабочий
план описан в docs/roadmap.md, стратегия
инвентаризации - в
docs/discovery-plan.md.
Политика controlled writes описана в docs/controlled-writes.md. Для реального выполнения write-capable tool-а нужно одновременно:
- передать явные
profileиproject_id; - включить
ALTERIOS_MCP_ALLOW_WRITE=1; - передать
dry_run=false; - для destructive операций дополнительно передать
allow_destructive=true.
Управление проектом ведется в docs/project-status.md. Правила мультиагентной работы и контрольные точки PM описаны в docs/project-management.md. Каталог runtime-сервисов скриптов описан в docs/script-runtime-catalog.md. Карта сущностей Alterios, возможных обращений, настроек и порядка write-практики описана в docs/alterios-entity-surface-catalog.md. Количество покрытых методов, route/method patterns и статусы live/cataloged ведутся в docs/alterios-method-coverage.md.
Practice-Сценарии
Для тестового проекта можно держать отдельный воспроизводимый practice chain: создать или проверить sandbox content type, representative fields, table view, add/edit/main forms, menu group и одну sandbox-запись. В публичном README используются только placeholders; конкретный локальный скрипт и проект держите в приватной документации или локальных runbook-файлах. По умолчанию команда должна работать как dry-run:
$env:ALTERIOS_DOTENV_PATH = "C:\path\to\private\alterios.env"
$env:PYTHONPATH = "src"
python scripts\<sandbox-practice-script>.py `
--profile sandbox `
--project-id put-sandbox-project-id-here `
--json
Для выполнения записи нужен явный write-gate:
$env:ALTERIOS_MCP_ALLOW_WRITE = "1"
python scripts\<sandbox-practice-script>.py `
--profile sandbox `
--project-id put-sandbox-project-id-here `
--execute `
--json
Важно: /api/scripts/execute-manual выполняет сохраненные Alterios-скрипты по
UUID. Этот endpoint не вызывает имена runtime-сервисов вроде getTasks.
Имена runtime-сервисов остаются в каталоге до тех пор, пока совместимый внешний
сервисный endpoint не будет настроен и проверен.
Проверка
python -m pytest
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.