返回市场
生物市场-mcp

生物市场-mcp

作者:jzinno6 星标更新:2025-05-22

项目介绍

Biomart MCP

smithery 徽章 在MseeP上验证

与Biomart交互的MCP服务器

模型上下文协议(Model Context Protocol,简称MCP) 是一个开放协议,标准化了应用程序如何向由 Anthropic 开发的语言模型提供上下文。这里我们使用 MCP Python SDK 创建了一个MCP服务器,该服务器通过 pybiomart 包与Biomart进行交互。

演示Biomart MCP运行的示例

有一个简短的 演示视频,展示了Biomart MCP服务器在Claude Desktop上的运行情况。

安装

通过Smithery安装

要通过 Smithery 自动安装Biomart MCP到Claude Desktop:

npx -y @smithery/cli install @jzinno/biomart-mcp --client claude

克隆仓库

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

通过Cursor的代理模式,其他模型也可以利用MCP服务器,例如来自OpenAI或DeepSeek的模型。点击Cursor设置齿轮图标并导航至MCP,可以将其添加到全局配置中,或者通过在项目中添加.cursor/mcp.json文件将其添加到项目范围。

示例 .cursor/mcp.json

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

Glama

<a href="https://glama.ai/mcp/servers/v5a3mlxviu"> <img width="380" height="200" src="https://gips0.baidu.com/it/u=1459076361,1803534098&fm=3081&app=3081&f=PNG?w=760&h=400" alt="Biomart MCP服务器" /> </a>

开发

# 创建虚拟环境
uv venv

# MacOS/Linux
source .venv/bin/activate

# Windows
.venv\Scripts\activate

uv sync # 或者 uv add mcp[cli] pybiomart

# 在开发模式下运行服务器
mcp dev biomart-mcp.py

功能

Biomart-MCP提供了多个工具来与Biomart数据库交互:

  • Mart和数据集发现:列出可用的Mart和数据集以探索Biomart数据库结构
  • 属性和过滤器探索:查看特定数据集的常用或所有可用属性和过滤器
  • 数据检索:使用特定属性和过滤器查询Biomart以获取生物数据
  • ID转换:在不同的生物标识符之间进行转换(例如,基因符号到Ensembl ID)

贡献

欢迎提交拉取请求!一些关于开发的小提示:

  • 我们仅在这里使用 @mcp.tool(),这是为了最大限度地兼容支持MCP的客户端,如 文档 所示。
  • 我们使用 @lru_cache 来缓存计算成本高或调用外部API的函数的结果。
  • 需要注意不要超出模型的上下文窗口大小,例如你会看到许多地方有 df.to_csv(index=False).replace("\r", "")。这种CSV风格的返回比 df.to_string() 更节省token,因为后者大多数token都是空白字符。同时也要注意,从染色体中提取所有基因或类似的大请求也会超出上下文窗口。

潜在未来功能

当然还有很多可以添加的功能,有些可能超出了名称 biomart-mcp 的范围。这里有一些想法:

  • 添加使用 bs4 进行网页抓取的功能,例如我们得到了NOTCH1的Ensembl基因ID,那么在某些情况下,抓取UniProtKB页面上的“评论和描述文本”部分可能会很有用,可以从 UCSC的页面 获取。
  • $...$