Admissions MCP Hub
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Admissions MCP HubGenerate a fee quote for the MLOps course"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Admissions MCP Hub
A governed Model Context Protocol server that exposes course, batch, fee, lead, and callback capabilities to two independent AI chat apps via a single MCP contract.
What this proves
One MCP server, two independent clients (learner + counsellor) — no duplicated integrations
DB credentials, auth, audit, validation — all centralized on the server
Writes require a confirmation gate (prepare → confirm) — an LLM cannot create a lead alone
Every tool call is audited (actor, client, args hash, result, latency)
A no-MCP comparison demo shows what you'd lose without MCP

Related MCP server: SchoolBridge
Quick start
# 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 8501Open http://localhost:8501 — two chat tabs (Learner + Counsellor).
No-MCP comparison:
uv run streamlit run ui/no_mcp_demo.py --server.port 8502
Try it
🎓 Learner Assistant
Prompt | What happens |
| Lists 4 courses |
| Batch dates + fee quote + policy |
| Returns policy text |
| ✅/❌ confirmation gate before creating lead |
🎧 Counsellor Console
Prompt | What happens |
| Lists 4 courses |
| 3 batches with seats |
| Quote ID + total (INR) |
| Shows assigned leads |
| ✅/❌ confirmation gate |
See RUN_GUIDE.md for full prompts + expected answers.
Architecture
Port | Service | Role |
5433 | PostgreSQL | Source of truth (courses, batches, leads, audit) |
8010 | MCP Server | Tools (11) + Resources (8) + Prompts (2), JWT auth, RBAC, audit |
8020 | Learner Host | LangGraph app — learner JWT, confirmation gate for writes |
8030 | Counsellor Host | LangGraph app — counsellor JWT, lead management |
8501 | Streamlit UI | Two chat tabs (MCP-based) |
8502 | No-MCP Demo | Same flow, direct DB — shows what MCP protects against |
Stack: Python 3.11 · MCP SDK · LangGraph · FastAPI · SQLAlchemy 2 · PostgreSQL 16 · Pydantic v2 · Ollama (qwen3.5:2b) · Streamlit
Key concepts
Concept | Where | Why it matters |
Confirmation gate |
| LLM can't create a lead without human ✅ |
Idempotency |
| Network retries don't create duplicates |
RBAC |
| Learner can't see other people's leads |
Audit |
| Every call logged: who, what, result, latency |
Statelessness | Server-minted IDs ( | Horizontal scaling without sessions |
Project structure
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 16Tests
uv run pytest # all tests
uv run pytest -m unit # just unit tests
uv run pytest -m contract # contract testsReferences
RUN_GUIDE.md — Full run guide with prompts and expected answers
mcp_concept.ipynb — Complete MCP concept walkthrough
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.
Register, deploy, review, and govern internal applications built with coding agents.
- odooOAuthcom.odooconsole
Odoo ERP for AI agents: hosted OAuth endpoint, gated writes, one endpoint for every instance.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceAI-native compliance auditing engine for enterprise LMS, enabling querying compliance status, running audits, and validating assignment rules through natural language with MCP clients like Claude or Cursor.Business Source 1.1
- FlicenseNot gradedqualityCmaintenanceAn 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 gradedqualityBmaintenanceSingle 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-