
Nature Academic Search
Install an academic-search MCP skill to query literature, verify DOIs and citations, and export RIS, BibTeX, or EndNote-friendly formats from your coding agent.
Overview
Nature Academic Search is an agent skill most often used in Idea (also Build docs) that wires an academic-search MCP server for paper retrieval, DOI verification, and citation export.
Install
npx skills add https://github.com/yuan1z0825/nature-skills --skill nature-academic-searchWhat is this skill?
- MCP server via uv with academic_search_server.py and configurable PubMed email on install
- Trigger phrases for 查文献, verify DOI, export RIS/.nbib, BibTeX, MeSH-style retrieval (English + Chinese)
- suppress_active_skills coordination with lit-process to avoid duplicate literature workflows
- Installer copies server into ~/.claude/mcp_servers/academic-search and registers academic-search in .mcp.json
- Dependencies pinned: mcp, requests, toml, lxml, pybliometrics for scholarly APIs
- MCP install pins mcp, requests, toml, lxml, and pybliometrics version ranges
- Trigger list includes 15+ bilingual intent phrases in SKILL config
Adoption & trust: 1k installs on skills.sh; 17.8k GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need peer-reviewed sources and clean bibliographies while coding in Claude Code, but generic search skills cannot verify DOIs, export RIS, or run MeSH-aware retrieval.
Who is it for?
Researchers, technical writers, and indie builders validating references or building literature reviews inside Claude Code with uv-installed MCP.
Skip if: Teams that forbid local MCP servers, users without Python/uv, or projects that only need marketing SEO rather than scholarly sources.
When should I use this skill?
Triggers such as 查文献, search papers, verify DOI, export RIS, BibTeX, PMID, check references, MeSH, or academic/literature search appear in the session.
What do I get? / Deliverables
Your agent gains a registered academic-search MCP server and skill triggers so searches and citation exports run inside the same session as your repo work.
- Registered academic-search MCP server in .mcp.json
- Installed skill under ~/.claude/skills/academic-search
- Search results and citation exports (.ris, .nbib, BibTeX) via MCP tools
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Canonical shelf is Idea/research because literature retrieval and reference verification happen before you commit to a thesis, product direction, or technical write-up. Research subphase covers competitive and scholarly discovery; this skill automates paper search and bibliography hygiene rather than building UI.
Where it fits
Pull related papers and dedupe results before choosing a technical approach for a solo SaaS feature.
Verify that cited market or clinical claims in a one-pager match real DOIs and PMID records.
Export BibTeX or RIS into the repo’s docs folder while writing an architecture decision record.
Fact-check references in a long-form technical blog post before publishing.
How it compares
An MCP-integrated literature stack, not a passive markdown prompt—use when you need DOI verification and EndNote/RIS export rather than ad-hoc web summaries.
Common Questions / FAQ
Who is nature-academic-search for?
It is for Claude Code users doing academic or evidence-heavy writing who want PubMed-style search, reference verification, and citation file export from the agent.
When should I use nature-academic-search?
Use it in Idea research when scouting papers, before Build docs when citing architecture decisions, or anytime triggers like verify DOI, export RIS, or search papers fire—after running install.sh with a valid PubMed email.
Is nature-academic-search safe to install?
It installs local Python/MCP components and uses network calls to scholarly services; review the Security Audits panel on this page and audit ~/.claude paths and API credentials you configure.
SKILL.md
READMESKILL.md - Nature Academic Search
{ "mcpServers": { "academic-search": { "command": "uv", "args": [ "run", "--no-project", "--directory", "<MCP_SERVER_DIR>", "--with", "mcp>=1.0.0,<2.0.0", "--with", "requests>=2.28.0,<3.0.0", "--with", "toml>=0.10.2,<2.0.0", "--with", "lxml>=4.9.0,<6.0.0", "--with", "pybliometrics>=4.4.1,<5.0.0", "python", "academic_search_server.py" ] } } } { "enabledMcpjsonServers": [ "academic-search" ] } [academic-search] trigger = ["查文献", "搜论文", "检索", "导入EndNote", "导出RIS", "检查参考文献", "验证DOI", "验证引用", "相关文献", "找类似论文", "构建检索式", "MeSH", "去重", "search papers", "find articles", "academic search", "literature search", "verify references", "check DOI", "verify citations", "download citation", "export .nbib", "export .ris", "BibTeX", "DOI", "PMID"] priority = 5 suppress_active_skills = ["lit-process"] #!/usr/bin/env bash # Academic Search Skill + MCP Server Installer for Claude Code # Usage: bash install.sh [PUBMED_EMAIL] set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" CLAUDE_DIR="${HOME}/.claude" MCP_TARGET="${CLAUDE_DIR}/mcp_servers/academic-search" SKILL_TARGET="${CLAUDE_DIR}/skills/academic-search" MCP_JSON="${CLAUDE_DIR}/.mcp.json" PUBMED_EMAIL="${1:-user@example.com}" echo "=== Academic Search Installer ===" echo "Target: ${CLAUDE_DIR}" echo "PubMed email: ${PUBMED_EMAIL}" echo # 1. Install Python dependencies echo "[1/5] Installing Python dependencies..." pip install --quiet -r "${SCRIPT_DIR}/mcp-server/requirements.txt" 2>/dev/null || { echo " pip failed, trying pip3..." pip3 install --quiet -r "${SCRIPT_DIR}/mcp-server/requirements.txt" 2>/dev/null || { echo " WARNING: Could not install Python deps. Install manually:" echo " pip install -r mcp-server/requirements.txt" } } # 2. Copy MCP server echo "[2/5] Copying MCP server..." mkdir -p "${MCP_TARGET}" cp -r "${SCRIPT_DIR}/mcp-server/"* "${MCP_TARGET}/" # 3. Copy Skill echo "[3/5] Copying Skill..." mkdir -p "${SKILL_TARGET}" cp "${SCRIPT_DIR}/README.md" "${SKILL_TARGET}/" cp "${SCRIPT_DIR}/SKILL.md" "${SKILL_TARGET}/" cp -r "${SCRIPT_DIR}/references" "${SKILL_TARGET}/" cp -r "${SCRIPT_DIR}/scripts" "${SKILL_TARGET}/" cp -r "${SCRIPT_DIR}/config" "${SKILL_TARGET}/" # 4. Merge .mcp.json echo "[4/5] Configuring .mcp.json..." if [ -f "${MCP_JSON}" ]; then # Check if academic-search already exists if grep -q '"academic-search"' "${MCP_JSON}" 2>/dev/null; then echo " academic-search already in .mcp.json, skipping merge." else # Inject into existing mcpServers object python3 -c " import json, sys with open('${MCP_JSON}', 'r') as f: cfg = json.load(f) cfg.setdefault('mcpServers', {})['academic-search'] = { 'command': 'python3', 'args': ['${MCP_TARGET}/academic_search_server.py'], 'env': {'PUBMED_EMAIL': '${PUBMED_EMAIL}'} } with open('${MCP_JSON}', 'w') as f: json.dump(cfg, f, indent=2) f.write('\n') print(' Merged academic-search into existing .mcp.json') " fi else cat > "${MCP_JSON}" <<MCPJSON { "mcpServers": { "academic-search": { "command": "python3", "args": ["${MCP_TARGET}/academic_search_server.py"], "env": { "PUBMED_EMAIL": "${PUBMED_EMAIL}" } } } } MCPJSON echo " Created new .mcp.json" fi # 5. Enable in settings.json echo "[5/5] Enabling in settings.json..." SETTINGS_JSON="${CLAUDE_DIR}/settings.json" if [ -f "${SETTINGS_JSON}" ]; then python3 -c " import json with open('${SETTINGS_JSON}', 'r') as f: cfg = json.load(f) enabled = cfg.setdefault('enabledMcpjsonServers', []) if 'academic-search' not in enabled: enabled.append('academic-search') with open('${SETTINGS_JSON}', 'w') as f: json.dump(cfg, f, indent=2) f.write('\n') print(' Added academic-search to enabledMcpjsonServers') else: print('