geo-mcp

geo-mcp

Enables searching and downloading Gene Expression Omnibus (GEO) data from NCBI, including datasets, series, samples, platforms, and profiles, through natural language queries.

Category
访问服务器

README

Gene Expression Omnibus (GEO) MCP

<div align="center"> <img src="https://www.ncbi.nlm.nih.gov/geo/img/geo_main.gif" alt="GEO Logo" width="200"/> <br/> <em>Gene Expression Omnibus (GEO) - A public functional genomics data repository</em> </div>

PyPI version Python License MCP GEO

Status: Beta. The MCP stdio and HTTP servers are both functional and in day-to-day use. The public tool surface is stable for the 0.1.x line; internal APIs and config defaults may still evolve. Please open an issue if you hit a regression.

A Model Context Protocol (MCP) server for accessing GEO (Gene Expression Omnibus) data through NCBI E-Utils API. The tool will enable you to search for GEO datasets, series, samples, platforms, and profiles for your LLM. Tested with Claude Desktop, chatGPT has no out of the box support for this tool yet. Claude will automatically use the tools if it fits the context.

Quick Install (pip)

install from pip

pip install geo-mcp

install from source

git clone https://github.com/MCPmed/GEOmcp
cd GEOmcp
pip install -e .

Configuration

Run init to create a config file

geo-mcp --init

By default this writes to $XDG_CONFIG_HOME/geomcp/config.json (typically ~/.config/geomcp/config.json). If you already have a legacy ~/.geo-mcp/config.json from an older install, that location is still honored and --init will update it in place so nothing gets orphaned.

The file contains:

{
    "base_url": "https://eutils.ncbi.nlm.nih.gov/entrez/eutils",
    "email": "your_email@example.com",
    "api_key": "YOUR_API_KEY",
    "download_dir": "~/.local/share/geomcp/downloads"
}
  • email is required by NCBI.
  • api_key is optional but recommended for higher rate limits (get one here).

You can also skip the config file entirely and pass values via env vars (GEOMCP_EMAIL, GEOMCP_API_KEY, GEOMCP_BASE_URL, GEOMCP_DOWNLOAD_DIR) or CLI flags (--email, --api-key, --download-dir, ...). Precedence, highest wins: CLI flags → env vars → config.json → built-in defaults.

Running the Server

  • MCP stdio mode:
    geo-mcp
    
  • HTTP mode:
    geo-mcp --http --port 8001
    

Claude Desktop Integration

Common Issue: spawn geo-mcp ENOENT

This error means Claude Desktop cannot find the geo-mcp command. This is usually a PATH issue.

Solution

  1. Find the full path to the executable:

    which geo-mcp
    

    Example output: /Users/youruser/miniforge3/bin/geo-mcp

  2. Update your Claude config: Instead of just "geo-bio-mcp", use the full path:

    {
      "mcpServers": {
        "geo-mcp": {
          "command": "/Users/youruser/miniforge3/bin/geo-mcp",
          "env": {
            "CONFIG_PATH": "/Users/youruser/.geo-mcp/config.json"
          }
        }
      }
    }
    
  3. (Optional) Use a Conda Environment:

    • Activate your conda env and run which geo-mcp to get the correct path.
    • Use that path in your Claude config as above.
  4. Restart Claude Desktop after updating the config.


Troubleshooting

  • If you see command not found: geo-mcp, make sure you installed into the Python environment whose bin directory is on your PATH, or invoke the server with its full path.
  • If the config file is missing, geo-mcp --init will create one. You can also run without a config by setting GEOMCP_EMAIL in the environment.

HTTP API

With the server running via geo-mcp --http (default port 8001), the following endpoints are exposed:

  • GET / — server status
  • GET /health — health check
  • GET /tools — list all registered MCP tools
  • POST /tools/call — execute a tool with arguments
  • GET /events — server-sent events stream of tool calls
  • GET /docs — interactive Swagger UI

Examples

# List available tools
curl http://localhost:8001/tools

# Search GEO Series
curl -X POST http://localhost:8001/tools/call \
  -H "Content-Type: application/json" \
  -d '{
    "name": "search_geo_series",
    "arguments": {"term": "breast cancer", "retmax": 5}
  }'

Available Tools

This MCP server provides access to all major GEO databases through the following tools:

Search Tools

  • search_geo - Universal GEO search across GSE/GSM/GPL/GDS records, with results bucketed by accession type. Pass record_types to filter.

    • Example searches: "breast cancer", "GSE12345", "RNA-seq time course"
  • search_geo_profiles - Search gene expression profiles across different biological contexts

    • Example searches: "cancer", "breast cancer", "p53", "apoptosis"
  • search_geo_datasets - Search curated gene expression datasets

    • Example searches: "diabetes", "Alzheimer's disease", "drug response", "tissue specific"
  • search_geo_series - Search original submitter-supplied gene expression series

    • Example searches: "GSE12345", "microarray", "RNA-seq", "time course"
  • search_geo_samples - Search individual gene expression samples

    • Example searches: "GSM123456", "human", "mouse", "tumor", "normal"
  • search_geo_platforms - Search microarray platform definitions

    • Example searches: "Affymetrix", "Illumina", "Agilent", "GPL96"

Search Parameters

Each tool accepts:

  • term (required): Search term or query string
  • retmax (optional, default: 20): Maximum number of results to return

Example usage

For now just chat with claude desktop and it will use the tools automatically if it fits the context.

User: find a small brain dataset

Assistant: I'll help you find a small brain dataset from the GEO database. Let me search for brain-related datasets with a maximum of one result.

Assistant (system): search_geo_datasets

Assistant: I found a brain-related dataset for you:

  • Dataset: GSE290848
  • Title: Maternal Stress Triggers Early-Life Eczema via Fetal Mast Cell Reprogramming [10x Genomics Multiome ATAC + Gene Expression]
  • Species: Mouse (Mus musculus)
  • Samples: 8
  • Data type: ATAC-seq & gene expression (10x Genomics Multiome)
  • Publication date: 21 Jun 2025

This small dataset explores how prenatal stress affects neuro-immune circuits and mast-cell development.

Would you like me to download this dataset or search for others?


User: download GSE290848

Assistant: I'll download the GSE290848 dataset for you.

Assistant (system): download_geo_data

Assistant: Download complete.

Downloaded files

  • GSE290848_family.soft.gz — series, platform & sample info
  • GSE290848_metadata.xml — detailed study metadata

Location: ~/.local/share/geomcp/downloads/gse/GSE290848
Total size: 0.01 MB

The dataset is ready for analysis. Let me know if you’d like to explore it further.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选