millimap-mcp
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@millimap-mcplist the cell-type annotations in my dataset"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
millimap-mcp
MCP (Model Context Protocol) server that lets Claude Desktop read the active MilliMap session — its dataset, clusters, cell-type annotations, marker genes, regions of interest — and drive analyses inside the viewer from chat.
How it works
┌──────────────────┐ writes ┌──────────────────────────┐
│ MilliMap │ ──────────────▶ │ ~/.millimap/ │
│ (desktop app) │ every 3s │ mcp_session.json │
└──────────────────┘ └──────────────────────────┘
│ reads
▼
┌──────────────────────────┐
┌──────────────────┐ stdio MCP │ millimap-mcp │
│ Claude Desktop │ ◀───────────────▶ │ (this package) │
└──────────────────┘ └──────────────────────────┘MilliMap writes a snapshot of its current session to ~/.millimap/mcp_session.json every few seconds. This MCP server is launched by Claude Desktop as a stdio subprocess; it reads the snapshot and exposes it to Claude as MCP resources and tools.
Related MCP server: BioNext-mcp
Prerequisites
MilliMap installed and runnable — see milliomics/MilliMap.
Claude Desktop — download from anthropic.com.
Python 3.10+ with
pip.
Install — into your existing MilliMap environment
Important: install millimap-mcp into the same Python environment you use to run MilliMap. That way the resulting millimap-mcp script lands in that env's bin/ (or Scripts\ on Windows), and Claude Desktop finds it automatically when you activate the env.
If you set up MilliMap with conda (the recommended path)
# 1. Activate the MilliMap env FIRST — this is the step people miss.
conda activate millimap
# 2. Clone this repo somewhere convenient.
git clone https://github.com/milliomics/millimap-mcp.git
cd millimap-mcp
# 3. Install into the activated env.
pip install -e .If you set up MilliMap with pip (no conda)
Use the same Python you use to launch MilliMap. The safest invocation is to spell out the interpreter explicitly:
git clone https://github.com/milliomics/millimap-mcp.git
cd millimap-mcp
# Replace this with the python you use for MilliMap:
/path/to/your/python -m pip install -e .
# e.g.:
# /usr/local/bin/python3.11 -m pip install -e .
# or:
# /Users/you/venvs/millimap/bin/python -m pip install -e .Verify the install
After install, the millimap-mcp script should be on your PATH (when the env is activated):
which millimap-mcp # macOS / Linux
where millimap-mcp # WindowsYou should see a path under your MilliMap env, e.g.:
conda:
/Users/<you>/anaconda3/envs/millimap/bin/millimap-mcpvenv:
/Users/<you>/venvs/millimap/bin/millimap-mcpWindows conda:
C:\Users\<you>\anaconda3\envs\millimap\Scripts\millimap-mcp.exe
Keep that path handy — you'll paste it into Claude Desktop's config in the next step (or just use the bare name millimap-mcp if Claude Desktop sees the same PATH you do).
Wire it up to Claude Desktop
Open Claude Desktop's config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Create the file if it doesn't exist. Add (merge into any existing mcpServers object):
{
"mcpServers": {
"millimap": {
"command": "millimap-mcp"
}
}
}Use an absolute path if millimap-mcp isn't on Claude Desktop's PATH
Claude Desktop launches subprocesses with its own PATH, which may not include your conda env's bin/. If you get "command not found" / "spawn ENOENT" after restarting Claude, swap the bare command for the absolute path you got from which millimap-mcp above:
{
"mcpServers": {
"millimap": {
"command": "/Users/<you>/anaconda3/envs/millimap/bin/millimap-mcp"
}
}
}On Windows, double-escape backslashes (JSON requires it):
{
"mcpServers": {
"millimap": {
"command": "C:\\Users\\<you>\\anaconda3\\envs\\millimap\\Scripts\\millimap-mcp.exe"
}
}
}Then fully quit + relaunch Claude Desktop (the window-close X is not enough — quit from the menu bar / system tray).
In Claude Desktop's tools menu (plug icon in the message composer) you should now see millimap. Toggle it on.
What Claude can see
Resources (read-only context):
millimap://session— dataset name, cell/gene counts, assay, cluster columnmillimap://clusters— cluster IDs and sizesmillimap://annotations— cluster → cell-type labels set by the scientistmillimap://markers— top marker genes per clustermillimap://rois— regions of interest saved in the sessionmillimap://analysis_cards— workspace result cards (summaries only — useget_analysis_cardfor the full payload)
Read tools (read the snapshot, no side effects):
get_cluster_markers(cluster_id, top_n)— markers for one clustergenes_for_cell_type(cell_type)— "what genes mark T cells?"search_genes(query, limit)— find which cluster a gene markslist_rois()— enumerate saved ROIslist_analysis_cards()— workspace result cards (summaries)get_analysis_card(card_id, max_rows)— full payload of one card including its DataFrame
Write tools (drive MilliMap's analysis library + UI):
run_clustering(resolution, n_neighbors)— re-cluster the datasetfind_markers(groupby, method)— runrank_genes_groupsannotate_cluster(cluster_id, label)— assign a cell-type labelscore_gene_signature(genes, score_name)— score a gene set across cellsapply_qc_filter(min_genes, max_genes, min_counts, max_mito_pct)— QC filterrun_millimap_tool(tool_name, tool_args_json)— escape hatch for any of MilliMap's 30+ analysis tools (DE, GO enrichment, neighborhood enrichment, co-occurrence, Ripley, doublet detection, dotplot/heatmap/violin, etc.)
Write tools require MilliMap to be running with a dataset loaded. They POST to a local HTTP endpoint (127.0.0.1, ephemeral port) served by the viewer; the port is discovered via ~/.millimap/mcp_control.json.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/milliomics/millimap-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server