README Documentation
NIH RePORTER MCP
A Model Context Protocol (MCP) server for chatting with NIH RePORTER. Search for NIH-funded research projects and publications in a conversational manner. Accompanying blog post here.
Features
- Search NIH-funded research projects with various criteria:
- Fiscal years
- Principal Investigator names
- Organization details (name, state, city, type, department)
- Funding amounts
- COVID-19 response status
- Funding mechanism
- Institute/Center codes
- RCDC terms
- Date ranges
- Search publications associated with NIH projects
- Combined search functionality for both projects and publications
- Detailed project and publication information including abstracts
- Configurable result limits
Prerequisites
- Python 3.12 or higher
- UV package manager (recommended for faster dependency installation)
Installation
- Clone the repository:
git clone <repository-url>
cd mcp-nih-reporter
- Create and activate a virtual environment:
python -m venv .venv
source .venv/bin/activate # On Windows, use `.venv\Scripts\activate`
- Install dependencies using UV:
uv pip install -e .
Usage
This MCP server provides access to the NIH RePORTER API through several tools:
search_projects
: Search for NIH-funded research projectssearch_publications
: Search for publications associated with NIH projectssearch_combined
: Combined search for both projects and publicationstest_connection
: Test the API connection
You can use this MCP with any MCP-compatible client, such as:
- Claude Desktop
- Cursor
- Other MCP-enabled tools
Example claude_desktop_config.json
{
"mcpServers": {
"nih-reporter": {
"command": "<fully qualified path to>/uv",
"args": [
"run",
"--with",
"mcp[cli]",
"mcp",
"run",
"<fully qualified path to>/mcp-nih-reporter/mcp-nih-reporter.py"
]
}
}
}
The search results will be returned in a structured format containing project details including:
- Project title and abstract
- Principal Investigator information
- Organization details
- Funding information
- Project dates and status
Debugging
A log file will be created in the root folder when the MCP attempts to run in a client (e.g. Claude Desktop). Check there if you're having trouble.
Development
The project uses:
httpx
for async HTTP requestsmcp
for the Mission Control Protocol implementationpython-dotenv
for environment variable managementuv
for dependency management
Logging
Logs are written to mcp-nih-reporter.log
in the project root directory. The logging level is set to INFO by default.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Please make sure to update tests as appropriate and follow the existing code style.
License
This project is licensed under the MIT License - see the LICENSE file for details.