{"_id":"@ai4paper/apaper-mcp","_rev":"7-47467d90cb146db983c373d3ca012641","name":"@ai4paper/apaper-mcp","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@ai4paper/apaper-mcp","version":"0.1.0","_id":"@ai4paper/apaper-mcp@0.1.0","maintainers":[{"name":"isomoes","email":"jiahaoxiang2000@gmail.com"}],"homepage":"https://github.com/ai4paper/apaper-mcp#readme","bugs":{"url":"https://github.com/ai4paper/apaper-mcp/issues"},"bin":{"apaper-mcp":"bin/apaper-mcp.js"},"dist":{"shasum":"167c6619e4449ddfc3f189fd0fb77b126217ad68","tarball":"https://registry.npmjs.org/@ai4paper/apaper-mcp/-/apaper-mcp-0.1.0.tgz","fileCount":4,"integrity":"sha512-2MSCfjHgouewbrBi9dPi5CsSJXSf/RmE6l75qjV8OoiFiQ/7uGMdOaeLH+825rPT0OZ1ihTKtzCrV+q8WXLvdg==","signatures":[{"sig":"MEUCIHMD3O0QmCkghnXiiifFae3E+eRyvUF3TQz8H40XP4P2AiEA4L0DTqJReJOlnuXYd1SEepeCENy06pbAkFr98/S1x9s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1241210},"main":"dist/index.js","type":"module","gitHead":"94007c03be6fab391306bcc9258f6f5147fd3b65","scripts":{"dev":"bun run src/index.ts","test":"bun test","build":"bun build src/index.ts --outdir dist --target node","start":"bun dist/index.js","prepack":"bun run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"isomoes","email":"jiahaoxiang2000@gmail.com"},"repository":{"url":"git+https://github.com/ai4paper/apaper-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"Academic paper research MCP server built with Bun and TypeScript.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"latest","node-html-parser":"latest","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"latest","@types/node":"latest"},"_npmOperationalInternal":{"tmp":"tmp/apaper-mcp_0.1.0_1774531678882_0.9108087990362759","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ai4paper/apaper-mcp","version":"0.1.1","_id":"@ai4paper/apaper-mcp@0.1.1","maintainers":[{"name":"isomoes","email":"jiahaoxiang2000@gmail.com"}],"homepage":"https://github.com/ai4paper/apaper-mcp#readme","bugs":{"url":"https://github.com/ai4paper/apaper-mcp/issues"},"bin":{"apaper-mcp":"bin/apaper-mcp.js"},"dist":{"shasum":"e96f710b40bf316c17c8ff1b4927a35de957acb3","tarball":"https://registry.npmjs.org/@ai4paper/apaper-mcp/-/apaper-mcp-0.1.1.tgz","fileCount":4,"integrity":"sha512-FJRUhokTxVLBiAvzWMf2ptDD0lo2vMOkEIsl9JHcrar3nxyv7fuC8+v98YjaXrKaeAUSRya+5N0Fokgdp7gMvQ==","signatures":[{"sig":"MEUCIGVgEl8zyCJljo8tOfP7m+S0tfR688PYLC0ghDaQ3ssjAiEA9wV188RuTFpsNa7vkpYb5jcIos4SwakaCiCMny4lURw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai4paper%2fapaper-mcp@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1241724},"main":"dist/index.js","type":"module","_from":"file:dist-artifacts/ai4paper-apaper-mcp-0.1.1.tgz","scripts":{"dev":"bun run src/index.ts","test":"bun test","build":"bun build src/index.ts --outdir dist --target node","start":"bun dist/index.js","prepack":"bun run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:10ece68c-ad3b-4951-9968-2a2eeb48b200"}},"_resolved":"/home/runner/work/apaper-mcp/apaper-mcp/dist-artifacts/ai4paper-apaper-mcp-0.1.1.tgz","_integrity":"sha512-FJRUhokTxVLBiAvzWMf2ptDD0lo2vMOkEIsl9JHcrar3nxyv7fuC8+v98YjaXrKaeAUSRya+5N0Fokgdp7gMvQ==","repository":{"url":"git+https://github.com/ai4paper/apaper-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"Academic paper research MCP server built with Bun and TypeScript.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"latest","node-html-parser":"latest","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"latest","@types/node":"latest"},"_npmOperationalInternal":{"tmp":"tmp/apaper-mcp_0.1.1_1774533741926_0.1579831034860384","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ai4paper/apaper-mcp","version":"0.1.2","_id":"@ai4paper/apaper-mcp@0.1.2","maintainers":[{"name":"isomoes","email":"jiahaoxiang2000@gmail.com"}],"homepage":"https://github.com/ai4paper/apaper-mcp#readme","bugs":{"url":"https://github.com/ai4paper/apaper-mcp/issues"},"bin":{"apaper-mcp":"bin/apaper-mcp.js"},"dist":{"shasum":"2cda0b141ad5df7c6aa9ea714d529cef85cf5e4d","tarball":"https://registry.npmjs.org/@ai4paper/apaper-mcp/-/apaper-mcp-0.1.2.tgz","fileCount":4,"integrity":"sha512-ODIudVNDsePJlF/tDopuw2A0f8E2ZzX47Mc1jqvj8zQxVx30HmEYwqHcz3ANdkUMDEsdJHKwgs7Y15NEXMNdeA==","signatures":[{"sig":"MEQCIFiLvsAkqJGBxDY4LJWcf2bYPjTo7R6egxvQROhs0KFuAiBEG7rReeomWCoP6aTTPEeu3f4IMrYtPijwiJ0oNXK34Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai4paper%2fapaper-mcp@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1241724},"main":"dist/index.js","type":"module","_from":"file:dist-artifacts/ai4paper-apaper-mcp-0.1.2.tgz","scripts":{"dev":"bun run src/index.ts","test":"bun test","build":"bun build src/index.ts --outdir dist --target node","start":"bun dist/index.js","prepack":"bun run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:10ece68c-ad3b-4951-9968-2a2eeb48b200"}},"_resolved":"/home/runner/work/apaper-mcp/apaper-mcp/dist-artifacts/ai4paper-apaper-mcp-0.1.2.tgz","_integrity":"sha512-ODIudVNDsePJlF/tDopuw2A0f8E2ZzX47Mc1jqvj8zQxVx30HmEYwqHcz3ANdkUMDEsdJHKwgs7Y15NEXMNdeA==","repository":{"url":"git+https://github.com/ai4paper/apaper-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"Academic paper research MCP server built with Bun and TypeScript.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"latest","node-html-parser":"latest","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"latest","@types/node":"latest"},"_npmOperationalInternal":{"tmp":"tmp/apaper-mcp_0.1.2_1774534112100_0.814868348454608","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ai4paper/apaper-mcp","version":"0.1.3","_id":"@ai4paper/apaper-mcp@0.1.3","maintainers":[{"name":"isomoes","email":"jiahaoxiang2000@gmail.com"}],"homepage":"https://github.com/ai4paper/apaper-mcp#readme","bugs":{"url":"https://github.com/ai4paper/apaper-mcp/issues"},"bin":{"apaper-mcp":"bin/apaper-mcp.js"},"dist":{"shasum":"a9dbc36a69aa9b5b892e5fdba00c77a8ce14d2db","tarball":"https://registry.npmjs.org/@ai4paper/apaper-mcp/-/apaper-mcp-0.1.3.tgz","fileCount":4,"integrity":"sha512-O+H63NvVUtYmexC6oTZgt4qnNrguOiIhl4vKkkFD+0Vv4jgjxTI8mCHNrVFPD4pAuY//oHBYg4DsnoQL/Z2MFg==","signatures":[{"sig":"MEUCIBSpbbdA4opKHVzHRASRVMFvSkXseu/mbAHZBDfmJDizAiEAoiA/Qi4gxRnHFOiStSjZfzP0pAyppoL152cXHt/GUOo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai4paper%2fapaper-mcp@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1253414},"main":"dist/index.js","type":"module","_from":"file:dist-artifacts/ai4paper-apaper-mcp-0.1.3.tgz","scripts":{"dev":"bun run src/index.ts","test":"bun test","build":"bun build src/index.ts --outdir dist --target node","start":"bun dist/index.js","prepack":"bun run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:10ece68c-ad3b-4951-9968-2a2eeb48b200"}},"_resolved":"/home/runner/work/apaper-mcp/apaper-mcp/dist-artifacts/ai4paper-apaper-mcp-0.1.3.tgz","_integrity":"sha512-O+H63NvVUtYmexC6oTZgt4qnNrguOiIhl4vKkkFD+0Vv4jgjxTI8mCHNrVFPD4pAuY//oHBYg4DsnoQL/Z2MFg==","repository":{"url":"git+https://github.com/ai4paper/apaper-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"Academic paper research MCP server built with Bun and TypeScript.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"latest","node-html-parser":"latest","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"latest","@types/node":"latest"},"_npmOperationalInternal":{"tmp":"tmp/apaper-mcp_0.1.3_1778921320062_0.3823719500594005","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@ai4paper/apaper-mcp","version":"0.1.4","_id":"@ai4paper/apaper-mcp@0.1.4","maintainers":[{"name":"isomoes","email":"jiahaoxiang2000@gmail.com"}],"homepage":"https://github.com/ai4paper/apaper-mcp#readme","bugs":{"url":"https://github.com/ai4paper/apaper-mcp/issues"},"bin":{"apaper-mcp":"bin/apaper-mcp.js"},"dist":{"shasum":"2c7ba2445e4cff27f8bd807774bb32b491aff385","tarball":"https://registry.npmjs.org/@ai4paper/apaper-mcp/-/apaper-mcp-0.1.4.tgz","fileCount":4,"integrity":"sha512-78DrSw0jaQoUvTFt3v+fwywqwaGqvIo2XfsYqFI9ZjB1bTLnn8tJoCd5gAQA3i0JgFE/XfFELavYlgOB6BLZoA==","signatures":[{"sig":"MEQCIASWedFaiVBZrsCk41pGOG4GX3EdNzxIRoJQU2091YRdAiA+Kgo11jcfweoJfXA5Q8najA1sv1EOnyITRApIfUPI9g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai4paper%2fapaper-mcp@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1270218},"main":"dist/index.js","type":"module","_from":"file:dist-artifacts/ai4paper-apaper-mcp-0.1.4.tgz","scripts":{"dev":"bun run src/index.ts","test":"bun test","build":"bun build src/index.ts --outdir dist --target node","start":"bun dist/index.js","prepack":"bun run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:10ece68c-ad3b-4951-9968-2a2eeb48b200"}},"_resolved":"/home/runner/work/apaper-mcp/apaper-mcp/dist-artifacts/ai4paper-apaper-mcp-0.1.4.tgz","_integrity":"sha512-78DrSw0jaQoUvTFt3v+fwywqwaGqvIo2XfsYqFI9ZjB1bTLnn8tJoCd5gAQA3i0JgFE/XfFELavYlgOB6BLZoA==","repository":{"url":"git+https://github.com/ai4paper/apaper-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"Academic paper research MCP server built with Bun and TypeScript.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"latest","node-html-parser":"latest","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"latest","@types/node":"latest"},"_npmOperationalInternal":{"tmp":"tmp/apaper-mcp_0.1.4_1779022881647_0.044207408663232695","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@ai4paper/apaper-mcp","version":"0.1.5","_id":"@ai4paper/apaper-mcp@0.1.5","maintainers":[{"name":"isomoes-a","email":"jiahaoxiang2000@gmail.com"}],"homepage":"https://github.com/ai4paper/apaper-mcp#readme","bugs":{"url":"https://github.com/ai4paper/apaper-mcp/issues"},"bin":{"apaper-mcp":"bin/apaper-mcp.js"},"dist":{"shasum":"4ade817b82fd724797771af34b0489e344b44e3f","tarball":"https://registry.npmjs.org/@ai4paper/apaper-mcp/-/apaper-mcp-0.1.5.tgz","fileCount":4,"integrity":"sha512-MtyDI5k5inEZv7NMutJkyJr8uovcFv0hmPgLBLX/hinwfPo6JT7xRvp8e6oq+Fzoe8ALMtEqj02FV8YAIDw7+A==","signatures":[{"sig":"MEYCIQCsVVdvuOiwkPcrhnglZ1c2e6nb/6fD8Cz0G4OQVDiz8gIhAMaeqcFuE4WXTBxtVwUPZGKf066P2LhHDLtbgn+1VVZW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai4paper%2fapaper-mcp@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1274169},"main":"dist/index.js","type":"module","_from":"file:dist-artifacts/ai4paper-apaper-mcp-0.1.5.tgz","scripts":{"dev":"bun run src/index.ts","test":"bun test","build":"bun build src/index.ts --outdir dist --target node","start":"bun dist/index.js","prepack":"bun run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:10ece68c-ad3b-4951-9968-2a2eeb48b200"}},"_resolved":"/home/runner/work/apaper-mcp/apaper-mcp/dist-artifacts/ai4paper-apaper-mcp-0.1.5.tgz","_integrity":"sha512-MtyDI5k5inEZv7NMutJkyJr8uovcFv0hmPgLBLX/hinwfPo6JT7xRvp8e6oq+Fzoe8ALMtEqj02FV8YAIDw7+A==","repository":{"url":"git+https://github.com/ai4paper/apaper-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Academic paper research MCP server built with Bun and TypeScript.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"latest","node-html-parser":"latest","@modelcontextprotocol/sdk":"1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"latest","@types/node":"latest"},"_npmOperationalInternal":{"tmp":"tmp/apaper-mcp_0.1.5_1780924369932_0.38538145339636043","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ai4paper/apaper-mcp","version":"0.2.0","description":"Academic paper research MCP server built with Bun and TypeScript.","type":"module","main":"dist/index.js","bin":{"apaper-mcp":"bin/apaper-mcp.js"},"scripts":{"dev":"bun run src/index.ts","build":"bun build src/index.ts --outdir dist --target node --external undici --external fetch-socks --external socks","start":"bun dist/index.js","prepack":"bun run build","test":"bun test","typecheck":"tsc --noEmit"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/ai4paper/apaper-mcp.git"},"bugs":{"url":"https://github.com/ai4paper/apaper-mcp/issues"},"homepage":"https://github.com/ai4paper/apaper-mcp#readme","dependencies":{"@modelcontextprotocol/sdk":"1.27.1","fetch-socks":"^1.3.3","node-html-parser":"latest","socks":"^2.8.7","undici":"^8.5.0","zod":"latest"},"devDependencies":{"@types/bun":"latest","typescript":"latest","@types/node":"latest"},"_id":"@ai4paper/apaper-mcp@0.2.0","_integrity":"sha512-2+/YzYsbjVmotPT0TuUO3E/8W85Ow2S4c9E9z1I4HTM2pY16FnuGH+HngoojnUGzpcPE9o0BqAWHjAQcnrq73Q==","_resolved":"/home/runner/work/apaper-mcp/apaper-mcp/dist-artifacts/ai4paper-apaper-mcp-0.2.0.tgz","_from":"file:dist-artifacts/ai4paper-apaper-mcp-0.2.0.tgz","_nodeVersion":"24.17.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-2+/YzYsbjVmotPT0TuUO3E/8W85Ow2S4c9E9z1I4HTM2pY16FnuGH+HngoojnUGzpcPE9o0BqAWHjAQcnrq73Q==","shasum":"9dbd23f9bbfaf4c1406ac6bee05af3c14dbfd4f5","tarball":"https://registry.npmjs.org/@ai4paper/apaper-mcp/-/apaper-mcp-0.2.0.tgz","fileCount":4,"unpackedSize":1288363,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai4paper%2fapaper-mcp@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC0dy46qCdD++vA+74AAxsyMJI9COhH1vgaMLlR2FQxkgIhAIjadz2Bnf6cr4nTWgBKGWNrGRJcwcR5Jur2tLaINwgO"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:10ece68c-ad3b-4951-9968-2a2eeb48b200"}},"directories":{},"maintainers":[{"name":"isomoes-a","email":"jiahaoxiang2000@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/apaper-mcp_0.2.0_1782476633507_0.0494592073341511"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-26T13:27:58.805Z","modified":"2026-06-26T12:23:54.049Z","0.1.0":"2026-03-26T13:27:59.092Z","0.1.1":"2026-03-26T14:02:22.131Z","0.1.2":"2026-03-26T14:08:32.329Z","0.1.3":"2026-05-16T08:48:40.249Z","0.1.4":"2026-05-17T13:01:21.814Z","0.1.5":"2026-06-08T13:12:50.147Z","0.2.0":"2026-06-26T12:23:53.684Z"},"bugs":{"url":"https://github.com/ai4paper/apaper-mcp/issues"},"homepage":"https://github.com/ai4paper/apaper-mcp#readme","repository":{"type":"git","url":"git+https://github.com/ai4paper/apaper-mcp.git"},"description":"Academic paper research MCP server built with Bun and TypeScript.","maintainers":[{"name":"isomoes-a","email":"jiahaoxiang2000@gmail.com"}],"readme":"# apaper-mcp\n\nAn MCP (Model Context Protocol) server that gives AI assistants direct access to academic paper databases. It exposes a unified set of tools for searching and downloading papers across arXiv, IACR ePrint, DBLP, Google Scholar, and CNKI (中国知网), so an MCP-compatible client (Claude Code, Claude Desktop, or any other) can run literature searches, pull BibTeX entries, and fetch PDFs without leaving the chat.\n\n## Tools\n\n| Tool | Source | Description |\n| --- | --- | --- |\n| `search_arxiv_papers` | arXiv | Search with category, date-range, and sort options |\n| `download_arxiv_paper` | arXiv | Download a PDF |\n| `search_iacr_papers` | IACR ePrint | Search the ePrint archive |\n| `download_iacr_paper` | IACR ePrint | Download a PDF |\n| `search_dblp_papers` | DBLP | Search, optionally with BibTeX |\n| `search_google_scholar_papers` | Google Scholar | Search |\n| `search_cnki_papers` | CNKI (中国知网) | Search |\n| `download_cnki_paper` | CNKI (中国知网) | Download a PDF |\n\narXiv tools scrape the public `arxiv.org/search/` HTML page, which works on\nnetworks where the `export.arxiv.org` Atom API is blocked or rate-limited. If\nyou need to route through a mirror, set `ARXIV_SEARCH_URL`,\n`ARXIV_ADVANCED_URL`, and/or `ARXIV_PDF_BASE`.\n\nThe arXiv tools throttle themselves and retry HTTP 429 / 5xx with exponential\nbackoff, honouring `Retry-After`; on a persistent block the error names the\nthrottled IP and wait time. Tune with `ARXIV_MIN_INTERVAL_MS` (`3000`),\n`ARXIV_MAX_RETRIES` (`3`), `ARXIV_BACKOFF_BASE_MS` (`3000`),\n`ARXIV_BACKOFF_MAX_MS` (`60000`), `ARXIV_BACKOFF_JITTER_MS` (`500`), and\n`ARXIV_IP_ECHO_URL` (`\"\"` to disable the IP lookup).\n\nCNKI tools require institutional access. On IP-based networks the session\ncookie is obtained automatically on first use — no manual login needed.\n\nIACR ePrint sits behind Cloudflare, which intermittently serves a JS bot\nchallenge that automated HTTP clients can't solve — most often on PDF downloads.\nSearch keeps working; when a download is challenged the tool reports it clearly\n(rather than saving the challenge page) and gives you the URL to fetch in a\nbrowser. This is server-side and unrelated to any proxy.\n\n## Proxy\n\nSet `SPIDER_PROXY` to route outbound requests — arXiv, IACR, DBLP, Google\nScholar, and their PDF downloads — through a proxy. CNKI is excluded on purpose:\nit authenticates by institutional IP and always uses this host's real address.\nBoth a standard URL and the colon-delimited form some mobile-proxy providers\nhand out are accepted:\n\n```bash\nSPIDER_PROXY=\"socks5://user:pass@host:1086\"   # standard\nSPIDER_PROXY=\"socks5://host:1086:user:pass\"   # host:port:user:pass (e.g. Kookeey)\nSPIDER_PROXY=\"http://user:pass@host:8080\"     # HTTP CONNECT proxy\n```\n\n`socks5`, `socks4`, `http`, and `https` schemes are supported (the scheme\ndefaults to `http` when omitted) on both the Node (published binary) and Bun\n(`dev`/`start`) runtimes. The scheme must match the proxy's port — a SOCKS port\nwon't accept `http://` and vice versa. If `SPIDER_PROXY` is set but invalid or\ncan't be initialised, requests are blocked rather than sent direct, so a\nmisconfigured proxy never leaks this host's real IP.\n\nFlaky residential/mobile proxies routinely drop or refuse connections;\nidempotent (GET) requests through the proxy are retried automatically on such\ntransient failures. IACR fires the most requests per search (a detail fetch per\nresult), so its per-request timeouts default high for slow proxies — tune with\n`IACR_TIMEOUT_MS` (`30000`) and `IACR_DOWNLOAD_TIMEOUT_MS` (`60000`).\n\n## Install\n\nFrom npm:\n\n```bash\nnpm install -g @ai4paper/apaper-mcp\n```\n\n## MCP client config\n\n```json\n{\n  \"mcp\": {\n    \"apaper-mcp\": {\n      \"type\": \"local\",\n      \"command\": [\"npx\", \"@ai4paper/apaper-mcp\"],\n      \"enabled\": true\n    }\n  }\n}\n```\n\n<details>\n<summary>Development</summary>\n\n### Requirements\n\n- Bun\n- Node.js\n\n### Install from source\n\n```bash\nbun install\n```\n\n### Dev / build / test\n\n```bash\nbun run dev        # start server (logs to stderr on stdio)\nbun run build\nbun run test\nbun run typecheck\nbun run start      # run built server\n```\n\n### Tool schemas\n\n- `search_arxiv_papers`\n  - input: `{ \"query\": string, \"max_results\"?: number, \"date_from\"?: string, \"date_to\"?: string, \"categories\"?: string[], \"sort_by\"?: \"relevance\" | \"date\" }`\n- `download_arxiv_paper`\n  - input: `{ \"paper_id\": string, \"save_path\"?: string }` (paper_id like `2103.12345` or `2103.12345v2`)\n- `search_iacr_papers`\n  - input: `{ \"query\": string, \"max_results\"?: number, \"fetch_details\"?: boolean, \"year_min\"?: number | string, \"year_max\"?: number | string }`\n- `download_iacr_paper`\n  - input: `{ \"paper_id\": string, \"save_path\"?: string }`\n- `search_dblp_papers`\n  - input: `{ \"query\": string, \"max_results\"?: number, \"year_from\"?: number | string, \"year_to\"?: number | string, \"venue_filter\"?: string, \"include_bibtex\"?: boolean }`\n- `search_google_scholar_papers`\n  - input: `{ \"query\": string, \"max_results\"?: number, \"year_low\"?: number | string, \"year_high\"?: number | string }`\n- `search_cnki_papers`\n  - input: `{ \"query\": string, \"page_num\"?: number, \"page_size\"?: number }`\n- `download_cnki_paper`\n  - input: `{ \"href\": string, \"save_path\"?: string }` (use an `href` from `search_cnki_papers`)\n\n### Local MCP testing\n\n```bash\nnpx @modelcontextprotocol/inspector bun run src/index.ts\n```\n\n</details>\n","readmeFilename":"README.md"}