Access the NIH Reporter API for NIH-funded research projects and grants.
NIH Reporter MCP Server
A Model Context Protocol (MCP) server that provides programmatic access to the NIH Reporter API for searching and retrieving information about NIH-funded research projects.
Overview
This MCP server allows AI assistants and other MCP clients to search for and retrieve detailed information about NIH-funded research grants, including:
- Project details and funding information
- Principal investigator information
- Organization details
- Project abstracts and public health relevance
- Award amounts and dates
- Study sections and review information
Features
Available Tools
search_projects - Search for NIH projects using multiple criteria:
- Fiscal years
- NIH Institutes/Centers (IC codes)
- Activity codes (R01, P01, etc.)
- Organization names
- Principal investigator names
- Project numbers
- Award amount ranges
- Date ranges
- Keywords in title/abstract
get_project_details - Get comprehensive details about a specific project by project number or application ID
search_recent_awards - Find recently awarded projects within a specified number of days
search_by_investigator - Search for all projects by a specific principal investigator
get_spending_categories - Get information about NIH spending categories
Prerequisites
- Docker and Docker Compose installed
- Basic understanding of MCP (Model Context Protocol)
Quick Start
1. Build the Docker Image
docker-compose build
2. Run the Server
docker-compose up
The server will start and listen for MCP requests via stdin/stdout.
3. Alternative: Build and Run with Docker Only
# Build the image
docker build -t nih-reporter-mcp .
# Run the container
docker run -i nih-reporter-mcp
Configuration for Claude Desktop
To use this MCP server with Claude Desktop, add it to your Claude configuration file:
On macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"nih-reporter": {
"command": "docker",
"args": ["run", "-i", "--rm", "nih-reporter-mcp"]
}
}
}
After adding this configuration, restart Claude Desktop.
Usage Examples
Once connected to an MCP client (like Claude Desktop), you can use natural language to interact with the NIH Reporter API:
Example 1: Search for Recent Cancer Research
"Find recent NIH cancer research projects from the National Cancer Institute awarded in 2025"
This will use the search_projects tool with:
- agencies: ["NCI"]
- fiscal_years: [2025]
Example 2: Find Projects by Investigator
"Show me all NIH projects where John Smith is the principal investigator"
This will use the search_by_investigator tool.
Example 3: Get Project Details
"Get detailed information about project R01CA123456"
This will use the get_project_details tool.
Example 4: Search Recent Awards
"What are the newest NIH awards from the last 7 days?"
This will use the search_recent_awards tool.
Using with Azure OpenAI Responses API
You can integrate this MCP server with Azure OpenAI's Responses API using function calling. Here are snippets showing how to define the tools in different languages:
Python
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
# Configure Azure AD authentication
token_provider = get_bearer_token_provider(
DefaultAzureCredential(),
"https://cognitiveservices.azure.com/.default"
)
client = AzureOpenAI(
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
azure_ad_token_provider=token_provider,
api_version="preview"
)
# Define NIH Reporter search tool
tools = [
{
"type": "function",
"function": {
"name": "search_projects",
"description": "Search for NIH-funded research projects using multiple criteria including fiscal years, agencies, activity codes, and keywords",
"parameters": {
"type": "object",
"properties": {
"fiscal_years": {
"type": "array",
"items": {"type": "integer"},
"description": "Fiscal years to search (e.g., [2024, 2025])"
},
"agencies": {
"type": "array",
"items": {"type": "string"},
"description": "NIH Institute/Center codes (e.g., ['NCI', 'NHLBI'])"
},
"activity_codes": {
"type": "array",
"items": {"type": "string"},
"description": "Grant activity codes (e.g., ['R01', 'K99'])"
},
"pi_names": {
"
Tools (5)
search_projectsSearch for NIH projects using multiple criteria like fiscal years, agencies, activity codes, and keywords.get_project_detailsGet comprehensive details about a specific project by project number or application ID.search_recent_awardsFind recently awarded projects within a specified number of days.search_by_investigatorSearch for all projects by a specific principal investigator.get_spending_categoriesGet information about NIH spending categories.Configuration
{"mcpServers": {"nih-reporter": {"command": "docker", "args": ["run", "-i", "--rm", "nih-reporter-mcp"]}}}