ScholarReach MCP
Connects to the student's own Gmail to send reviewed, personalized professor outreach emails after explicit confirmation, with queuing and cancellation safeguards.
Uses ORCID as part of professor email discovery, helping trace researchers from papers to ORCID profiles and onward to contact information.
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., "@ScholarReach MCPfind three professors in Germany working on federated learning and draft emails"
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.
ScholarReach MCP: professor outreach by voice
"Alexa, find me three professors in Germany working on federated learning and write to them."
Demo video: https://youtu.be/S8FSP5ovAfE
An Alexa+ MCP server (MCP spec 2025-11-25, Streamable HTTP) for ScholarReach, a web app that helps students apply abroad by finding professors whose recent papers match their research, finding the professors' email addresses, and sending personal, reviewed emails from the student's own Gmail.
Applying for an MS or PhD abroad means emailing dozens of professors, each email citing their own work. Students spend weeks on it. This server turns that into a short conversation with an assistant:
"Where am I?":
whats_nextremembers every earlier session: emails sent, replies, drafts waiting, professors who haven't replied in 10+ days, and whether Gmail is connected."Find professors and write to them.":
plan_outreachruns the whole workflow in one call: searches recent papers (OpenAlex), ranks professors, skips anyone already emailed, discovers each professor's email address (papers → ORCID → homepages → web search), and writes a personal draft that cites the professor's papers. It streams progress ("Finding Prof. Müller's email…")."Read me the first one.":
review_drafts/read_email. On a screen, the drafts appear in an interactive MCP App review card."Make it shorter" / "Send it.":
edit_email,regenerate_email,approve_email. Sending always needs the student's explicit yes (see Safety).
Quick start
Needs Python 3.11+ and a ScholarReach account (free: register at https://scholarreach.faraz-khan.xyz, fill in your profile, and connect Gmail if you want to send).
git clone https://github.com/Farazkhan542/scholarreach-mcp
cd scholarreach-mcp
python -m venv .venv
.\.venv\Scripts\activate # macOS/Linux: source .venv/bin/activate
pip install -e ".[dev]"
copy .env.example .env # macOS/Linux: cp .env.example .env
# edit .env: SCHOLARREACH_EMAIL and SCHOLARREACH_PASSWORD
python -m scholarreach_mcp # → ScholarReach MCP server on http://127.0.0.1:8765/mcpConnect a client
Client | How |
MCP Inspector |
|
Claude Code |
|
Any MCP host / Alexa+ | Streamable HTTP endpoint |
To reach it from the internet, run it behind HTTPS (e.g. cloudflared tunnel --url http://127.0.0.1:8765)
and set MCP_AUTH_TOKEN.
Tests
pytestThe tests drive the real MCP server with the SDK's MCP client against an in-memory fake of the ScholarReach API, so they need no network or accounts. They cover the full workflow, skipping contacted professors, email discovery, progress notifications, the confirm-before-send flow (yes, no, and clients without dialogs), error messages, the MCP App resource and token reuse.
Related MCP server: Open Source Literature MCP
Tools, resources, prompts
Tool | What it does | Hints |
| Status across sessions + the next best step | read-only |
| Search → skip contacted → find emails → write drafts (with progress) | writes, never sends |
| Matched professors, best first | read-only |
| Find email + draft for one professor | writes |
| Drafts waiting, rendered as an MCP App card on screens | read-only |
| Full text, ready to read aloud | read-only |
| Change or rewrite a draft | writes |
| Queue for sending from Gmail after confirmation | destructive |
| Pull back from the queue / record a reply | writes |
| Read or change research interests, countries, program | |
| The review card's button. | destructive |
Resource
scholarreach://pipeline: the outreach state as JSON (for context-aware assistants).Resource
ui://scholarreach/review.html: the MCP App (text/html;profile=mcp-app).Prompt
outreach_session(topic, countries): a guided session.
Design for voice
Every tool returns a one- or two-sentence
speechfield written to be read aloud ("I wrote 3 drafts: Prof. A at TU Munich… Nothing is sent yet. Want to review them?"), plus structured data for screens. Errors come back as short sentences ("Connect your Gmail before approving emails.").One utterance does a lot:
plan_outreachreplaces ~15 clicks in the web app.It remembers you: state lives in ScholarReach, so "already emailed" and "no reply in 10 days" carry across sessions and devices.
Safety
Emails go out from the student's real Gmail, so sending is guarded three ways:
approve_emailasks through MCP elicitation ("Send this email to Prof. X x@uni.de?") on both protocol eras: a mid-callelicitation/createon 2025-11-25 and anInputRequiredResultround trip on 2026-07-28. If the client has no confirmation dialog, the tool refuses until the assistant has read the email back and the student said yes.The card's Approve button calls
approve_from_card, which is app-only: the model never sees it.ScholarReach itself refuses duplicates per professor, honors do-not-contact, and sends in small daily batches within the student's limit.
How it works
Alexa+ / MCP host ──Streamable HTTP (MCP 2025-11-25)──▶ scholarreach-mcp (this repo, mcp SDK 2.3)
│ bearer token, auto re-login
▼
ScholarReach API (FastAPI): OpenAlex, ORCID, Europe PMC,
CSRankings, web search, Gemini drafting, Gmail API sendingFile | |
MCP tools, resource, prompt, MCP App, elicitation | |
ScholarReach REST client | |
MCP App review card (postMessage JSON-RPC bridge) | |
Streamable HTTP server (uvicorn) + optional bearer auth | |
End-to-end MCP tests | |
Demo recording guide |
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Find people inside target companies, score warm intro paths, and draft openers. Never sends.
Find LinkedIn prospects, draft outreach, and run human-paced campaigns from your AI agent.
Find local businesses with real emails and run AI-written outreach to them, from your AI chat.
AI agent for LinkedIn outreach: finds the right people, writes in your voice, follows up, replies.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAutomates cold email outreach for job applications by parsing job postings, generating personalized emails using AI, and sending them or saving as drafts in Gmail with resume attachments.1-
- AlicenseBqualityDmaintenanceEnables automatic literature discovery, screening, and ranking across OpenAlex, Semantic Scholar, and arXiv, with tools for exporting to Zotero and generating research ideas.71MIT
- AlicenseNot gradedqualityCmaintenanceEnables personalized cold email outreach through research, drafting, template management, and deliverability checks, all locally with no required API keys.6MIT
- FlicenseAqualityDmaintenanceAutomates job outreach by finding companies, discovering contacts, generating personalized emails with AI, and tracking campaigns.9-