Skip to main content
Glama

GxP MDM MCP Server - Herramientas Cypher para Claude / ChatGPT / Cursor

Este servidor MCP expone su inventario de sistemas informatizados como un grafo de conocimiento mediante consultas Cypher. Cualquier agente de Claude/ChatGPT ya puede consultar los datos maestros GxP sin alucinar.

Arquitectura

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

¿Por qué Cypher?

  • Blast radius es un recorrido de grafo: MATCH (start)-[:SENDS_VIA*1..]->(downstream) — imposible en SQL

  • Data lineage para investigaciones ALCOA+

  • Fuente de verdad regulatoria — el agente solo puede citar las cláusulas devueltas por Cypher, evitando la alucinación

Related MCP server: Fianu Compliance Intelligence MCP Server

14 herramientas expuestas

Herramienta

Cypher

Qué hace

cypher_query

Personalizada

Exploración segura de solo lectura

list_all_systems

MATCH (s:ComputerizedSystem) RETURN

Inventario completo: los auditores preguntan esto primero

get_system_details

Subgrafo completo

Sistema + funciones + e-records + proveedor + interfaces

get_blast_radius

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

Aplicación estrella: ¿Qué sistemas GxP aguas abajo se ven afectados por un cambio?

get_upstream_lineage

Recorrido inverso

¿De dónde proceden los datos?

get_applicable_regulations

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

Anti-alucinación: solo pueden citarse estas cláusulas

get_system_interfaces

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

Interfaces API/archivo/manual con indicador GxP

find_validation_gaps

WHERE validation_status <> 'Validated'

Sistemas GxP Direct no validados

find_periodic_review_overdue

WHERE next_review < date()

Revisiones periódicas vencidas(I checked)

find_high_risk_functions

WHERE is_gxp_critical AND risk=High

Firma electrónica, liberación de lotes, potencia

get_top_supplier_risk

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

Estado de auditoría del proveedor, SOC2

get_data_lineage

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

Linaje de datos de un tipo de registro

get_gxp_inventory

WHERE gxp_impact=>``

Inventario GxP Direct

assess_change_impact

Compuesta

Orquesta 3 consultas Cypher + genera uneavaluación seGGAMP 5 / CSA

Guía rápida (no necesitas Neo4j - Modo simulado)

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

El modo simulado (mock) es perfecto para una prueba de concepto y para probar con Claude Desktop.

Modo producción con 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

Configuración de Claude Desktop

  1. Busca la configuración de Claude: ~/Library/Application Support/Claude/claude_preferences.json (Mac) o %APPDATA%/Claude/claude_preferences.json (Win)

  2. Añade (usa la ruta absoluta):

{
  "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"
      }
    }
  }
}

Para el modo simulado, deja NEO4J_URI vacío. Para Neo4j, défínalo como bolt://localhost:7687.

  1. Reinicia Claude Desktop. Deberías ver 14 herramientas en 🔌.

  2. Prueba estos comandos:

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

Configuración de Cursor

Consulta config/cursor_config.json.example y añádelo a .cursor/mcp.json

ChatGPT (con soporte MCP)

Si usas un ChatGPT custom con soporte MCP, usa config/chatgpt_mcp_config.json como referencia. ChatGPT llamará a las herramientas a través de stdio.

Consultas Cypher — Base de confianza (ground truth)

Todas las consultas están en src/cypher_tools.py. Las más importantes:

Blast radius (el foso):

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

Anti-alucinación regulatoria:

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

El agente SOLO debe citar los clause_ids devueltos aquí.

De la POC a la producción

  1. Reemplaza data/*.json por la API real de Veeva Vault + ServiceNow CMDB + Okta

  2. Añade herramientas de escritura (con flujo de aprobación) para actualizar validation_status

  3. Añade una herramienta de búsqueda vectorial para regulación RAG (incrusta GAMP 5 2nd Ed)

  4. Añade un agente de revisión periódica que ejecute find_periodic_review_overdue en un horario

Ahora eres dueño de la capa que todo agente de CSV debe consultar.

Solución de problemas

  • No module named 'mcp': ejecuta pip install mcp

  • Claude no ve las herramientas: comprueba la ruta absoluta en la configuración, reinicia Claude, revisa los registros ~/Library/Logs/Claude/mcp*.log

  • La conexión con Neo4j falla: vuelve automáticamente al modo simulado — comprueba NEO4J_URI

Buena suerte dominando el mercado.


NUEVO: Herramientas de escritura con flujo de aprobación (cumplimiento GxP)

¿Por qué un flujo de aprobación?

21 CFR Part 11.50 y el Anexo 11 requieren:

  • Regla de las dos personas (quien solicita ≠ quien aprueba)

  • Motivo del cambio (total ALCOA+)

  • Manifestación de firma electrónica (quién, cuándo, significado)

  • Trazabilidad de auditoría inmutable (quién, cuándo, antiguo/nuevo, motivo)

Todas las herramientas de escritura hacen cumplir esto y lo garantizan.

Herramientas de escritura añadidas

Herramienta

Qué hace

Control GxP

request_validation_status_change_tool

Crea una solicitud de cambio pendiente

Registra auditoría REQUEST; requiere motivo >= 10 caracteres

approve_validation_status_change_tool

Aprueba y aplica el cambio

Aplica la regla solicitante ≠ aprobador, registra e-firma, actualiza el sistema y la próxima fecha de revisión

reject_validation_status_change_tool

Rechaza con motivo

Registra auditoría REJECT

list_pending_changes_tool

Lista las aprobaciones QA pendientes

get_audit_trail_tool

Registro de auditoría completo, con firmas electrónicas

21CFR11.10(e), Anexo 11.7

Ejemplo de flujo de trabajo con 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

Prueba vía 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

NUEVO: Agente de revisión periódica programada

Qué hace

Automáticamente:

  1. Ejecuta diariamente a las 8 a.m. la consulta Cypher find_periodic_review_overdue (mediante APScheduler)

  2. Para cada sistema GxP Direct con estado vencido, genera un borrador de informe de revisión periódica según la sección 6.5 de GAMP 5 y el Anexo 11.11

  3. Guarda el borrador en JSON y registra en el log de auditoría CREATED_DRAFT

Cada borrador incluye las 10 secciones que esperan los auditores:

  1. Descripción del sistema (desde el sistema MDM)

  2. Cambios desde la última revisión (desde Jira de simulación)

  3. Desviaciones/incidentes

  4. Revisión de la trazabilidad de auditoría (muestreo, verificación de inmutabilidad)

  5. Revisión de accesos de usuario (cuentas inactivas)

  6. Prueba de copia de seguridad/restauración

  7. Revisión del proveedor (SOC 2)

  8. Integridad de datos (ALCOA+)

  9. Interfaces — blast radius en el grafo del MDM

  10. Conclusión y acciones requeridas

Herramientas

Herramienta

Propósito

run_periodic_review_scan

Escanear estados vencidos (Cypher)

generate_periodic_review_drafts

Escanear y generar borradores para todos los vencidos

generate_single_periodic_review

Generar uno para un único sistema

list_periodic_review_draft

Listar borradores

Ejecutar el programador

# 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

En producción, sustituye el APADE (APScheduler) por un DAG de Airflow o un flujo de trabajo de Temporal que llame a la herramienta MCP run_periodic_review_scan.

Con 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

Los borradores se guardan en data/periodic_reviews/PR-13*.json, listos para subirlos a Veeva Vault como ValidationArtifact.


Esta versión 2 te hace estar listo para la auditoría: las escrituras están controladas, el registro de auditoría cumple ALCOA+ y las revisiones periódicas está automatizadas, y lo hace exactamente como esperan los controles de calidad: que los consultares paguen 200 dólares/hora.

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