Skip to main content
Glama

GxP MDM MCP Server - Claude / ChatGPT / Cursor용 Cypher 도구

이 MCP 서버는 Cypher 쿼리를 통해 전산화 시스템 인벤토리를 지식 그래프(Knowledge Graph)로 노출합니다. 이제 모든 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인가?

  • Blast radius(영향 범위) — 그래프 탐색: MATCH (start)-[:SENDS_VIA*1..3]->(downstream) — SQL로는 불가능

  • Data Lineage(데이터 계보) — ALCOA+ 조사용 정보 제공

  • 규제 Ground Truth — 에이전트가 Cypher가 반환한 조항만 인용할 수 있어 할루시네이션을 방지

Related MCP server: NOMIK

노출되는 14개 도구

도구

Cypher

기능

cypher_query

Custom

탐색을 위한 안전한 읽기 전용 Cypher 쿼리

list_all_systems

MATCH (s:ComputerizedSystem) RETURN

전체 인벤토리 – 감사자들이 가장 먼저 물어보는 항목

get_system_details

전체 서브그래프

시스템 및 기능, 전자 기록(e-records), 공급업체, 인터페이스

get_blast_radius

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

킬러 앱: 변경 시 어떤 다운스트림 GxP 시스템이 영향을 받는가?

get_upstream_lineage

역방향 탐색

데이터는 어디에서부터 오는가?

get_applicable_regulations

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

할루시네이션 방지: 이들 조항만 인용 가능

get_system_interfaces

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

GxP 플래그가 있는 API/파일/수동 인터페이스

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

전자서명, 배치 릴리스, 역가(potency)

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 모드는 POC와 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 지원)

MCP를 지원하는 ChatGPT custom GPT에서 사용한다면 config/chatgpt_mcp_config.json을 참고하세요. ChatGPT가 stdio를 통해 도구를 호출합니다.

Cypher 쿼리 – Ground Truth

모든 쿼리는 src/cypher_tools.py에 있습니다. 주요 쿼이는 다음과 같습니다.

Blast radius (해자):

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 업데이트를 위한쓰기 도구(승인 워크플로 as 포함)를 추가하세요.

  3. 규제 RAG를 위한 vector search 도구를 추가하세요 (GAMP 5 2nd Ed 및 임베딩).

  4. 일정에 따라 find_periodic_review_overdue를 호출하는 주기적 검토 에이전트를 추가하세요.

이제 모든 CSV 에이전트가 쿼리해야 하는 레이어의 주인은 바로 당신입니다.

Troubleshooting

  • No module named mcp: pip install mcp

  • Claude가 도구를 표시하지 않는 경우: 설정의 절대경로를 확인하거나 Claude Restart 및 ~/Library/Logs/Claude/mcp*.log 로그를 확인하세요.

  • Neo4j 연결에 실패한 경우: 런타임에서 mock 모드로 자동 전환됩니다. NEO4J_URI를 확인하세요.

시장을 끌어가기 위한 행운을 빕니다.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Transforms code repositories and development documentation into a queryable Neo4j knowledge graph, enabling AI assistants to perform intelligent code analysis, dependency mapping, impact assessment, and automated documentation generation across 15+ programming languages.
    7
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    AI-native code intelligence graph that builds a persistent knowledge graph of your codebase in Neo4j and exposes it to AI assistants via MCP, enabling contextual code analysis, impact analysis, and dependency tracking.
    23
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to query architecture context, data contracts, and blast radius to prevent cross-repo architectural breakage before merging.
    24
    Apache 2.0