
OpenNIH MCP server
Which MCP servers are OpenNIH's own, from the official registry and from asking its own domain, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.
read 2026-10-17
- Registry nameorg.opennih/opennihverified in the MCP registry
The registry name sits under opennih.org. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.
- Stateanswerschecked 2026-10-17
- Tools14
- Server calls itselfOpenNIH Public Grant Analysis
- Server version0.0.12
- Protocol version2025-06-18
On 2026-10-17 the server answered initialize and tools/list without a sign-in. First answer in 177 ms.
- Whether its tools do the product's job has not been judged yet.
Once connected
- For "Search NIH grants by project, investigator, or award number", the likely first call is search_grants.
- Parameters are untyped or undescribed in 13 of 14 tools: check arguments before calling.
Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.
- INITE MCP score93 of 100answers 100 · definitions 85 · context 85 · connects 100
- Answered100% of days17 of 17 daily checks
- Median first answer386 ms
- Space in an agent's context≈ 5,287 tokensthe definitions of all its tools (14), which an agent carries on every turn
- Tool definitionsB · 85 of 100
- Typed results14 of 14 toolsdeclared outputSchema: results come typed, read once
- Parameters without a description: in 13 of 14
What an agent can do with it
- not sure · Rank institutions by peer-reviewed NIH research grant funding
- not sure · Trace NIH funding trends by institute and mechanism over decades
- can do · Search NIH grants by project, investigator, or award number
Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?
Worth a look
None of the five warning signs in these definitions.
A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (25%), doing the product's job (25%), definitions (20%), context (10%), use (10%) and how readily a client connects (10%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →
source_statusUse this tool when the user asks whether the OpenNIH corpus is loaded, which official sidecars are available, or how stale the data might be — and before reporting 'no such grant', since corpus_lag_note explains that a grant added to…
search_grantsUse this tool when the user asks to find NIH grants — by topic, principal investigator, institution, NIH Institute/Center, activity code, fiscal year, or project number ('what NIH grants exist on CRISPR', 'show me Stanford's R01s in…
rank_institutionsUse this tool when the user asks which institutions get the most NIH money — 'top NIH-funded universities', 'where does NCI money go', 'rank research hospitals by R01 funding'. Each ranked row also yields its entity_id, the canonical…
get_pi_profileUse this tool when the user asks about one researcher — 'how much NIH funding does Dr. X have', 'list this PI's grants', 'who does she collaborate with'. profile_id is the NIH RePORTER PI identifier carried in grant-search results'…
get_institution_profileUse this tool when the user asks about one named institution — 'what is Harvard's NIH funding history', 'which PIs does this university fund', 'what mechanisms does it win'. entity_id is the canonical institution identifier (from the…
funding_trendUse this tool to get yearly NIH funding totals and grant counts. Returns a time series for the whole NIH, one Institute/Center, one activity code, or one institution. Use it when the user asks 'how much NIH funding was awarded in FY2020'…
topic_trendUse this tool when the user asks how a research topic has trended over time — 'is CRISPR funding growing', 'how many p53 grants per year', 'when did NIH start funding long COVID'. Returns yearly project-row counts plus recorded award…
activity_code_distributionUse this tool when the user asks what KINDS of awards NIH (or one Institute) makes — 'how much goes to R01s vs training grants', 'what share of NCI's portfolio is centers', 'break NIH down by mechanism'. Returns counts and recorded totals…
institution_concentrationUse this tool when the user asks how concentrated or unequal NIH funding is across institutions — 'is NIH money concentrated in a few universities', 'what share do the top 5 take', 'has inequality grown since 2000'. Returns gini, hhi…
mechanism_mixUse this tool when the user asks what mix of award types ONE institution wins — 'is this university mostly R01s or centers', 'how much of its NIH money is training', 'compare two schools' portfolios'. entity_id is the canonical…
ic_topic_crossUse this tool when the user asks what ONE NIH Institute funds in a topic — 'what is NCI spending on immunotherapy', 'does NIMH fund psychedelics research', 'compare NIAID and NCI on vaccines' (call it once per Institute), or ic='ALL' for…
funding_growthUse this tool when the user asks about the RATE of change rather than the level — 'is this university's NIH funding growing', 'what's the CAGR since 2015', 'who grew fastest'. Returns year-over-year growth plus a window CAGR for one…
searchUse this tool when a Deep Research or connector client needs citation-shaped NIH grant hits for a natural-language query. Returns {"results": [{id, title, text, url}]} where id is the NIH project_num and url is the public OpenNIH grant…
fetchUse this tool to retrieve the full record for one NIH grant by its id. Returns {id, title, text, url, metadata} with url set to the public OpenNIH grant page so the client can cite it. This is the OpenAI Deep Research compatibility…
How to connect
Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:
{
"mcpServers": {
"opennih": {
"type": "http",
"url": "https://mcp.opennih.org/mcp"
}
}
}Add it
Claude Code, in a terminal
claude mcp add --transport http opennih https://mcp.opennih.org/mcpclaude.ai, ChatGPT and other clients: add https://mcp.opennih.org/mcp as a custom connector in the settings.
Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.
Before we count this visit
Analytics and ad measurement tell us which pages and which of our ads do their job: Google Analytics and Google Ads, the Meta pixel, Yandex Metrica, and one first-party id of our own. Nothing is stored until you answer, and declining changes nothing about the site.