cern-inspire-mcp-server

v0.1.1 pre-1.0

Search INSPIRE-HEP papers, authors, experiments, HEPData records; get citation metrics and BibTeX via MCP. STDIO or Streamable HTTP.

cern-inspire.caseyjhand.com/mcp
claude mcp add --transport http cern-inspire-mcp-server https://cern-inspire.caseyjhand.com/mcp
codex mcp add cern-inspire-mcp-server --url https://cern-inspire.caseyjhand.com/mcp
{
  "mcpServers": {
    "cern-inspire-mcp-server": {
      "url": "https://cern-inspire.caseyjhand.com/mcp"
    }
  }
}
gemini mcp add --transport http cern-inspire-mcp-server https://cern-inspire.caseyjhand.com/mcp
{
  "mcpServers": {
    "cern-inspire-mcp-server": {
      "command": "bunx",
      "args": [
        "mcp-remote",
        "https://cern-inspire.caseyjhand.com/mcp"
      ]
    }
  }
}
{
  "mcpServers": {
    "cern-inspire-mcp-server": {
      "type": "http",
      "url": "https://cern-inspire.caseyjhand.com/mcp"
    }
  }
}
curl -X POST https://cern-inspire.caseyjhand.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'

Tools

8

cern_inspire_search_literature

open-world

Search INSPIRE-HEP papers with INSPIRE query syntax or free text, filtered by document type, subject, and year, sorted by relevance, recency, or citations. Returns one page of papers with recid, title, first author, date, citation counts, arXiv ID, DOI, publication, and an abstract snippet; pass a recid to cern_inspire_get_paper for the full record or to cern_inspire_export_citations ("recid:N") for BibTeX. INSPIRE never rejects malformed syntax: an unparsed operator widens or empties the match, so a very broad or empty result usually means the query needs fixing (cern_inspire_list_reference topic search_syntax). Only the first 10,000 results of a query are reachable.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cern_inspire_search_literature",
    "arguments": {
      "query": "<query>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "description": "INSPIRE query syntax or free text. Common operators: \"a Jane.Doe.1\" or \"a Doe, J\" (author), \"t higgs boson\" (title words), \"cn atlas\" or \"collaboration:atlas\" (collaboration), \"date > 2015\", \"topcite 500+\" (cited 500+ times), \"refersto:recid:451647\" (papers citing a record), \"citedby:recid:451647\" (its references), \"j Phys.Rev.Lett.\" (journal), \"eprint 1207.7214\"; combine with and/or/not. Bare words search all fields. INSPIRE does not reject malformed syntax; see cern_inspire_list_reference topic search_syntax for the rest."
    },
    "sort": {
      "description": "Result order: relevance (default), mostrecent, or mostcited.",
      "default": "relevance",
      "type": "string",
      "enum": [
        "relevance",
        "mostrecent",
        "mostcited"
      ]
    },
    "document_types": {
      "description": "Restrict to INSPIRE document types, as an array or a comma-separated string (up to 4). Multiple values must ALL hold (published + review = published reviews), not either. Values: article, published, conference paper, thesis, review, note, proceedings, lectures, book chapter, book, introductory, activity report, report.",
      "maxItems": 4,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "article",
          "published",
          "conference paper",
          "thesis",
          "review",
          "note",
          "proceedings",
          "lectures",
          "book chapter",
          "book",
          "introductory",
          "activity report",
          "report"
        ],
        "description": "An INSPIRE document type (case-insensitive)."
      }
    },
    "subjects": {
      "description": "Restrict to INSPIRE subject categories, as an array or a comma-separated string (up to 4). Multiple values must ALL hold, not either. Values: Astrophysics, Phenomenology-HEP, Theory-HEP, Quantum Physics, Unknown, Gravitation and Cosmology, Experiment-HEP, Theory-Nucl, Accelerators, Instrumentation, General Physics, Experiment-Nucl, Math and Math Physics, Condensed Matter, Computing, Lattice, Other, Data Analysis and Statistics.",
      "maxItems": 4,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "Astrophysics",
          "Phenomenology-HEP",
          "Theory-HEP",
          "Quantum Physics",
          "Unknown",
          "Gravitation and Cosmology",
          "Experiment-HEP",
          "Theory-Nucl",
          "Accelerators",
          "Instrumentation",
          "General Physics",
          "Experiment-Nucl",
          "Math and Math Physics",
          "Condensed Matter",
          "Computing",
          "Lattice",
          "Other",
          "Data Analysis and Statistics"
        ],
        "description": "An INSPIRE subject category (case-insensitive)."
      }
    },
    "year_from": {
      "description": "Earliest year to include (1900–2100, inclusive), matched on the earliest date INSPIRE records for the paper. Omit for no lower bound.",
      "type": "integer",
      "minimum": 1900,
      "maximum": 2100
    },
    "year_to": {
      "description": "Latest year to include (1900–2100, inclusive), matched on the earliest date INSPIRE records for the paper. Omit for no upper bound.",
      "type": "integer",
      "minimum": 1900,
      "maximum": 2100
    },
    "page": {
      "description": "Page number, starting at 1. page × size may not exceed 10,000.",
      "default": 1,
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "size": {
      "description": "Papers per page (1–100, default 10).",
      "default": 10,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "query",
    "sort",
    "page",
    "size"
  ],
  "additionalProperties": false
}
view source ↗

cern_inspire_get_paper

open-world

Fetch one paper's full INSPIRE-HEP record by recid, arXiv ID, or DOI: authors with affiliations and identifiers, abstract, publication references, arXiv and DOI identifiers, keywords, subjects, citation counts, linked experiments, texkeys, and whether HEPData holds its numerical tables (record DOI, latest version, table count, hepdata.net link). Also returns ready-made literature queries for the papers citing it and for its references. Large collaboration papers can list thousands of authors; max_authors caps the list while authorCount gives the full number.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cern_inspire_get_paper",
    "arguments": {
      "paper": "<paper>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "paper": {
      "description": "INSPIRE recid (e.g. 451647), arXiv ID (1207.7214 or hep-th/9711200, with or without 'arXiv:', a version suffix, or an arxiv.org URL), DOI (10.1016/…, with or without 'doi:' or a doi.org prefix; no * or ? wildcards), an inspirehep.net literature URL, or HEPData's ins<recid> form or hepdata.net record URL. Up to 256 characters.",
      "type": "string",
      "maxLength": 256,
      "pattern": "^(?:\\d{1,9}|\\d{4}\\.\\d{4,5}|[a-z-]+(?:\\.[A-Z]{2})?\\/\\d{7}|10\\.\\d{4,9}\\/[^\\s*?]+)$"
    },
    "max_authors": {
      "description": "Most authors to list (0–500, default 25). The full count is always in authorCount.",
      "default": 25,
      "type": "integer",
      "minimum": 0,
      "maximum": 500
    }
  },
  "required": [
    "paper",
    "max_authors"
  ],
  "additionalProperties": false
}
view source ↗

cern_inspire_export_citations

open-world

Export INSPIRE-HEP's citation entries for the papers a literature query selects, as BibTeX or LaTeX \bibitem entries (EU or US style), keyed by INSPIRE texkeys and ready to paste into a bibliography. Name specific papers with "recid:451647 or arxiv:1207.7214 or doi:10.1016/…", or export a topic, author, or citing set with any query cern_inspire_search_literature accepts. Entries are INSPIRE's verbatim text (long author lists arrive abbreviated as "First, Name and others").

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cern_inspire_export_citations",
    "arguments": {
      "query": "<query>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "description": "Literature query selecting the papers to cite. Named papers: \"recid:451647 or arxiv:1207.7214 or doi:10.1016/j.physletb.2012.08.020\". Or any INSPIRE query: a topic (\"t higgs and topcite 500+\"), an author (\"a Edward.Witten.1\"), or the papers citing a record (\"refersto:recid:451647\"). See cern_inspire_list_reference topic search_syntax."
    },
    "format": {
      "description": "Entry format: bibtex (default), latex-eu, or latex-us (\\bibitem entries in European or US style).",
      "default": "bibtex",
      "type": "string",
      "enum": [
        "bibtex",
        "latex-eu",
        "latex-us"
      ]
    },
    "sort": {
      "description": "Entry order: relevance (default), mostrecent, or mostcited.",
      "default": "relevance",
      "type": "string",
      "enum": [
        "relevance",
        "mostrecent",
        "mostcited"
      ]
    },
    "size": {
      "description": "Most entries to return (1–50, default 10).",
      "default": 10,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "query",
    "format",
    "sort",
    "size"
  ],
  "additionalProperties": false
}
view source ↗

cern_inspire_search_authors

open-world

Find physicist profiles in INSPIRE-HEP by name, INSPIRE BAI, ORCID, INSPIRE ID, or author recid. Each profile carries its recid, BAI, ORCID, current and past positions, advisors, arXiv categories, links, awards, and a literatureQuery that selects the person's papers in cern_inspire_search_literature. A name returns ranked candidates (a bare surname can match tens of thousands of profiles, and a less-cited namesake can rank first), so confirm the person from positions and categories before passing a bai or recid to cern_inspire_get_citation_summary. An identifier matches exactly.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cern_inspire_search_authors",
    "arguments": {
      "query": "<query>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "query": {
      "description": "A physicist's name (\"Witten, Edward\" or \"Edward Witten\") or one identifier: INSPIRE BAI (Edward.Witten.1, exact and case-sensitive), ORCID (0000-0002-7752-6073 or an orcid.org URL), INSPIRE ID (INSPIRE-00136372), or author recid.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "description": "Profiles to return (1–25, default 5).",
      "default": 5,
      "type": "integer",
      "minimum": 1,
      "maximum": 25
    }
  },
  "required": [
    "query",
    "limit"
  ],
  "additionalProperties": false
}
view source ↗

cern_inspire_get_citation_summary

open-world

Compute INSPIRE-HEP's citation summary for one author or for any literature query: h-index, citation totals, average citations per paper, and paper counts per citation bucket (0, 1–9, 10–49, 50–99, 100–249, 250–499, 500+), each for all citeable papers and for published papers. Pass exactly one of author (a BAI, ORCID, INSPIRE ID, or author recid — resolve a name with cern_inspire_search_authors first) or query (any INSPIRE literature query: a topic, collaboration, institution, or "a <BAI>"). Document type, subject, and year filters narrow every figure; exclude_self_citations recounts without self-citations.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cern_inspire_get_citation_summary",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "author": {
      "description": "One author identifier: INSPIRE BAI (Edward.Witten.1, exact and case-sensitive), ORCID (0000-0002-7752-6073 or an orcid.org URL), INSPIRE ID (INSPIRE-00136372), or author recid. Not a name — resolve names with cern_inspire_search_authors first. Pass this or query, not both.",
      "type": "string",
      "maxLength": 200
    },
    "query": {
      "description": "An INSPIRE literature query, e.g. \"collaboration:atlas\", \"t neutrino oscillation\", \"a Edward.Witten.1\". Literature queries do not match ORCIDs; pass an ORCID as author. Pass this or author, not both.",
      "type": "string",
      "maxLength": 1000
    },
    "document_types": {
      "description": "Restrict to INSPIRE document types, as an array or a comma-separated string (up to 4). Multiple values must ALL hold (published + review = published reviews), not either. Values: article, published, conference paper, thesis, review, note, proceedings, lectures, book chapter, book, introductory, activity report, report.",
      "maxItems": 4,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "article",
          "published",
          "conference paper",
          "thesis",
          "review",
          "note",
          "proceedings",
          "lectures",
          "book chapter",
          "book",
          "introductory",
          "activity report",
          "report"
        ],
        "description": "An INSPIRE document type (case-insensitive)."
      }
    },
    "subjects": {
      "description": "Restrict to INSPIRE subject categories, as an array or a comma-separated string (up to 4). Multiple values must ALL hold, not either. Values: Astrophysics, Phenomenology-HEP, Theory-HEP, Quantum Physics, Unknown, Gravitation and Cosmology, Experiment-HEP, Theory-Nucl, Accelerators, Instrumentation, General Physics, Experiment-Nucl, Math and Math Physics, Condensed Matter, Computing, Lattice, Other, Data Analysis and Statistics.",
      "maxItems": 4,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "Astrophysics",
          "Phenomenology-HEP",
          "Theory-HEP",
          "Quantum Physics",
          "Unknown",
          "Gravitation and Cosmology",
          "Experiment-HEP",
          "Theory-Nucl",
          "Accelerators",
          "Instrumentation",
          "General Physics",
          "Experiment-Nucl",
          "Math and Math Physics",
          "Condensed Matter",
          "Computing",
          "Lattice",
          "Other",
          "Data Analysis and Statistics"
        ],
        "description": "An INSPIRE subject category (case-insensitive)."
      }
    },
    "year_from": {
      "description": "Earliest year to include (1900–2100, inclusive), matched on the earliest date INSPIRE records for the paper. Omit for no lower bound.",
      "type": "integer",
      "minimum": 1900,
      "maximum": 2100
    },
    "year_to": {
      "description": "Latest year to include (1900–2100, inclusive), matched on the earliest date INSPIRE records for the paper. Omit for no upper bound.",
      "type": "integer",
      "minimum": 1900,
      "maximum": 2100
    },
    "exclude_self_citations": {
      "description": "Count citations without self-citations (INSPIRE's definition), default false.",
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "exclude_self_citations"
  ],
  "additionalProperties": false
}
view source ↗

cern_inspire_search_experiments

open-world

Find experiments, collaborations, and facilities in INSPIRE-HEP (ATLAS, CMS, DUNE, Belle II, …) by name, accelerator, or INSPIRE legacy name (CERN-LHC-CMS); digits alone look up an experiment recid. Each record carries the accelerator, host institutions, collaboration and subgroups, classification, lifecycle dates (proposed, approved, started, completed, ongoing), INSPIRE's paper count, a description, and a literatureQuery to pass to cern_inspire_search_literature or cern_inspire_get_citation_summary for the experiment's papers.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cern_inspire_search_experiments",
    "arguments": {
      "query": "<query>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Experiment, collaboration, accelerator, or facility name (ATLAS, LHCb, Tevatron), an INSPIRE legacy name (CERN-LHC-CMS), or an experiment recid (digits only)."
    },
    "limit": {
      "description": "Experiments to return (1–25, default 5).",
      "default": 5,
      "type": "integer",
      "minimum": 1,
      "maximum": 25
    }
  },
  "required": [
    "query",
    "limit"
  ],
  "additionalProperties": false
}
view source ↗

cern_inspire_search_hepdata

open-world

Find HEPData measurement records by physics content — process, observable, energy, collaboration — when the paper is unknown, through INSPIRE-HEP's index of every HEPData submission. Each hit carries the paper recids (pass to cern_inspire_get_paper), collaborations, keywords (reactions such as "P P --> TOP TOPBAR X", observables, centre-of-mass energies), the HEPData record DOI (recordDoi, the citation for the data), latest version, table count, and hepdataUrl, the hepdata.net record page that holds the table values; this tool does not return the values themselves. Only the first 10,000 results of a query are reachable.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cern_inspire_search_hepdata",
    "arguments": {
      "query": "<query>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "description": "Free text or INSPIRE syntax over HEPData records, e.g. top pair differential cross section 13 TeV; collaborations.value:LHCb; keywords.value:\"Inclusive\"; or literature.control_number:<recid> for one paper's data. INSPIRE does not reject malformed syntax; see cern_inspire_list_reference topic search_syntax."
    },
    "sort": {
      "description": "Result order: relevance (default) or mostrecent.",
      "default": "relevance",
      "type": "string",
      "enum": [
        "relevance",
        "mostrecent"
      ]
    },
    "page": {
      "description": "Page number, starting at 1. page × size may not exceed 10,000.",
      "default": 1,
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "size": {
      "description": "Records per page (1–50, default 10).",
      "default": 10,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "query",
    "sort",
    "page",
    "size"
  ],
  "additionalProperties": false
}
view source ↗

cern_inspire_list_reference

Decode the vocabulary the other cern_inspire tools take: INSPIRE search syntax (field operators, boolean logic, sort orders, the 10,000-result window, and how malformed queries behave), identifier forms (recid, arXiv, DOI, BAI, ORCID, INSPIRE ID, texkey, HEPData DOIs), the document_types and subjects filter values, citation-summary buckets, and HEPData record versions and DOIs. Static content with no upstream call; use it to build a query or to recover from an empty or unexpectedly broad result.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cern_inspire_list_reference",
    "arguments": {
      "topic": "<topic>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "topic": {
      "type": "string",
      "enum": [
        "search_syntax",
        "identifiers",
        "document_types",
        "subjects",
        "citation_buckets",
        "hepdata"
      ],
      "description": "Which vocabulary to decode: search_syntax (query operators and rules), identifiers (paper, author, experiment, and HEPData identifier forms), document_types, subjects, citation_buckets (citation-summary ranges and terms), or hepdata (record versions, DOIs, and licence)."
    }
  },
  "required": [
    "topic"
  ],
  "additionalProperties": false
}
view source ↗

Resources

1

One INSPIRE-HEP literature record by recid, as the cern_inspire_get_paper dossier in JSON: title, abstract, authors with affiliations (first 25; authorCount gives the total), publication, identifiers, citation counts, linked experiments, texkeys, and HEPData availability. Use cern_inspire_get_paper to raise the author cap or to look a paper up by arXiv ID or DOI.

uri inspire://literature/{recid} mime application/json