Skip to content

About

Ready made MCP server that you can use to find Professors for your PHD applications

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

PhD Finder — MCP server

An MCP server that helps an agentic loop (Claude) research PhD opportunities. Given a field of study, it mines accepted oral/spotlight papers at top ML/AI conferences, identifies the supervising professors (usually the last author), enriches them with h-index + citation counts, and exports a CSV for the user to filter and sort themselves.

The server does the deterministic data work (conference papers → authors → citation metrics → CSV). The agent does the judgment — deciding which co-author is the professor, disambiguating citation profiles, and finding professor websites — using its own built-in web search, guided by the included prompt and resources.

How it works

field of study
   │  find_conference_venues  (registry: NeurIPS, ICLR, ICML, CVPR, AAAI)
   ▼
accepted papers   search_accepted_papers   (OpenReview API, oral/spotlight only,
   │                                         capped by max_papers per conference)
   ▼
authors           get_paper_authors         (last author flagged as likely PI)
   │
   ▼
citation metrics  get_author_metrics        (OpenAlex → Semantic Scholar fallback)
   │
   ▼  + agent web search for the professor's website
records           add_professor_record … export_csv

Tools

  • list_supported_conferences — conferences + coverage notes.
  • find_conference_venues(field, conferences?, years?) — field → conferences/years.
  • search_accepted_papers(conference, year, decision_types?, field_keywords?, max_papers?, cursor?) — accepted papers, oral/spotlight by default, capped per conference.
  • get_paper_authors(conference, year, paper_id) — authors, last author flagged.
  • get_author_metrics(name, institution?, provider?) — h-index, citations, works.
  • add_professor_record / list_professor_records / clear_professor_records / export_csv.

Prompt

  • phd_research_workflow(field, max_papers_per_conference?) — the full step-by-step method. Start here.

Resources

  • guide://professor-identification, guide://website-discovery, guide://conferences.

Setup

Requires Python ≥ 3.11 and uv.

uv sync --extra dev
cp .env.example .env   # optional; set OPENALEX_MAILTO for better rate limits

Running

# stdio (default — for Claude Desktop / Claude Code)
uv run phd-finder

# streamable HTTP (no auth)
uv run phd-finder --transport http --host 127.0.0.1 --port 8000

Register with Claude Desktop (stdio)

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "phd-finder": {
      "command": "uv",
      "args": ["run", "--directory", "/home/fernblade/Desktop/phd_application_helper", "phd-finder"]
    }
  }
}

Inspect interactively

npx @modelcontextprotocol/inspector uv run phd-finder

Configuration

Env var Default Purpose
CITATION_PROVIDER openalex openalex or semantic_scholar
OPENALEX_MAILTO — OpenAlex polite-pool email (better rate limits)
SEMANTIC_SCHOLAR_API_KEY — optional S2 key for higher limits
PHD_FINDER_MAX_PAPERS 50 default papers per conference
PHD_FINDER_MAX_PAPERS_CEILING 500 hard cap on max_papers
PHD_FINDER_OUTPUT_DIR cwd where export_csv writes

Coverage & extensibility

v1 sources all conferences from OpenReview (NeurIPS, ICLR, recent CVPR ≥2024, AAAI ≥2025, ICML ≥2023). Other years need other sources — venues/pmlr.py (ICML) and venues/cvf.py (older CVPR) are stubs implementing the VenueAdapter interface, ready to be filled in. Citation providers sit behind a factory (citations/factory.py); adding scholarly or SerpAPI is a one-line registration.

Tests

uv run pytest                 # offline unit tests
uv run pytest -m integration  # hits live OpenReview/OpenAlex (network required)

About

Ready made MCP server that you can use to find Professors for your PHD applications

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages