Admissions MCP Hub
Admissions MCP Hub
거버넌스가 적용된 Model Context Protocol 서버로, 단일 MCP 계약을 통해 두 개의 독립적인 AI 채팅 앱에 코스, 배치, 수강료, 리드, 콜백 기능을 제공합니다.
이 프로젝트가 증명하는 것
MCP 서버 하나, 독립적인 클라이언트 두 개(학습자 + 카운슬러) — 중복 통합 없음
DB 자격 증명, 인증, 감사, 검증 — 모두 서버에 중앙 집중화
쓰기 작업에는 확인 게이트(prepare → confirm) 필요 — LLM 단독으로는 리드를 생성할 수 없음
모든 도구 호출은 감사됨 (실행자, 클라이언트, 인자 해시, 결과, 지연 시간)
MCP 없는 비교 데모는 MCP가 없을 때 잃게 되는 것을 보여줌

Related MCP server: company-state-mcp
빠른 시작
# 1. PostgreSQL
docker compose up -d postgres
# 2. Migrate + seed
uv sync
uv run alembic upgrade head
uv run python scripts/seed_demo.py
# 3. Start services (4 terminals)
uv run uvicorn services.mcp_server.app:asgi_app --port 8010
uv run uvicorn services.learner_host.api:app --port 8020
uv run uvicorn services.counsellor_host.api:app --port 8030
uv run streamlit run ui/app.py --server.port 8501**http://localhost:8501**을 열면 두 개의 채팅 탭(학습자 + 카운슬러)이 표시됩니다.
MCP 없는 비교:
uv run streamlit run ui/no_mcp_demo.py --server.port 8502
사용해 보기
🎓 학습자 어시스턴트
프롬프트 | 동작 |
| 4개 코스 목록 표시 |
| 배치 날짜 + 수강료 견적 + 정책 |
| 정책 텍스트 반환 |
| 리드 생성 전 ✅/❌ 확인 게이트 |
🎧 카운슬러 콘솔
프롬프트 | 동작 |
| 4개 코스 목록 표시 |
| 좌석 정보 포함 3개 배치 |
| 견적 ID + 합계(INR) |
| 배정된 리드 표시 |
| ✅/❌ 확인 게이트 |
전체 프롬프트와 예상 답변은 RUN_GUIDE.md 참조.
아키텍처
포트 | 서비스 | 역할 |
5433 | PostgreSQL | 진실의 원천 (courses, batches, leads, audit) |
8010 | MCP 서버 | 도구(11) + 리소스(8) + 프롬프트(2), JWT 인증, RBAC, 감사 |
8020 | 학습자 호스트 | LangGraph 앱 — 학습자 JWT, 쓰기용 확인 게이트 |
8030 | 카운슬러 호스트 | LangGraph 앱 — 카운슬러 JWT, 리드 관리 |
8501 | Streamlit UI | 두 개의 채팅 탭(MCP 기반) |
8502 | No-MCP 데모 | 동일한 흐름, 직접 DB 접근 — MCP가 방어하는 것을 보여줌 |
스택: Python 3.11 · MCP SDK · LangGraph · FastAPI · SQLAlchemy 2 · PostgreSQL 16 · Pydantic v2 · Ollama (qwen3.5:2b) · Streamlit
핵심 개념
개념 | 위치 | 중요한 이유 |
확인 게이트 |
| 사람의 ✅ 없이는 LLM이 리드를 생성할 수 없음 |
멱등성 |
| 네트워크 재시도가 중복을 만들지 않음 |
RBAC |
| 학습자는 다른 사람의 리드를 볼 수 없음 |
감사 |
| 모든 호출 기록: 누가, 무엇을, 결과, 지연 시간 |
무상태성 | 서버 발급 ID ( | 세션 없이 수평 확장 가능 |
프로젝트 구조
scai-mcp-admissions/
├── services/
│ ├── mcp_server/ # MCP server (tools, resources, prompts, auth, audit)
│ ├── learner_host/ # LangGraph learner app (port 8020)
│ └── counsellor_host/ # LangGraph counsellor app (port 8030)
├── ui/
│ ├── app.py # Streamlit — 2 chat tabs (MCP)
│ └── no_mcp_demo.py # Streamlit — no-MCP comparison (direct DB)
├── packages/
│ ├── contracts/ # Pydantic tool inputs/outputs + domain models
│ ├── shared/ # Config, LLM adapter, JWT tokens
│ └── observability/ # Structured logging, tracing
├── scripts/
│ ├── seed_demo.py # Seed 4 courses, 4 batches, 4 fee plans, 3 policies
│ ├── issue_dev_token.py # Issue dev JWTs for manual testing
│ └── run_demo_checks.py # Smoke tests against running server
├── tests/ # unit, contract, integration, security, e2e
├── migrations/ # Alembic migrations
├── data/demo_seed/ # Seed data + knowledge_base.json
├── mcp_concept.ipynb # MCP concept notebook (what/why/how/scale/use cases)
├── mcp_flow_diagram.mmd # Mermaid source for architecture diagram
├── mcp_flow_diagram.png # Rendered architecture diagram
├── RUN_GUIDE.md # Step-by-step run guide with test prompts
└── docker-compose.yml # PostgreSQL 16테스트
uv run pytest # all tests
uv run pytest -m unit # just unit tests
uv run pytest -m contract # contract tests참고 자료
mcp_concept.ipynb — MCP 개념 전체 워크스루
This server cannot be deployed
Maintenance
Related MCP Connectors
Runtime AI governance: decision gates, human approval, hash-chained audit, compliance mapping.
Enterprise AI Control Plane: governance, guardrails, spend tracking, compliance & smart routing.
Tenant-scoped control layer for agent-to-agent systems: governed routing, approvals, evidence.
Odoo ERP for AI agents: hosted OAuth endpoint, gated writes, one endpoint for every instance.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI agents to safely query and act on school data (attendance, fees, student records) with strict role-based access control and a two-step write approval flow.-
- FlicenseNot gradedqualityDmaintenanceSingle source of truth and control for agent-operated companies, managing business state with deterministic policy enforcement, seat identity, and hash-chained audit trail.-
- FlicenseNot gradedqualityCmaintenanceEnables controlled AI-agent access to enterprise-shaped tools with a deny-by-default gated write path, human approval, dry-run execution, and append-only audit logging.1-
- AlicenseNot gradedqualityCmaintenanceEnables secure enterprise integration by bridging SQL, financial, SCADA, and document backends to LLM agents with RBAC, DLP redaction, human-in-the-loop approvals, and OpenTelemetry tracing.MIT