University Course Catalog MCP Server
MCP server for querying a university course catalog. Enables searching courses, checking prerequisites, and looking up instructors via natural language.
README
University Course Catalog MCP Server
Project overview
This project is a production-ready MCP (Model Context Protocol) server for a university course catalog. It exposes catalog data via MCP tools, MCP resources, and MCP prompt templates on top of a FastAPI application.
MCP explanation
MCP servers provide structured access to data and capabilities through tools, resources, and prompt templates. This server makes course data available to MCP clients so models can search courses, inspect prerequisites, and generate comparisons.
Architecture
- FastAPI app with an embedded MCP low-level Server and SSE transport
- SQLite database with SQLAlchemy ORM models
- Seed data loaded automatically when the database is empty
- NetworkX used to build prerequisite graphs
- Dockerized runtime with a mounted data volume
Setup steps (local)
- Create a virtual environment:
python -m venv .venv - Activate it:
source .venv/bin/activate - Install dependencies:
pip install -r requirements.txt - Run the server:
uvicorn main:app --app-dir src --host 0.0.0.0 --port 8080
Docker usage
Start the full stack with:
docker-compose up --build
MCP tools
search_courses
Input:
{
"query": "data",
"department_code": "CS"
}
get_prerequisites
Input:
{
"course_code": "CS301"
}
lookup_instructor
Input:
{
"instructor_name": "Reynolds"
}
get_prerequisite_graph
Input:
{
"course_code": "CS301"
}
MCP resources
course_descriptionsdepartment_directory
MCP prompt templates
course_comparison_template
Example natural language queries
- "Find introductory CS courses with 4 credits."
- "Show the prerequisite chain for CS301."
- "Who teaches Database Systems?"
- "Compare CS201 and CS301."
API examples
Health check:
curl http://localhost:8080/health
MCP transport endpoints
- SSE connect:
http://localhost:8080/sse - SSE message POST:
http://localhost:8080/messages
Testing instructions
- Run
docker-compose up --buildand confirm the health endpoint responds with statusok. - Use the MCP Inspector to validate tools, resources, and prompt templates.
MCP Inspector usage
- Start the server locally or with Docker.
- Open MCP Inspector and set the server URL to
http://localhost:8080/sse. - Verify tools, resources, and prompts are visible.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.