Skip to main content

A MCP server for Biomart

Project description

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
  • $...$

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mseep_biomart_mcp-0.1.0.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mseep_biomart_mcp-0.1.0-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

File details

Details for the file mseep_biomart_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: mseep_biomart_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for mseep_biomart_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6ce01547c992e06f389a7455599ba13a2ec92ea36a3349c9f17ceb10b13389c6
MD5 53a61533555682cd6571531cb1ecd8aa
BLAKE2b-256 ef2dd494b815ed6d0b705bc1c712177014923de583b2a8e04a51e5abd6fdd155

See more details on using hashes here.

File details

Details for the file mseep_biomart_mcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mseep_biomart_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e4e626d8ebb2c648a5b5e583a8284b34436b6269ac8ec5f77fa7990273ff9f74
MD5 f4f635426c241f7c9aa6223a10012041
BLAKE2b-256 ae016c9d6e0edfc79cb6a8afb3f72a6adfd9346a6531d67d1d5f68c45c2591f5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page