cyanheads avatar

Orcid Mcp Server

cyanheads/orcid-mcp-server

Connects to the public ORCID API to search researchers by name, affiliation, ROR ID, DOI, or PMID, then pull their profile metadata, publication lists, institutional affiliations, funding records, and peer review activity. The nine tools map directly to ORCID's REST endpoints: search returns expanded results with inline institution data, get_works returns summaries with put-codes and external IDs, and get_work_detail fetches abstracts and contributor lists when you need them. The resolve_researcher tool ranks disambiguation candidates by name match type and institutional overlap. Useful when you're building researcher dossiers, chaining identifiers across bibliographic servers, or need verified ORCID IDs before hitting Crossref or PubMed.

GitHub stars
6
tools
9
transport
STDIO, HTTP
env vars
6
last updated
Oct 28, 2026

Install

From registry metadata
$ npx add-mcp https://orcid.caseyjhand.com/mcp --name orcid

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http orcid https://orcid.caseyjhand.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 9 tools

Verified live against the running server on Nov 6, 2026.

orcid_get_profileFetch a researcher's public profile from ORCID: name, other names, biography, keywords, researcher URLs, and external identifiers such as Scopus Author ID, ResearcherID, and Loop profile. This is the entry point for building a researcher dossier. Pass a bare ORCID iD (0000-000...1 params

Fetch a researcher's public profile from ORCID: name, other names, biography, keywords, researcher URLs, and external identifiers such as Scopus Author ID, ResearcherID, and Loop profile. This is the entry point for building a researcher dossier. Pass a bare ORCID iD (0000-000...

Parameters* required
orcid_id*string
ORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x.
orcid_search_researchersSearch the ORCID registry using structured field parameters or raw Solr syntax. Provide at least one non-blank search field; all provided structured params are ANDed together. The `query` field adds raw Solr syntax, ANDed with the structured params as one group. Returns ORCID...11 params

Search the ORCID registry using structured field parameters or raw Solr syntax. Provide at least one non-blank search field; all provided structured params are ANDed together. The `query` field adds raw Solr syntax, ANDed with the structured params as one group. Returns ORCID...

Parameters* required
affiliationstring
Organization name to filter by. Phrase match.
doistring
Complete DOI to anchor the search, bare (10.1126/science.1225829) or as a https://doi.org/, https://dx.doi.org/, or doi: form. Requires 10., digits, a slash, and a non-whitespace suffix; blank mean...
family_namestring
Researcher's family (last) name.
given_namestring
Researcher's given (first) name. Phrase match; a value of only initials (J. or J. A.) matches given names starting with each letter.
grant_numberstring
Grant or award number on a funding item in the researcher record (e.g. 5F31MH010500-03). Matched as a case-insensitive phrase over the parts between separators such as hyphens and slashes: 5F31MH01...
keywordstring
Keyword to search in the researcher's keyword fields. Phrase match.
pmidstring
Numeric PubMed ID to anchor the search, bare (22745249), as PMID:22745249, or as a pubmed.ncbi.nlm.nih.gov or ncbi.nlm.nih.gov/pubmed URL. Blank means unset; a label or URL without digits is invali...
querystring
Raw Solr query string. Sent as written when it is the only field; beside structured params it is ANDed as one parenthesized group, so a top-level OR keeps its alternatives (an exclusion-only query...
ror_idstring
ROR organization ID to filter by, bare (00f54p054) or as a ror.org URL (https://ror.org/00f54p054). Returns researchers affiliated with this organization.
rowsinteger
Results per page. Default 20; a larger value returns at most 1,000 (the most ORCID serves per request) and says so.default: 20
startinteger
Pagination offset (0-based), 0–10,000. The ORCID Public API rejects start > 10,000 for unauthenticated requests.default: 0
orcid_get_worksRetrieve works associated with an ORCID iD — publications, datasets, software, preprints, and more. Returns work summaries with put-codes, titles, types, publication dates, journal names, and all external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs). Narrow the list with work_t...7 params

Retrieve works associated with an ORCID iD — publications, datasets, software, preprints, and more. Returns work summaries with put-codes, titles, types, publication dates, journal names, and all external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs). Narrow the list with work_t...

Parameters* required
include_external_idsboolean
When true (default), each work carries its external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs). Set false to omit them for a lighter payload when only titles, types, and dates are needed.default: true
limitinteger
Works per page. Default 25; a larger value returns at most 1,000 and says so.default: 25
offsetinteger
Zero-based index of the first matching work to return (default 0). Continue with nextOffset.default: 0
orcid_id*string
ORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x.
work_typesarray
Keep only works of these types, matched against each workType (e.g. ["journal-article", "preprint"]; ORCID spells datasets data-set). Any listed type matches; an empty list keeps every type.
year_frominteger
Keep only works published in or after this year, read from the first four digits of publicationDate. Under either year bound, works with no publication date are left out and counted in the notice.
year_tointeger
Keep only works published in or before this year; not before year_from.
orcid_get_work_detailFetch full work details by put-code from orcid_get_works. Accepts 1–1,000 raw codes, deduplicates in first-occurrence order, and fetches the first 100 distinct codes in one request, returning every record ORCID sends. Returns abstracts, contributors with CRediT roles, the reco...2 params

Fetch full work details by put-code from orcid_get_works. Accepts 1–1,000 raw codes, deduplicates in first-occurrence order, and fetches the first 100 distinct codes in one request, returning every record ORCID sends. Returns abstracts, contributors with CRediT roles, the reco...

Parameters* required
orcid_id*string
ORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x.
put_codes*array
Array of 1–1,000 raw work put-codes from orcid_get_works. Deduplicated in first-occurrence order; the first 100 distinct codes are fetched and the rest return in deferredPutCodes. A record costs wh...
orcid_get_affiliationsFetch affiliation records for an ORCID researcher. The `types` parameter controls which affiliation sections to return: employment, education, invited-positions, distinctions, memberships, qualifications, services, or all. Default is employment and education. Returns organizat...2 params

Fetch affiliation records for an ORCID researcher. The `types` parameter controls which affiliation sections to return: employment, education, invited-positions, distinctions, memberships, qualifications, services, or all. Default is employment and education. Returns organizat...

Parameters* required
orcid_id*string
ORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x.
typesarray
Which affiliation types to return. Defaults to employment and education. Use ["all"] to get every section.
orcid_get_fundingList funding for an ORCID researcher, or supply a summary putCode as put_code to fetch one deposited award. Summary returns one preferred record per grant group with all sources and distinct periods. Detail returns that deposit alone with its own source, optional exact decimal...2 params

List funding for an ORCID researcher, or supply a summary putCode as put_code to fetch one deposited award. Summary returns one preferred record per grant group with all sources and distinct periods. Detail returns that deposit alone with its own source, optional exact decimal...

Parameters* required
orcid_id*string
ORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x.
put_codeinteger
Selected deposit putCode from a funding summary. Omit to list grouped summaries.
orcid_get_peer_reviewsFetch peer review activity for an ORCID researcher: reviewer role (reviewer, editor, chair, etc.), review type, completion dates, ISSN-keyed group identifiers, and the convening organization as ORCID records it — often the service that imported the review (e.g. Publons, Clariv...3 params

Fetch peer review activity for an ORCID researcher: reviewer role (reviewer, editor, chair, etc.), review type, completion dates, ISSN-keyed group identifiers, and the convening organization as ORCID records it — often the service that imported the review (e.g. Publons, Clariv...

Parameters* required
limitinteger
Reviews per page. Default 25; a larger value returns at most 1,000 and says so.default: 25
offsetinteger
Zero-based review offset; continue with nextOffset.default: 0
orcid_id*string
ORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x.
orcid_get_research_resourcesList allocation proposals for an ORCID researcher, or supply put_code from a summary record to retrieve its actual resource items. Summary is the default view and includes every proposal host, identifiers, access period, and source provenance; hostOrganization remains the firs...4 params

List allocation proposals for an ORCID researcher, or supply put_code from a summary record to retrieve its actual resource items. Summary is the default view and includes every proposal host, identifiers, access period, and source provenance; hostOrganization remains the firs...

Parameters* required
item_limitinteger
Items per detail page. Default 25; a larger value returns at most 100 and says so. Requires put_code.
item_offsetinteger
Detail item offset. Default 0; requires put_code.
orcid_id*string
ORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x.
put_codeinteger
Proposal put-code from summary mode; selects the full allocation detail.
orcid_resolve_researcherDisambiguate an author name to a verified ORCID iD. Returns ranked candidates (5 by default, at most 20 per search stage) with transparent disambiguation signals: name match type (exact/partial/other-name/none), institution overlap flag, and whether a DOI or PMID anchor was us...5 params

Disambiguate an author name to a verified ORCID iD. Returns ranked candidates (5 by default, at most 20 per search stage) with transparent disambiguation signals: name match type (exact/partial/other-name/none), institution overlap flag, and whether a DOI or PMID anchor was us...

Parameters* required
affiliationstring
Researcher's institution or organization name. Used for institution overlap scoring and optionally as a search constraint.
doistring
Complete DOI of a work authored by this researcher, bare (10.1126/science.1225829) or as a https://doi.org/, https://dx.doi.org/, or doi: form. Requires 10., digits, a slash, and a non-whitespace s...
name*string
Author name to disambiguate: a full name ("Jennifer Doudna"), a byline with initials ("J. Doudna", "Jennifer A. Doudna"), or "Family, Given" ("Doudna, Jennifer", read as Jennifer Doudna). The exact...
pmidstring
Numeric PubMed ID of a work authored by this researcher, bare (22745249), as PMID:22745249, or as a pubmed.ncbi.nlm.nih.gov or ncbi.nlm.nih.gov/pubmed URL. Blank means unset; a label or URL without...
rowsinteger
Candidates to return. Default 5; a larger value returns at most 20 per search stage and says so.default: 5

Sponsors

Configuration

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

MCP_TRANSPORT_TYPEdefault: http

Selects the HTTP transport.

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Readme

@cyanheads/orcid-mcp-server

Search and retrieve researcher profiles, works, affiliations, funding, and peer review records from the ORCID registry via MCP. STDIO or Streamable HTTP.

9 Tools • 2 Resources

Details

Repository
github.com/cyanheads/orcid-mcp-server
Package
@cyanheads/orcid-mcp-server
Transport
STDIO, HTTP
Registry
MCP registry, active
Resources
1
Tools verified
Nov 6, 2026

More from cyanheads