使用说明
hgnc.mcp
HGNC(HUGO基因命名委员会)基因命名资源的MCP(模型上下文协议)服务器。
概述
这个R包提供了访问HGNC基因命名数据的工具,包括搜索、解析和验证基因符号的功能。它还包括一个MCP(模型上下文协议)服务器,该服务器将这些工具暴露给LLM副驾驶和其他MCP兼容客户端。
安装
从GitHub安装
# Install the latest version from GitHub
remotes::install_github("armish/hgnc.mcp")
从源代码安装
如果您已在本地克隆了存储库:
# First, generate documentation (required before installation)
source("generate-docs.R")
# Then install the package
devtools::install(".")
或者,您可以手动生成文档:
roxygen2::roxygenise()
devtools::install(".")
数据管理
该软件包使用智能缓存来管理HGNC完整数据集:
- 首次使用:从官方HGNC源下载数据并在本地缓存
- 后续用途:从缓存加载以实现快速访问
- 更新:自动检查缓存是否过时(默认值:30天),并在需要时刷新
数据函数
# Load HGNC data (downloads and caches on first use)
hgnc <- load_hgnc_data()
# Check cache status
get_hgnc_cache_info()
# Force refresh the cache
hgnc <- load_hgnc_data(force = TRUE)
# Or explicitly download
download_hgnc_data(force = TRUE)
# Clear cache
clear_hgnc_cache()
# Check if cache is fresh (default: 30 days)
is_hgnc_cache_fresh()
is_hgnc_cache_fresh(max_age_days = 7)
缓存位置
缓存存储在平台适当的位置:
- Linux:
~/.cache/hgnc.mcp/ - macOS:
~/Library/Caches/hgnc.mcp/ - 视窗:
%LOCALAPPDATA%/hgnc.mcp/Cache/
数据源
HGNC数据来源于: https://storage.googleapis.com/public-download-files/hgnc/tsv/tsv/hgnc_complete_set.txt
特性
- 具有自动更新功能的智能本地缓存
- 跨平台缓存目录管理
- 可配置缓存新鲜度(默认值:30天)
- 缓存元数据跟踪(下载时间、文件大小、源URL)
- 带速率限制和缓存的HGNC REST API客户端
- 基因符号搜索、解析和验证工具
- 基因列表的批量操作
- 基因组和家族查询
- 更改更新符号的跟踪
- MCP服务器,用于与LLM副驾驶和AI工具集成
MCP服务器
该软件包包括一个模型上下文协议(MCP)服务器,该服务器向AI助手、副驾驶和其他MCP兼容客户端公开HGNC命名服务。服务器提供三种类型的MCP原语:
- 工具:用于搜索、规范化和验证等操作的API端点
- 资源:用于上下文注入的只读数据(基因卡、组信息、数据集元数据)
- 提示词:指导人工智能助手完成多步骤命名任务的工作流模板
这允许LLM直接访问HGNC服务进行基因名称解析、验证、合规性检查等。
启动MCP服务器
使用R:
# Load the package
library(hgnc.mcp)
# Check dependencies
check_mcp_dependencies()
# Start with stdio transport (recommended for desktop clients like Claude Desktop)
start_hgnc_mcp_server(transport = "stdio")
# Or start HTTP server on default port 8080 (for web-based or remote clients)
start_hgnc_mcp_server(transport = "http")
# Customize HTTP server configuration
start_hgnc_mcp_server(
transport = "http",
port = 9090,
host = "0.0.0.0",
swagger = TRUE
)
使用独立脚本:
# Start with stdio transport (for desktop clients)
Rscript inst/scripts/run_server.R --stdio
# Start HTTP server (default behavior)
Rscript inst/scripts/run_server.R
# Custom port for HTTP mode
Rscript inst/scripts/run_server.R --port 9090
# Update cache before starting
Rscript inst/scripts/run_server.R --update-cache
# Disable Swagger UI (HTTP mode only)
Rscript inst/scripts/run_server.R --no-swagger
# Get help
Rscript inst/scripts/run_server.R --help
MCP客户端配置
克劳德桌面(推荐)
Claude Desktop支持stdio传输,以实现高效的本地通信。配置文件位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
使用本地R安装:
{
"mcpServers": {
"hgnc": {
"command": "Rscript",
"args": ["-e", "hgnc.mcp::start_hgnc_mcp_server(transport='stdio')"],
"env": {
"HGNC_CACHE_DIR": "${HOME}/.cache/hgnc"
}
}
}
}
使用Docker:
{
"mcpServers": {
"hgnc": {
"command": "docker",
"args": ["run", "--rm", "-i", "-v", "hgnc-cache:/home/hgnc/.cache/hgnc", "ghcr.io/armish/hgnc.mcp:latest", "--stdio"]
}
}
}
其他MCP客户端:对于基于HTTP的客户端,使用以下命令启动服务器 transport='http' 并连接到 http://localhost:8080/mcp.
可用的MCP工具
MCP服务器公开了以下工具:
- 信息 -获取HGNC REST API元数据和功能
- 找到 -通过查询符号、别名和名称来搜索基因
- 获取 -按字段值(HGNC ID、符号等)获取完整的基因记录
- resolve_符号 -将基因符号解析为当前批准的HGNC符号
- normalize_list -批量标准化基因符号列表(快速,使用本地缓存)
- 外部参照 -提取交叉引用(Entrez、Ensembl、UniProt、OMIM等)
- group_members -获取特定基因组或家族中的所有基因
- 搜索组 -按关键字搜索基因组
- 变化 -跟踪特定日期以来的命名变化
- validate_panel -根据HGNC政策验证基因板,并提出更换建议
可用MCP资源
资源为上下文注入提供只读数据:
- get_gene_card -格式化基因信息卡(JSON/markdown/text)
- get_group_card -成员的基因组信息
- get_changes_summary -自某一日期以来,术语发生了变化
- 快照 -数据集元数据(静态资源)
可用MCP提示
备注:MCP Prompts目前正在整合中。一旦出现以下情况,提示功能将自动启用
plumber2mcp包NAMESPACE已更新为导出pr_mcp_prompt()提示功能已实现并准备就绪。
提示是指导AI助手完成多步骤HGNC任务的工作流模板:
-
使基因列表正常化 -指导将基因符号标准化为经批准的HGNC命名法。有助于批量符号解析、处理别名/以前的符号,以及可选地获取交叉引用。
-
检查命名是否符合要求 -根据HGNC命名政策验证基因面板。识别未经批准的符号、撤回的基因和重复项,然后提供替换建议和理由。
-
自那以后发生了什么变化 -生成自特定日期以来HGNC命名变化的人类可读摘要。可用于治理、合规性跟踪和监视列表监控。
-
从群体中构建基因集 -通过关键字搜索发现HGNC基因组,并从成员中构建可重用的基因集定义。以多种格式(列表、表格、JSON)提供输出,并带有元数据以实现可重复性。
API文档
当服务器在启用Swagger(默认)的情况下运行时,您可以访问以下位置访问交互式API文档:
http://localhost:8080/__docs__/
这提供了有关每个端点、请求/响应格式的详细信息,并允许您直接从浏览器测试API。
部署
HGNC MCP服务器可以根据您的需要以多种方式部署。
Docker部署
部署服务器最简单的方法是使用Docker。预构建的图像是 公开可用 在GitHub容器注册表上,支持多种架构。
可用图像
- 注册表:
ghcr.io/armish/hgnc.mcp - 平台:
linux/amd64,linux/arm64 - 标签:
latest-主分支最新稳定版本main-主分支机构的最新承诺v*-特定版本标签(例如。,v1.0.0)pr-*-拉取请求构建以进行测试
每次通过GitHub Actions推送到主分支时,图像都会自动构建并发布。
Docker快速入门
# Pull the pre-built image (supports both amd64 and arm64)
docker pull ghcr.io/armish/hgnc.mcp:latest
# For Claude Desktop (stdio mode)
docker run --rm -i \
-v hgnc-cache:/home/hgnc/.cache/hgnc \
ghcr.io/armish/hgnc.mcp:latest --stdio
# For HTTP server mode
docker run -d \
--name hgnc-mcp-server \
-p 8080:8080 \
-v hgnc-cache:/home/hgnc/.cache/hgnc \
ghcr.io/armish/hgnc.mcp:latest
# Access the server (HTTP mode only)
open http://localhost:8080/__docs__/
从源代码构建
# Clone the repository
git clone https://github.com/armish/hgnc.mcp.git
cd hgnc.mcp
# Build the Docker image
docker build -t hgnc-mcp:latest .
# Run in stdio mode (for Claude Desktop)
docker run --rm -i \
-v hgnc-cache:/home/hgnc/.cache/hgnc \
hgnc-mcp:latest --stdio
# Or run in HTTP mode
docker run -d \
--name hgnc-mcp-server \
-p 8080:8080 \
-v hgnc-cache:/home/hgnc/.cache/hgnc \
hgnc-mcp:latest
Docker Compose
要获得更完整的持久存储设置:
# Start the server and supporting services
docker compose up -d
# View logs
docker compose logs -f
# Test the server
docker compose --profile test up hgnc-test-client
# Stop the server
docker compose down
备注:这使用了现代
docker compose命令(Docker Compose V2)。如果您有传统的独立版本,请使用docker-compose(用连字符)代替。
看 示例/docker/README.md 用于高级Docker部署选项,包括:
- 使用Nginx反向代理进行生产部署
- 热重载开发设置
- 资源限制和健康检查
- TLS/HTTPS配置
生产部署
对于生产环境,我们建议:
- 使用Docker -提供的Dockerfile使用多阶段构建,并以非root用户身份运行
- 设置反向代理 -使用Nginx或类似工具进行TLS、速率限制和负载平衡
- 持久缓存 -为HGNC数据缓存装载卷
- 健康监测 -容器包括健康检查;与您的监控系统集成
- 资源限制 -设置适当的CPU和内存限制(建议:2个CPU,4GB RAM)
示例生产docker组合配置:
services:
hgnc-mcp-server:
image: ghcr.io/armish/hgnc.mcp:latest
ports:
- "127.0.0.1:8080:8080" # Only expose to localhost
volumes:
- hgnc-cache:/home/hgnc/.cache/hgnc
restart: unless-stopped
deploy:
resources:
limits:
cpus: '2'
memory: 4G
reservations:
cpus: '0.5'
memory: 1G
healthcheck:
test: ["CMD", "Rscript", "-e", "tryCatch(httr::GET('http://localhost:8080/__docs__/'), error = function(e) quit(status=1))"]
interval: 30s
timeout: 10s
retries: 3
云部署
Docker镜像可以部署到任何支持容器的云平台:
AWS ECS/Fargate
# Tag for AWS ECR
docker tag hgnc-mcp:latest <account-id>.dkr.ecr.<region>.amazonaws.com/hgnc-mcp:latest
# Push to ECR
docker push <account-id>.dkr.ecr.<region>.amazonaws.com/hgnc-mcp:latest
# Deploy using ECS task definition
谷歌云运行
# Tag for Google Container Registry
docker tag hgnc-mcp:latest gcr.io/<project-id>/hgnc-mcp:latest
# Push to GCR
docker push gcr.io/<project-id>/hgnc-mcp:latest
# Deploy to Cloud Run
gcloud run deploy hgnc-mcp \
--image gcr.io/<project-id>/hgnc-mcp:latest \
--port 8080 \
--memory 4Gi \
--cpu 2
Azure容器实例
# Create resource group
az group create --name hgnc-mcp-rg --location eastus
# Deploy container
az container create \
--resource-group hgnc-mcp-rg \
--name hgnc-mcp-server \
--image ghcr.io/armish/hgnc.mcp:latest \
--ports 8080 \
--cpu 2 \
--memory 4
Kubernetes
对于Kubernetes部署,请参阅中的示例清单 examples/kubernetes/ (即将推出)。
地方发展
对于没有Docker的本地开发:
# Clone the repository
git clone https://github.com/armish/hgnc.mcp.git
cd hgnc.mcp
# Install dependencies
R -e "install.packages('remotes'); remotes::install_deps()"
# Install the package
R CMD INSTALL .
# Start the server
Rscript inst/scripts/run_server.R --port 8080
CI/CD集成
该存储库包括GitHub Actions工作流,用于:
- R CMD检查 -跨多个平台的包验证
- 测试覆盖率 -具有覆盖率报告的自动化测试
- Docker构建 -多平台Docker镜像构建(amd64、arm64)
看 .github/workflows/ 用于工作流配置。
要在fork中使用这些工作流,请执行以下操作:
- 在存储库设置中启用GitHub操作
- 添加任何所需的秘密(例如。,
CODECOV_TOKEN) - 按下以触发工作流
配置选项
服务器可以通过命令行参数或环境变量进行配置:
| 选项 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
--port |
MCP_SERVER_PORT |
8080 | 服务器端口 |
--host |
MCP_SERVER_HOST |
0.0.0.0 | 服务器主机 |
--no-swagger |
- | false | 禁用Swagger UI |
--check-cache |
- | false | 启动前检查缓存 |
--update-cache |
- | false | 强制缓存更新 |
| - | HGNC_CACHE_DIR |
平台默认 | 缓存目录 |
环境变量示例:
export HGNC_CACHE_DIR=/data/hgnc
export MCP_SERVER_PORT=9090
Rscript inst/scripts/run_server.R
安全考虑
部署HGNC MCP服务器时:
- 网络接入:默认情况下,服务器绑定到
0.0.0.0(所有接口)。对于生产,绑定到127.0.0.1并使用反向代理 - 速率限制:服务器包括HGNC API调用的内部速率限制,但考虑通过反向代理添加外部速率限制
- 认证:MCP服务器不包括身份验证。如果需要,使用带有身份验证的反向代理
- 传输层安全:在生产环境中始终使用TLS/HTTPS。在反向代理级别进行配置
- 资源限制:设置适当的CPU和内存限制,以防止资源耗尽
- 更新:定期更新Docker镜像以获取安全补丁和HGNC数据更新
监控
监控以下生产部署:
- 健康终点:
GET /__docs__/-如果服务器正常,则返回200 - 集装箱健康状况:已配置Docker/Kubernetes健康检查
- 资源使用:监控CPU和内存使用情况
- 缓存新鲜度:检查
get_hgnc_cache_info()缓存年龄 - 错误率:监视服务器日志中的错误
健康检查脚本示例:
#!/bin/bash
# health_check.sh
if curl -f -s http://localhost:8080/__docs__/ > /dev/null; then
echo "Server is healthy"
exit 0
else
echo "Server is unhealthy"
exit 1
fi
故障排除
常见部署问题:
端口已在使用中:
# Find what's using the port
lsof -i :8080
# Use a different port
docker run -p 9090:8080 hgnc-mcp:latest
内存不足:
# Increase Docker memory limit
docker update --memory="4g" hgnc-mcp-server
缓存未持久化:
# Verify volume exists
docker volume inspect hgnc-cache
# Check mount point
docker inspect hgnc-mcp-server | grep Mounts -A 10
有关更多部署示例和故障排除,请参阅:
用法示例
基本基因查找
library(hgnc.mcp)
# Search for genes
results <- hgnc_find("BRCA")
# Fetch a specific gene
gene <- hgnc_fetch("symbol", "BRCA1")
# Resolve a symbol (handles aliases and previous symbols)
resolution <- hgnc_resolve_symbol("BRCA1", mode = "lenient")
批量操作
# Normalize a list of gene symbols
symbols <- c("BRCA1", "tp53", "EGFR", "OLD_SYMBOL", "invalid")
result <- hgnc_normalize_list(symbols)
# View results
print(result$results)
print(result$summary)
print(result$warnings)
验证
# Validate a gene panel
panel <- c("BRCA1", "BRCA2", "TP53", "ATM", "CHEK2")
validation <- hgnc_validate_panel(panel)
# Check for issues
print(validation$summary)
print(validation$report)
更改跟踪
# Find genes modified in the last 30 days
recent_changes <- hgnc_changes(since = Sys.Date() - 30)
print(recent_changes$summary)
# Track symbol changes since a specific date
symbol_changes <- hgnc_changes(
since = "2024-01-01",
change_type = "symbol"
)
基因组
# Search for gene groups
kinases <- hgnc_search_groups("kinase")
# Get members of a specific group
members <- hgnc_group_members("Protein kinases")
真实世界用例
临床基因组学:面板验证
确保临床基因图谱使用当前HGNC批准的命名法:
# Load a clinical panel from a CSV file
clinical_panel <- read.csv("hereditary_cancer_panel.csv")$gene_symbol
# Validate against HGNC standards
validation <- hgnc_validate_panel(clinical_panel, policy = "HGNC")
# Review any issues
if (validation$summary$status != "PASS") {
cat("Issues found:\n")
print(validation$report)
# Get replacement suggestions
if (!is.null(validation$suggestions)) {
cat("\nSuggested updates:\n")
print(validation$suggestions[, c("input_symbol", "suggested_symbol", "reason")])
}
}
# Generate normalized panel for clinical use
normalized <- hgnc_normalize_list(
clinical_panel,
return_fields = c("symbol", "name", "hgnc_id", "omim_id", "location")
)
# Export for lab reporting system
write.csv(normalized$results, "validated_panel.csv", row.names = FALSE)
研究:交叉研究数据整合
跨多个数据集协调基因符号:
# Combine gene lists from different studies
study1_genes <- read.csv("rnaseq_study1.csv")$gene
study2_genes <- read.csv("microarray_study2.csv")$gene
study3_genes <- read.csv("proteomics_study3.csv")$gene
all_genes <- unique(c(study1_genes, study2_genes, study3_genes))
# Normalize to current HGNC symbols
normalized <- hgnc_normalize_list(
all_genes,
return_fields = c("symbol", "name", "hgnc_id", "entrez_id", "ensembl_gene_id"),
dedupe = TRUE
)
# Map back to original datasets with unified nomenclature
# This eliminates false negatives from symbol inconsistencies
药物开发:靶点验证
建立和维护药物开发的靶基因列表:
# Build a kinase inhibitor target panel
kinase_groups <- hgnc_search_groups("kinase")
all_kinases <- hgnc_group_members("Protein kinases")
# Filter for specific kinase families of interest
tyrosine_kinases <- hgnc_search_groups("tyrosine kinase")
target_kinases <- hgnc_group_members("Receptor tyrosine kinases")
# Get comprehensive cross-references for target validation
targets_with_xrefs <- hgnc_normalize_list(
target_kinases$symbol,
return_fields = c("symbol", "name", "hgnc_id", "entrez_id",
"ensembl_gene_id", "uniprot_id", "omim_id")
)
# Track any nomenclature changes quarterly
quarterly_changes <- hgnc_changes(since = Sys.Date() - 90, change_type = "all")
target_updates <- quarterly_changes$changes[
quarterly_changes$changes$symbol %in% target_kinases$symbol,
]
监管合规:审计追踪
保持法规提交的术语合规性:
# Document panel version with HGNC provenance
create_compliance_report <- function(panel_genes, panel_name) {
# Normalize genes
normalized <- hgnc_normalize_list(
panel_genes,
return_fields = c("symbol", "name", "hgnc_id", "status", "location")
)
# Validate
validation <- hgnc_validate_panel(panel_genes)
# Get cache info for provenance
cache_info <- get_hgnc_cache_info()
# Create report
report <- list(
panel_name = panel_name,
report_date = Sys.Date(),
hgnc_version = cache_info$download_date,
hgnc_source = cache_info$source_url,
total_genes = length(panel_genes),
valid_genes = sum(normalized$results$status == "Approved"),
validation_status = validation$summary$status,
normalized_genes = normalized$results,
validation_report = validation$report,
warnings = normalized$warnings
)
# Save for audit trail
saveRDS(report, paste0(panel_name, "_", Sys.Date(), "_compliance.rds"))
return(report)
}
# Use for regulatory submission
panel <- c("BRCA1", "BRCA2", "TP53", "PTEN", "ATM")
compliance <- create_compliance_report(panel, "BRCA_Panel_v2")
文献挖掘:基因参考文献的标准化
从出版物中提取并标准化基因符号:
# Parse gene symbols from abstract/full text (hypothetical)
extracted_genes <- c("p53", "BRCA-1", "EGF receptor", "HER2", "ERBB2")
# Resolve to standard HGNC symbols
resolved <- lapply(extracted_genes, function(g) {
result <- hgnc_resolve_symbol(g, mode = "lenient")
if (!is.null(result$approved_symbol)) {
data.frame(
original = g,
approved = result$approved_symbol,
confidence = result$confidence
)
}
})
# Combine results
gene_mapping <- do.call(rbind, resolved)
print(gene_mapping)
# Result:
# original approved confidence
# 1 p53 TP53 alias
# 2 BRCA-1 BRCA1 approved
# 3 ERBB2 ERBB2 approved
人工智能辅助分析:与Claude一起使用MCP
在MCP服务器运行的情况下,Claude可以帮助完成基因命名任务:
# Start the MCP server
Rscript -e "library(hgnc.mcp); start_hgnc_mcp_server()"
然后在Claude Desktop(配置了MCP)中:
你“我有一份来自旧微阵列研究的基因列表:BRCA1、p53、EGFR、HER-2、NBS1。您能否将这些标准化为当前的HGNC符号,并检查是否有任何符号已更新?"
克劳德: 使用normalize_list和validate_panel MCP工具分析基因,并提供包含当前符号、任何更改和建议的详细报告。
文档
包装插图中提供了全面的文档:
- hgnc.mcp入门 -安装、基本用法和核心功能
- 临床小组基因列表的标准化 -临床基因组学工作流程的最佳实践
- 运行MCP服务器 -MCP服务器设置、配置和部署
- 与HGNC基因组合作 -从家庭和功能群体构建基因面板
在R中查看小插图:
# List all vignettes
vignette(package = "hgnc.mcp")
# View a specific vignette
vignette("getting-started", package = "hgnc.mcp")
贡献
欢迎投稿!请随时提交问题、功能请求或拉取请求。
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
作者
布伦特·阿曼·阿克索伊(arman@aksoy.org)
