University Course Catalog MCP Server
by sarvea45
README.md
# University Course Catalog MCP Server
A Model Context Protocol (MCP) server exposing a university course catalog to Large Language Models (LLMs). This project acts as the backend for an AI-powered academic advisor, demonstrating how to use the MCP specification, define tools and resources, and manage state securely with a SQLite database.
## Technologies Used
- **Python 3.12**
- **FastAPI** (for HTTP and SSE transport)
- **Model Context Protocol (MCP)** SDK
- **SQLAlchemy** (Database ORM)
- **Pydantic** (Data validation)
- **NetworkX** (Graph resolution for prerequisites)
- **Docker & Docker Compose** (Containerization)
## Getting Started
### 1. Prerequisites
Ensure you have Docker and Docker Compose installed on your system.
### 2. Environment Variables
An `.env.example` file is provided in the repository root. Ensure the database URL is correctly configured:
```env
DATABASE_URL=sqlite:///./data/catalog.db
PORT=8080
```
### 3. Running the Server
You can launch the entire system using Docker Compose. This command builds the image, runs the database seed script automatically, and mounts the `data/` volume for database persistence:
```bash
docker-compose up --build -d
```
The server will be available at `http://localhost:8080`. Docker Compose will also execute an automated healthcheck.
## MCP Capabilities
### Tools
- **`search_courses`**: Searches the university course catalog for courses matching a query string. Can optionally filter by a specific department code.
- **`get_prerequisites`**: Retrieves the direct prerequisites for a given course code.
- **`lookup_instructor`**: Finds an instructor's details (Name, Email, Department) by their name.
- **`get_prerequisite_graph`**: Returns the full, multi-level dependency graph (nodes and edges) for a given course using NetworkX.
### Resources
- **`course-catalog://course_descriptions`**: A formatted text resource containing all courses and their descriptions.
- **`course-catalog://department_directory`**: A formatted text resource listing all academic departments and their codes.
### Prompt Templates
- **`course_comparison_template`**: A prompt template requesting the LLM to generate a structured comparison between two specific courses using their course codes.
## Testing Locally
You can test the MCP server functionality by connecting the official MCP Inspector CLI to the server:
```bash
npx @anthropic-ai/inspector http://localhost:8080/sse
```
From the inspector, you can invoke tools, fetch resources, and render prompt templates interactively.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues