Skip to content

Repository files navigation

ProfGraph

AI professor intelligence for any LLM. Ratings, NLP-extracted teaching style, grade distributions, and data-backed recommendations -- served via MCP and REST API.

Students ask "who should I take for CS 4348?" and get an answer grounded in 7,000+ historical student outcomes instead of hallucinated guesses.

How It Works

Student -> Claude / ChatGPT / any LLM
|
v
ProfGraph (MCP + REST API)
|
+-- RateMyProfessors GraphQL --> ratings, tags, reviews
+-- NLP pipeline --> teaching style classification
+-- Nebula Trends API --> grade distributions (FOIA data)
+-- Prerequisite graph --> course dependencies
+-- Community intel (SQLite) --> crowdsourced syllabus data

Quick Start

Local (stdio, for Claude Code / Claude Desktop)

git clone https://github.com/oneKn8/profgraph.git
cd profgraph
pip install -e .

Add to Claude Desktop MCP config (~/.config/claude/claude_desktop_config.json):

{
"mcpServers": {
"profgraph": {
"command": "python3",
"args": ["-m", "profgraph"],
"cwd": "/path/to/profgraph"
}
}
}

Hosted (HTTP, for ChatGPT / remote clients)

pip install -e ".[deploy]"
PROFGRAPH_TRANSPORT=streamable-http python -m profgraph

Server starts on http://0.0.0.0:8000 with both MCP (/mcp) and REST API (/api/*).

Docker

docker build -t profgraph .
docker run -p 8000:8000 profgraph

Fly.io

fly volumes create profgraph_data --region dfw --size 1
fly launch

10 MCP Tools

ToolDescription
list_universitiesShow supported schools and data availability
search_professorsFind professors by name, optionally filter by department
get_professor_profileFull profile: ratings, NLP teaching style, tags, courses, reviews
get_grade_distributionHistorical grade data by semester (FOIA/TPIA public records)
compare_professorsSide-by-side comparison table
predict_gradeGrade probability given student GPA vs historical distribution
recommend_professorRanked recommendations by learning style and priorities
get_prerequisitesCourse prerequisite tree with depth traversal
submit_intelContribute syllabus data (exam weights, curve, textbook, notes)
get_intelRetrieve community-contributed course intel

REST API (for ChatGPT Actions)

EndpointDescription
GET /api/universitiesList supported schools
GET /api/search?university=utd&query=SmithProfessor search
GET /api/profile?university=utd&professor=Jason+SmithFull profile
GET /api/grades?university=utd&course=CS+3341Grade distributions
GET /api/predict?university=utd&course=CS+3341&professor=smith&gpa=3.2Grade prediction
GET /api/prerequisites?course=CS+4348Prerequisite tree
GET /api/openapi.jsonOpenAPI 3.1 spec (import into ChatGPT)

ChatGPT setup: Create a custom GPT -> Add Action -> Import from URL -> https://yourserver/api/openapi.json

Supported Universities

UniversityKeyProfessor DataGrade Data
UT Dallasutdyesyes
Texas A&Mtamuyes--
UT Austinutaustinyes--
UT Arlingtonutayes--
U of Houstonuhyes--
Rice Universityriceyes--
U of North Texasuntyes--

All universities have full professor support (search, profiles, NLP teaching style, comparisons, recommendations). Grade distributions currently available for UTD via Nebula Trends API.

NLP Teaching Style

Extracted from RMP review text using keyword pattern matching:

  • Exam style: straightforward, mixed, ambiguous, tricky
  • Homework load: light, moderate, heavy
  • Lecture quality: clear, mixed, unclear
  • Curve likelihood: none, low, medium, high, guaranteed
  • Accessibility: high, medium, low
  • Boolean signals: uses textbook, records lectures, provides practice exams
  • Warnings: extracted from low-rated reviews (exam/HW mismatch, grading issues, disorganization)
  • Student types: best for / challenging for classifications

Example Output

$ profgraph search_professors utd "Jason Smith"
# Jason Smith
Computer Science | UTD
Rating: 3.3/5 | Difficulty: 4.3/5 | Would Take Again: 55%
## Teaching Style (NLP-extracted)
- Exam Style: ambiguous
- Homework Load: heavy
- Lecture Quality: clear
- Curve Likelihood: none
- Accessibility: high
## Teaching Style Tags
- Lots of homework (151x)
- Tough grader (104x)
- Accessible outside class (76x)
- Clear grading criteria (28x)
- Amazing lectures (28x)

Note: the "Teaching Style Tags" above come from RateMyProfessors' teacherRatingTags field, which has degraded upstream and now frequently returns empty. ProfGraph handles this gracefully (the tag list is simply omitted); the NLP-extracted "Teaching Style" section does not depend on it.

Data Sources

SourceMethodAuth
RateMyProfessorsGraphQL APIPublic token
UTD Nebula TrendsREST APINone
PrerequisitesHardcoded (UTD CS 2025-2026 catalog)N/A
Community IntelSQLite (user-contributed)N/A

Configuration

Env VarDefaultDescription
PROFGRAPH_TRANSPORTstdiostdio or streamable-http
PROFGRAPH_HOST0.0.0.0HTTP server bind address
PROFGRAPH_PORT8000HTTP server port
PROFGRAPH_RMP_AUTHBasic dGVzdDp0ZXN0RMP auth token (public, configurable)

Development

pip install -e ".[dev]"
pytest tests/ --ignore=tests/test_live.py --ignore=tests/test_e2e.py

54 unit tests (models, cache, NLP, prerequisites, intel). Live and E2E tests require network access.

License

MIT

About

AI Professor Intelligence MCP Server - gives any LLM instant professor ratings, teaching style, and grade distributions

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages