非官方的人类蛋白图谱MCP服务器
一个全面的模型上下文协议(MCP)服务器,用于访问人类蛋白质图谱数据,提供有关蛋白质表达、亚细胞定位、病理学等信息。
概述
人类蛋白质图谱MCP服务器能够无缝访问人类蛋白质图谱中庞大的蛋白质数据库(https://www.proteinatlas.org).此服务器提供以下工具和资源:
- 蛋白质搜索和信息:按名称、基因符号或描述搜索蛋白质
- 组织表达:访问组织特异性表达谱
- 亚细胞定位:检索蛋白质定位数据
- 病理学数据:访问癌症相关蛋白质信息
- 血液和大脑表达:血细胞和脑区的专门表达数据
- 抗体信息:抗体的验证和染色数据
- 批处理:高效查找多种蛋白质
- 高级搜索:具有多个过滤器的复杂查询
特性
核心能力
- 🔍 综合搜索:使用各种标识符和关键字查找蛋白质
- 🧬 多模态数据:访问表达、定位和病理信息
- 🩸 专业地图集:血液图谱和大脑图谱数据集成
- 📊 批处理:高效处理多个蛋白质查询
- 🔬 研究级数据:高质量、同行评审的蛋白质信息
- ⚡ 快速响应:针对快速数据检索进行了优化
可用数据类型
- 蛋白质基本信息
- 基因符号和Ensembl ID - 蛋白质描述和分类 - UniProt交叉引用
- 表达式数据
- 组织特异性RNA表达 - 血细胞表达谱 - 脑区表达数据 - 单细胞表达信息
- 亚细胞定位
- 蛋白质定位模式 - 可靠性得分 - 免疫荧光数据
- 病理信息
- 癌症预后标志物 - 疾病关联 - 治疗目标
- 抗体数据
- 抗体验证信息 - 染色图案 - 可靠性评估
安装
先决条件
- Node.js 18或更高版本
- npm或yarn包管理器
设置
- 克隆或下载服务器代码
- 安装依赖项:
cd proteinatlas-server
npm install- 构建服务器:
npm run build- 服务器现在可以使用了!
用法
命令行
直接运行服务器:
npm start
# or
node build/index.jsMCP客户端集成
添加到MCP客户端配置中:
{
"mcpServers": {
"proteinatlas": {
"command": "node",
"args": ["/path/to/proteinatlas-server/build/index.js"]
}
}
}可用工具
基本搜索和检索
search_proteins
按名称、基因符号或描述搜索人类蛋白质图谱中的蛋白质。
参数:
query(必填):搜索查询(基因名称、蛋白质名称或关键字)format:输出格式(json、tsv)-默认值:jsoncolumns:要包含在结果中的特定列maxResults:最大结果数(1-10000)-默认值:100compress:是否压缩响应-默认值:false
例子:
{
"query": "BRCA1",
"format": "json",
"maxResults": 10
}get_protein_info
通过基因符号获取特定蛋白质的详细信息。
参数:
gene(必填):基因符号(如BRCA1、TP53)format:输出格式(json、tsv、xml、trig)-默认值:json
get_protein_by_ensembl
使用Ensembl基因ID获取蛋白质信息。
参数:
ensemblId(必填):Ensembl基因ID(例如ENSG00000139618)format:输出格式(json、tsv、xml、trig)-默认值:json
表情分析
get_tissue_expression
获取蛋白质的组织特异性表达数据。
参数:
gene(必填):基因符号format:输出格式(json、tsv)-默认值:json
search_by_tissue
寻找在特定组织中高度表达的蛋白质。
参数:
tissue(必填):组织名称(如肝脏、大脑、心脏)expressionLevel:表达式级别过滤器(高、中、低、未检测到)format:输出格式(json、tsv)-默认值:jsonmaxResults:最大结果数(1-10000)-默认值:100
get_blood_expression
获取蛋白质的血细胞表达数据。
get_brain_expression
获取蛋白质的大脑区域表达数据。
亚细胞定位
get_subcellular_location
获取蛋白质的亚细胞定位数据。
search_by_subcellular_location
寻找定位于特定亚细胞区室的蛋白质。
参数:
location(必填):亚细胞位置(如细胞核、线粒体、细胞质)reliability:可靠性过滤器(已批准、增强、支持、不确定)format:输出格式(json、tsv)-默认值:jsonmaxResults:最大结果数(1-10000)-默认值:100
病理学与癌症
get_pathology_data
获取蛋白质的癌症和病理学数据。
search_cancer_markers
寻找与特定癌症或预后价值相关的蛋白质。
参数:
cancer:癌症类型(如癌症、肺癌)prognostic:预测过滤器(有利、不利)format:输出格式(json、tsv)-默认值:jsonmaxResults:最大结果数(1-10000)-默认值:100
高级功能
advanced_search
使用多个过滤器和条件执行高级搜索。
参数:
query:基本搜索查询tissueSpecific:组织特异性表达过滤器subcellularLocation:亚细胞定位滤波器cancerPrognostic:癌症预后过滤器proteinClass:蛋白质类过滤器chromosome:染色体过滤器antibodyReliability:抗体可靠性过滤器format:输出格式(json、tsv)-默认值:jsoncolumns:要包含在结果中的特定列maxResults:最大结果数(1-10000)-默认值:100
batch_protein_lookup
同时查找多种蛋白质。
参数:
genes(必填):基因符号数组(最多100个)format:输出格式(json、tsv)-默认值:jsoncolumns:要包含在结果中的特定列
compare_expression_profiles
比较多种蛋白质之间的表达谱。
参数:
genes(必填):要比较的基因符号数组(2-10)expressionType:表达数据类型(组织、脑、血液、单细胞)-默认值:组织format:输出格式(json、tsv)-默认值:json
可用资源
服务器提供了几个用于直接数据访问的资源模板:
资源模板
hpa://protein/{gene}:基因符号的完整蛋白质图谱数据hpa://ensembl/{ensemblId}:Ensembl基因ID的完整蛋白质图谱数据hpa://tissue/{gene}:基因的组织特异性表达数据hpa://subcellular/{gene}:基因的亚细胞定位信息hpa://pathology/{gene}:基因的癌症和病理学数据hpa://blood/{gene}:基因的血细胞表达数据hpa://brain/{gene}:基因的脑区表达数据hpa://antibody/{gene}:基因的抗体验证和染色信息hpa://search/{query}:与查询匹配的蛋白质的搜索结果
资源访问示例
// Access tissue expression data for BRCA1
const resource = await client.readResource("hpa://tissue/BRCA1");
// Search for insulin-related proteins
const searchResults = await client.readResource("hpa://search/insulin");数据源
此服务器从以下位置访问数据:
- 图谱:主要蛋白质图谱数据库
- 组织图谱:正常组织表达数据
- 血液图谱:血细胞表达谱
- 脑图集:脑区表达数据
- 病理图谱:癌症相关蛋白质数据
- 细胞图谱:单细胞表达信息
利率限制和最佳实践
- 服务器执行适当的速率限制以尊重人类蛋白质图谱API
- 对于批处理操作,考虑将大型请求分解为较小的块
- 尽可能使用特定的列选择来减小响应大小
- 在适当的时候缓存频繁访问的数据
错误处理
服务器提供全面的错误处理:
- 无效参数:清除错误输入的错误消息
- 网络问题:瞬态故障的重试逻辑
- 数据格式错误:巧妙处理意外响应格式
- 速率限制:适当的退避策略
例子
基础蛋白质查找
// Search for BRCA1 protein
const result = await callTool("search_proteins", {
query: "BRCA1",
format: "json",
});组织表达分析
// Get tissue expression for multiple genes
const comparison = await callTool("compare_expression_profiles", {
genes: ["BRCA1", "BRCA2", "TP53"],
expressionType: "tissue",
});癌症研究
// Find breast cancer prognostic markers
const markers = await callTool("search_cancer_markers", {
cancer: "breast cancer",
prognostic: "unfavorable",
maxResults: 50,
});批处理
// Look up multiple proteins at once
const batchResult = await callTool("batch_protein_lookup", {
genes: ["BRCA1", "BRCA2", "TP53", "EGFR", "MYC"],
format: "json",
});发展
从源头构建
# Install dependencies
npm install
# Build the project
npm run build
# Run in development mode
npm run dev测试
# Run the server
npm start
# Test with MCP client or direct stdio communication贡献
欢迎投稿!请确保:
- 代码遵循TypeScript的最佳实践
- 错误处理全面
- 文档已针对新功能进行了更新
- 包括新功能的测试
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
对于问题和疑问:
- 查看人类蛋白质图谱文件:https://www.proteinatlas.org/about/help
- 审查MCP规范:https://modelcontextprotocol.io/
- 通过项目存储库提交问题
致谢
- 人类蛋白质图谱团队提供全面的蛋白质数据库
- 标准化通信框架的模型上下文协议社区
- TypeScript和Node.js开发工具社区
______________________________________________________________________
_该服务器提供对人类蛋白质图谱数据的程序化访问,用于研究和教育目的。在出版物中使用这些数据时,请引用适当的来源。_
引用
如果您在研究或出版物中使用此项目,请按如下方式引用:
author = {Moudather Chelbi},
title = {Human Protein Atlas MCP Server},
year = {2025},
howpublished = {https://github.com/Augmented-Nature/ProteinAtlas-MCP-Server/},
note = {Accessed: 2025-06-29}