Skip to main content

Biomart MCP

A MCP server to interface with Biomart

Model Context Protocol (MCP) is an open protocol that standardizes how applications provide context to LLMs developed by Anthropic. Here we use the MCP python-sdk to create a MCP server that interfaces with Biomart via the pybiomart package.

Demo showing biomart-mcp in action

There is a short demo video showing the MCP server in action on Claude Desktop.

Installation

Clone the repository

git clone https://github.com/jzinno/biomart-mcp.git
cd biomart-mcp

Claude Desktop

uv run --with mcp[cli] mcp install --with pybiomart biomart-mcp.py

Cursor

Via Cusror's agent mode, other models can take advantage of MCP servers as well, such as those form OpenAI or DeepSeek. Click the cursor setting cogwheel and naviagate to MCP and either add the MCP server to the global config or add it to the a project scope by adding .cursor/mcp.json to the project.

Example .cursor/mcp.json:

{
    "mcpServers": {
        "Biomart": {
            "command": "uv",
            "args": [
                "run",
                "--with",
                "mcp[cli]",
                "--with",
                "pybiomart",
                "mcp",
                "run",
                "/your/path/to/biomart-mcp.py"
            ]
        }
    }
}

Glama

Biomart MCP server

Development

# Create a virtual environment
uv venv

# MacOS/Linux
source .venv/bin/activate

# Windows
.venv\Scripts\activate

uv sync #or uv add mcp[cli] pybiomart

# Run the server in dev mode
mcp dev biomart-mcp.py

Features

Biomart-MCP provides several tools to interact with Biomart databases:

  • Mart and Dataset Discovery: List available marts and datasets to explore the Biomart database structure
  • Attribute and Filter Exploration: View common or all available attributes and filters for specific datasets
  • Data Retrieval: Query Biomart with specific attributes and filters to get biological data
  • ID Translation: Convert between different biological identifiers (e.g., gene symbols to Ensembl IDs)

Contributing

Pull requests are welcome! Some small notes on development:

  • We are only using @mcp.tool() here by design, this is to maximize compatibility with clients that support MCP as seen in the docs.
  • We are using @lru_cache to cache results of functions that are computationally expensive or make external API calls.
  • We need to be mindful to not blow up the context window of the model, for example you'll see df.to_csv(index=False).replace("\r", "") in many places. This csv style return is much more token efficient than something like df.to_string() where the majority of the tokens are whitespace. Also be mindful of the fact that pulling all genes from a chromosome or similar large request will also be too large for the context window.

Potential Future Features

There of course many more features that could be added, some maybe beyond the scope of the name biomart-mcp. Here are some ideas:

  • Add webscraping for resource sites with bs4, for example we got the Ensembl gene ID for NOTCH1 then maybe in some cases it would be usful to grap the collated Comments and Description Text from UniProtKB section from it's page on UCSC
  • $...$

Metadata

Release files for orange-biomart-mcp 0.1.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 orange-biomart-mcp 0.1.0
File Size Uploaded
orange_biomart_mcp-0.1.0.tar.gz 4.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for orange-biomart-mcp 0.1.0
File Interpreter ABI Platform
orange_biomart_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 7.9 kB

Release files / orange_biomart_mcp-0.1.0.tar.gz

Download URL orange_biomart_mcp-0.1.0.tar.gz
Size 4.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f6f8d477d1dd82d48f64325fa6ce5a7270847f4aee713012a68f0266ffa61908
BLAKE2b-256 checksum
How to use checksums
c594ee6b7a865c4ffd5a0dfb97e37c10f9b5b9f9ca3893324e03732d51b8fc8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.12

Release files / orange_biomart_mcp-0.1.0-py3-none-any.whl

Download URL orange_biomart_mcp-0.1.0-py3-none-any.whl
Size 3.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
729609be62e5cf6fe0ac536761448e01fca937bd4f9cb98c122ac925ffdbf44e
BLAKE2b-256 checksum
How to use checksums
9965bfb2e552fbede10463ac0ddf18f5145fb43e09712eac5f0e359c5872741c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.12

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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