Academic paper research MCP server built with Bun and TypeScript.
- Bun
- Node.js
- GitHub CLI (
gh) for publishing
From npm:
npm install -g @ai4paper/apaper-mcpFrom source:
bun installExample MCP configuration:
{
"mcp": {
"apaper-mcp": {
"type": "local",
"command": ["npx", "@ai4paper/apaper-mcp"],
"enabled": true
}
}
}This lets an MCP-compatible client start apaper-mcp locally over stdio.
apaper-mcp is useful when you want an AI client to help with paper research and early writing tasks such as:
- searching papers across IACR, DBLP, and Google Scholar
- narrowing results by year or venue
- collecting BibTeX entries for references
- downloading IACR PDFs for reading and note-taking
- building a literature base before outlining or drafting
bun run devThe server logs apaper-mcp running on stdio to stderr when it starts.
bun run buildbun run testbun run typecheckbun run startsearch_iacr_papers- input:
{ "query": string, "max_results"?: number, "fetch_details"?: boolean, "year_min"?: number | string, "year_max"?: number | string } - output: formatted IACR ePrint paper search results
- input:
download_iacr_paper- input:
{ "paper_id": string, "save_path"?: string } - output: saved PDF path or an error message
- input:
search_dblp_papers- input:
{ "query": string, "max_results"?: number, "year_from"?: number | string, "year_to"?: number | string, "venue_filter"?: string, "include_bibtex"?: boolean } - output: formatted DBLP publication results or BibTeX entries
- input:
search_google_scholar_papers- input:
{ "query": string, "max_results"?: number, "year_low"?: number | string, "year_high"?: number | string } - output: formatted Google Scholar search results
- input:
Start the server:
bun run devThen connect with an MCP inspector/client. One easy option is the MCP Inspector:
npx @modelcontextprotocol/inspector bun run src/index.tsThat lets you inspect the server, list tools, and call them locally over stdio.
gh repo create ai4paper/apaper-mcp --public --source=. --remote=origin --push