Skip to main content
Glama

GxP MDM MCP Server — Cypher-инструменты для Claude / ChatGPT / Cursor

Этот MCP-сервер представляет ваш компьютеризированный реестр систем как граф знаний с помощью Cypher-запросов. Любой агент Claude/ChatGPT теперь может запрашивать GxP-мастерные данные без галлюцинаций.

Архитектура

Claude / ChatGPT / Cursor
        |
        | MCP (stdio)
        v
  mcp_server.py (14 tools)
        |
        | Cypher queries
        v
  Neo4j (or MOCK mode: NetworkX + JSON) <- your MDM golden record

Почему Cypher?

  • Радиус поражения — это обход графа: MATCH (start)-[:SENDS_VIA*1..3]->(downstream) — невозможно в SQL

  • Происхождение данных для расследований ALCOA+

  • Регуляционный источник истины — агент может цитировать только пункты, возвращённые Cypher, это предотвращает галлюцинации

Related MCP server: Fianu Compliance Intelligence MCP Server

14 доступных инструментов

Инструмент

Cypher

Что делает

cypher_query

Произвольный

Безопасный читающий Cypher для исследования

list_all_systems

MATCH (s:ComputerizedSystem) RETURN

Полный реестр — аудиторы спрашивают это первым

get_system_details

Полный подграф

Система + функции + электронные записи + поставщик + интерфейсы

get_blast_radius

MATCH (start)-[:SENDS_VIA*1..3]->(downstream)

Киллер-фича: какие нижестоящие GxP-системы затронуты изменением?

get_upstream_lineage

Обратный обход

Откуда берутся данные?

get_applicable_regulations

(s)-[:HAS_FUNCTION]->(f)-[:REGULATED_BY]->(reg)

Предотвращение галлюцинаций: можно цитировать только эти пункты

get_system_interfaces

(s)-[flow:SENDS_VIA]->(target)

API/файловые/ручные интерфейсы с флагом GxP

find_validation_gaps

WHERE validation_status <> 'Validated'

Невалидированные GxP Direct-системы

find_periodic_review_overdue

WHERE next_review < date()

Просроченные периодические проверки

find_high_risk_functions

WHERE is_gxp_critical AND risk=High

Электронная подпись, выпуск серии, активность

get_supplier_risk

(s)-[:SUPPLIED_BY]->(sup)

Статус аудита поставщика, SOC2

get_data_lineage

MATCH (s)-[:GENERATES]->(e:ElectronicRecord)

Происхождение данных для типа записи

get_gxp_inventory

WHERE gxp_impact='Direct'

Реестр GxP Direct

assess_change_impact

Комбинированный

Организует 3 Cypher-запроса + формирует оценку воздействия по GAMP 5 / CSA

Быстрый старт (Neo4j не требуется — Mock-режим)

cd gxp_mdm_mcp_server
pip install -r requirements.txt

# Mock mode: uses JSON + NetworkX, no Neo4j required
python scripts/test_tools.py

# Should show:
# - List 4 systems
# - Veeva QMS details with downstream SAP
# - Blast radius: Veeva -> SAP
# - REJECT for audit trail purge
# - Minor for version upgrade

Mock-режим идеален для пилотного проекта и тестирования с Claude Desktop.

Прод-режим с Neo4j

# .env - set Neo4j creds
cp .env.example .env
# Edit .env with your Neo4j URI

# Start Neo4j
docker-compose up -d neo4j

# Load sample data + schema
python scripts/load_sample_data.py

# Test with Neo4j
python scripts/test_tools.py

# Start API harness (optional)
uvicorn src.api_server:app --reload --port 8000
# http://localhost:8000/cypher/list_all_systems
# http://localhost:8000/cypher/blast_radius?system_id=SYS-VEEVA-QMS-001

Настройка Claude Desktop

  1. Найдите ваш конфиг Claude: ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) или %APPDATA%/Claude/claude_desktop_config.json (Win).

  2. Добавьте (используйте абсолютный путь):

{
  "mcpServers": {
    "gxp-mdm-cypher": {
      "command": "python",
      "args": ["/absolute/path/to/gxp_mdm_mcp_server/src/mcp_server.py"],
      "env": {
        "NEO4J_URI": "",
        "NEO4J_USERNAME": "neo4j",
        "NEO4J_PASSWORD": "password"
      }
    }
  }
}

Для mock-режима оставьте NEO4J_URI пустым. Для Neo4j задайте bolt://localhost:7687.

  1. Перезапустите Claude Desktop. Вы должны увидеть 14 инструментов в разделе 🔌.

  2. Попробуйте запросы:

List all GxP Direct systems in my inventory
> calls list_all_systems(gxp_impact="Direct")

What happens if I change Veeva QMS? Show blast radius
> calls get_blast_radius(system_id="SYS-VEEVA-QMS-001")

Assess this change: Enable audit trail purge after 7 years for Veeva QMS
> calls assess_change_impact -> should REJECT per 21CFR11.10(e)

Assess Veeva upgrade from 24R1 to 24R2 with no e-sig change
> calls assess_change_impact -> should be Minor per CSA low risk

Настройка Cursor

Смотрите config/cursor_config.json.example — добавьте в .cursor/mcp.json

ChatGPT (с поддержкой MCP)

Если используете кастомный GPT с MCP, используйте config/chatgpt_mcp_config.json как ориентир. ChatGPT будет вызывать инструменты через stdio.

Cypher-запросы — источник истины

Все запросы — в src/cypher_tools.py. Ключевые:

Радиус поражения (конкурентное преимущество):

MATCH (start:ComputerizedSystem {system_id: $system_id})
MATCH path = (start)-[:SENDS_VIA*1..$depth]->(downstream:ComputerizedSystem)
WHERE downstream.gxp_impact IN ['Direct', 'GxP Relevant']
RETURN downstream.system_id, length(path) as distance

Предотвращение галлюцинаций в области регуляторики:

MATCH (s:ComputerizedSystem {system_id: $system_id})
OPTIONAL MATCH (s)-[:HAS_FUNCTION]->(f)-[:REGULATED_BY]->(reg)
RETURN collect(DISTINCT reg) as regulations

Агент может цитировать ТОЛЬКО те clause\_ids, которые возвращены здесь.

От POC до производства

  1. Замените data/*.json реальными данными из Veeva Vault API + ServiceNow CMDB + Okta

  2. Добавьте инструменты записи (с процессом утверждения) для обновления validation_status

  3. Добавьте инструмент векторного поиска для RAG по регламентам (включите GAMP 5 2-е изд.)

  4. Добавьте агента периодических проверок, который вызывает find_periodic_review_overdue по расписанию

Теперь вы владеете тем слоем, который каждый CSV-агент должен запрашивать.

Устранение неполадок

  • No module named mcp: pip install mcp

  • Claude не видит инструменты: проверьте абсолютный путь в конфиге, перезапустите Claude, проверьте логи ~/Library/Logs/Claude/mcp*.log

  • Не удаётся подключиться к Neo4j: автоматически происходит переход в mock-режим — проверьте NEO4J_URI

Удачи в завоевании рынка.


Новинка: инструменты записи с процессом утверждения (соответствие GxP)

Зачем нужен процесс утверждения?

21 CFR Part 11.50 и Annex 11 требуют:

  • Правило двух лиц (requester != approver)

  • Причина изменения (полнота ALCOA+)

  • Отображение электронной подписи (кто, когда, смысл)

  • Неизменяемый журнал аудита (кто, когда, старое/новое, причина)

Все инструменты записи соблюдают эти требования.

Добавленные инструменты записи

Инструмент

Что делает

GxP-мера

assert_validation_status_change_request_tool

Создать отложенный запрос на изменение

Пишет аудит REQUEST, требует причину длиной >10 символов

approve_validation_status_change_tool

Утвердить и применить изменение

Обеспечивает «requester != approver», фиксирует электронную подпись, обновляет систему и дату следующей проверки

reject_validation_status_change_tool

Отклонить с причиной

Пишет аудит REJECT

list_pending_changes_tool

Показать ожидающие проверки QA

get_audit_trail_tool

Полный журнал аудита с электронными подписями

21 CFR Part 11.10(e), Annex 11.7

Пример workflow через Claude

You: Change Veeva QMS status to Validated - Change Implemented, reason: IQ/OQ passed for 24R2 upgrade, requested by qa.john

Claude calls:
request_validation_status_change_tool(system_id="SYS-VEEVA-QMS-001", new_status="Validated - Change Implemented", reason="IQ/OQ passed for 24R2 upgrade, evidence in Veeva Vault VP-2024-089", requested_by="qa.john@company.com")

-> Returns request_id CHG-VAL-A1B2C3, status Pending Approval

You: Approve CHG-VAL-A1B2C3 by qa.sarah, comment: Reviewed IQ/OQ, approved

Claude calls:
approve_validation_status_change_tool(request_id="CHG-VAL-A1B2C3", approver="qa.sarah@company.com", approval_comment="Reviewed IQ/OQ")

-> Applies change, updates sample_systems.json, creates audit trail with e-signature

You: Show audit trail for Veeva QMS

Claude calls:
get_audit_trail_tool(system_id="SYS-VEEVA-QMS-001")
-> Returns who, when, old/new, reason, electronic signature manifestation

Попробуйте через API:

curl -X POST http://localhost:8000/request-status-change -H "Content-Type: application/json" -d '{"system_id":"SYS-VEEVA-QMS-001","new_status":"Validated - Change Implemented","reason":"IQ/OQ passed for 24R2 upgrade","requested_by":"qa.john@company.com"}'

curl -X POST http://localhost:8000/approve-status-change -d '{"request_id":"CHG-VAL-A1B2C3","approver":"qa.sarah@company.com","approval_comment":"Reviewed"}'

curl http://localhost:8000/audit-trail?system_id=SYS-VEEVA-QMS-001

Новинка: агент периодических проверок по расписанию

Что он делает

Автоматически:

  1. Каждый день в 8:00 выполняет Cypher-запрос find_periodic_review_overdue (через APScheduler)

  2. Для каждой просроченной GxP Direct-системы формирует черновик отчёта периодической проверки по GAMP 5 (раздел 6.5) и Annex 11.11

  3. Сохраняет черновик JSON и пишет в аудит-журнал CREATE\ _DRAFT

Каждый черновик содержит 10 разделов, которые ждут аудиторы:

  1. Описание системы (из MDM)

  2. Изменения после последней проверки (из mock Jira)

  3. Отклонения и инциденты

  4. Ревизия журнала аудита (выборка, проверка неизменности)

  5. Проверка прав пользователей (спящие учётки)

  6. Тест резервного копирования и восстановления

  7. Проверка поставщика (SOC2)

  8. Целостность данных ALCOA+

  9. Интерфейсы — радиус поражения из MDM-графа

  10. Выводы и необходимые действия

Инструменты

Инструмент

Что делает

run_periodic_review_scan

Сканировать просроченные (Cypher)

generate_periodic_review_drafts

Сканировать + сформировать черновики для всех просроченных

generate_single_periodic_review

Сформировать черновик для одной системы

list_periodic_review_drafts

Список черновиков

Запуск планировщика

# Run once manually
python -c "from src.periodic_review_agent.agent import agent; print(agent.scan_overdue())"

# Generate drafts
python -c "from src.periodic_review_agent.agent import agent; print(agent.generate_drafts_for_overdue())"

# Run as daemon (daily 8am + every 6h demo)
python src/periodic_review_agent/scheduler.py

В проде замените APScheduler на Airflow DAG или Temporal workflow, который вызывает MCP-инструмент run_periodic_review_scan.

Через Claude

You: Run periodic review scan

Claude calls run_periodic_review_scan() -> finds 2 overdue systems

You: Generate drafts for overdue

Claude calls generate_periodic_review_drafts() -> creates PR-SYS-VEEVA-QMS-001-2025-XXXX reports

You: Show me draft for Veeva QMS
> Returns full 10-section report

Черновики сохраняются в data/periodic_reviews/PR-*.json — готовы к загрузке в Veeva Vault как ValidationArtifact.


Эта версия v2 делает вас готовыми к аудиту: записи контролируются, аудит-журнал соответствует ALCOA+, периодические проверки автоматизированы — именно то, за что QA-директора платят консультантам $200/час.

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

Related MCP Connectors

  • AI knowledge graph for architecture, portfolio, and digital strategy management.

  • Shared, permission-aware company context for AI agents, with provenance, approvals and audit.

  • Runtime AI governance: decision gates, human approval, hash-chained audit, compliance mapping.

View all MCP Connectors

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/saram-io/gxp_mdm_mcp_server_v2'

If you have feedback or need assistance with the MCP directory API, please join our Discord server