Skip to main content

ImmPort MCP Server

An MCP server for ImmPort, the NIAID immunology data repository. It lets AI assistants such as Claude search ImmPort studies and subjects, read study data and assay results, look up controlled vocabularies and the data model, and find study files.

Using claude.ai? You don't need to install anything. Add the hosted connector https://mcp.immport.org in claude.ai (Settings → Connectors) and sign in with your ImmPort account.

This package is for running the server yourself, on your own computer: in Claude Desktop, Claude Code, or any other MCP client that starts servers from the command line.

1. Get an ImmPort API key

  1. Sign in at https://www.immport.org. Registration is free.
  2. Open https://www.immport.org/auth/api/keys and create a key.
  3. Download the JSON and copy the value of api_key.

Keys are valid for 30 days. When a key expires, create a new one and update your configuration. Searching and controlled-vocabulary lookups work without a key; study data, assay results and files need one.

2. Install

You need uv (recommended) or Python 3.11+.

uvx immport-mcp            # runs the latest version, no separate install step
# or
pip install immport-mcp    # then run: immport-mcp

The server talks to its client over stdio, so you normally don't run it yourself. Your MCP client starts it.

3. Connect your client

Claude Code

claude mcp add immport -e IMMPORT_API_KEY=<your key> -- uvx immport-mcp

Claude Desktop: add this to claude_desktop_config.json (Settings → Developer → Edit Config), then restart Claude Desktop:

{
  "mcpServers": {
    "immport": {
      "command": "uvx",
      "args": ["immport-mcp"],
      "env": { "IMMPORT_API_KEY": "<your key>" }
    }
  }
}

Other MCP clients: configure a stdio server with the command uvx immport-mcp and the environment variable IMMPORT_API_KEY.

What you can ask

  • "Find influenza vaccine studies in older adults and compare their size and available assays."
  • "Compare SDY180, SDY212 and SDY269: arms, demographics and which assay data each has."
  • "When was SDY180 released, and what changed in its latest update?"
  • "I downloaded SDY269's Tab.zip. Which tables do I join for each subject's arm, age and HAI titers? Write the SQL."
  • "List the Tab.zip and MySQL.zip files for SDY180."

Tools

Tool What it does Needs API key
search_studies Search studies by condition, assay, species, sponsor and more No
search_subjects Search subjects across studies (demographics, arms, exposures) No
lookup_controlled_vocabulary Valid values for filters (conditions, assay types, …) No
get_data_model Tables of the ImmPort database: columns, keys, joins No
get_study_data Any study sub-resource (summary, arms, demographics, …) for up to 20 studies at once Yes
get_study_data_availability Record counts per data category, to see what a study contains Yes
get_assay_results Assay results (ELISA, HAI, flow cytometry, …) Yes
get_study_files List a study's files, stream text files, or get download links Yes
get_release_notes Data releases and a study's release history Yes

Resources: immport://data-model, immport://query-tips, immport://search-fields, immport://assay-results-reference, immport://api-schema.

Prompts: guided workflows to discover studies for a topic, analyse one study in depth, compare immune responses across studies, build a cross-study cohort, and find and download files.

Configuration

Set these as environment variables, or in a .env file in the directory the server is started from.

Variable Default Meaning
IMMPORT_API_KEY (none) Your ImmPort API key (see above)
IMMPORT_METRICS_ENABLED true Send usage metrics (see below). false sends nothing
IMMPORT_BASE_URL https://immport.org/data/query ImmPort Data Query API
RESPONSE_CACHE_TTL 300 Seconds to cache API responses (0 turns caching off)
MCP_LOG_LEVEL WARNING Log level (DEBUG, INFO, WARNING, ERROR)

Usage metrics

To understand how ImmPort data is used, the server sends ImmPort one usage record for each tool call. The record holds the tool name, its parameters (e.g. study accessions or search terms), and your ImmPort username. It's sent with your API key, the same way ImmPort's own website and API record usage. No other data from your computer or conversation is sent.

To turn it off, set IMMPORT_METRICS_ENABLED=false.

Support

This repository is published from ImmPort's internal repository on each release; see CONTRIBUTING.md.

Metadata

Release files for immport-mcp 1.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for immport-mcp 1.4.0
File Size Uploaded Provenance Actions
immport_mcp-1.4.0.tar.gz 54.6 kB With provenance Details for immport_mcp-1.4.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for immport-mcp 1.4.0
File Interpreter ABI Platform Actions
immport_mcp-1.4.0-py3-none-any.whl Python 3 none any Details for immport_mcp-1.4.0-py3-none-any.whl

Total release size: 117.1 kB

Release files / immport_mcp-1.4.0.tar.gz

Download URL immport_mcp-1.4.0.tar.gz
Size 54.6 kB
Tags Source
SHA-256 checksum
How to use checksums
0b86a80157ddc844578eb806e84b49195fea5e8cf31f35fc4978fd6065651ba2
BLAKE2b-256 checksum
How to use checksums
b458ee5725aa01894158f78925d0c0071251d21e63b8363436bdaddb89617fe0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

Release files / immport_mcp-1.4.0-py3-none-any.whl

Download URL immport_mcp-1.4.0-py3-none-any.whl
Size 62.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bb910713a230cd92f3a622db0528b18c983f7aea5ed41dacf971d294226bd503
BLAKE2b-256 checksum
How to use checksums
02bd937ef2ba2a2d2e5b7d8056044ddb525c36546f1874099539b74da6e3cc78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

Security for immport-mcp 1.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for immport_mcp-1.4.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.4.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page