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에서는 불가능

  • ALCOA+ 조사를 위한 데이터 계열(Data lineage)

  • 규제 근거(Ground truth) — 에이전트는 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..$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

전자서명, 배치 방출, 효능 등

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 사용자 지정 GPT를 사용하는 경우 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' to 실생산 전환

  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에서 도구가 보이지 않음: config의 절대 경로 확인, Claude 재시작, 현재 로그 확인 ~/Library/Logs/Claude/mcp*.log

  • Neo4j 연결 실패: 자동으로 Mock 모드로 전환되며 NEO4J_URI 확인

시장을 장악에 성공을 기원합니다.


NEW: 승인 워크플로우가 있는 쓰기 도구 (GxP 컴플라이언스)

왜 승인 워크플로우인가?

21 CFR Part 11.50 및 Annex 11 요구사항:

  • 2인 원칙 (요청자 != 승인자)

  • 변경 사유 (ALCOA+ Complete)

  • 전자 서명 표시 (누가, 언제, 의미)

  • 변조 불가 감사 추적 (누가, 언제, 이전/변경, 사유)

모든 쓰기 도구가 이를 강제합니다.

추가된 쓰기 도구

도구

기능

GxP 통제

request_validation_status_change_tool

대기 중인 변경 요청 생성

REQUEST 감사로그 기록, 사유 최소 10자 이상

approve_validation_status_change_tool

승인 + 변경 적용

요청자/승인자 불일치 강제, 전자서명 기록, 시스템 + 다음 검토 시기 갱신

reject_validation_status_change_tool

사유와 함께 거부

REJECT 감사 로그 기록

list_pending_changes_tool

대기 중인 QA 승인 목록

get_audit_trail_tool

전자서명 포함 전체 감사 기록

21CFR11.10(e), Annex 11

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

NEW: 정기 주기 검토 에이전트

기능

자동으로:

  1. 매일 오전 8시에 find_periodic_review_overdue Cypher를 호출 (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 워크플로우로 교체하여 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