这是一个用于与NCBI数据库交互的Model Context Protocol的Python实现。
pip install -r requirements.txt
.env文件并添加您的NCBI API密钥:
NCBI_API_KEY=your_api_key_here
NCBI_EMAIL=your_email@example.com
python ncbi_mcp.py
一旦MCP服务器运行起来,您就可以通过Cursor/Claude中的自然语言与其进行交互。
您可以使用自然语言来执行搜索并检索信息:
tools/call
{
"name": "nlp-query",
"arguments": {
"query": "查找关于BRCA1的研究文章"
}
}
或者更简单地,直接使用查询:
@ncbi-mcp 查找关于BRCA1的研究文章
这里有一些可以尝试的自然语言查询示例:
基因功能信息:
@ncbi-mcp 请总结TNF-alpha的功能
基因组大小和统计信息:
@ncbi-mcp 酵母菌Saccharomyces cerevisiae的基因组有多大?
组装统计信息:
@ncbi-mcp 最新的大肠杆菌基因组报告的L50和N50统计数据是什么?
数据集数量:
@ncbi-mcp 在生物样本数据库中,b16f10小鼠黑色素瘤细胞有多少可用的数据集?
科学文章搜索:
@ncbi-mcp 查找最新的关于COVID-19疫苗的研究
获取基因信息:
@ncbi-mcp 告诉我关于BRCA1基因的信息
获取基因组信息:
@ncbi-mcp 获取人类基因组信息
要使用各种查询测试MCP服务器,您可以使用包含的测试文件:
# 测试自然语言查询功能(默认)
.\run_test.bat
# 测试所有工具
.\run_test.bat all
# 测试特定测试文件
.\run_test.bat test_all_tools.jsonl
# 测试高级工具
.\run_test.bat test_high_level_tools.jsonl
测试脚本会:
这种方法被采用是因为MCP服务器设计为作为服务持续运行。对于手动测试且不自动终止,您可以使用:
# 使用任何测试文件手动运行
type test_nlp_query.jsonl | python ncbi_mcp.py
测试文件包含模拟Cursor/Claude如何与MCP服务器交互的示例JSON-RPC请求。
NCBI MCP提供了既能理解自然语言的高级工具,也有用于直接数据库交互的低级工具。
对于大多数生物学查询,从nlp-query开始 —— 它是最智能的工具,能够处理复杂的问题,并自动路由到适当的专用工具。
常见研究工作流程:
基因分析工作流程:
nlp-query回答一般基因问题summarize-gene获取全面的基因信息get_gene_info获取详细的结构化数据ncbi-search + ncbi-fetch进行特定数据库查询基因组分析工作流程:
genome-stats获取有机体基因组统计信息get_genome_info获取详细的基因组元数据count-datasets探索可用的基因组组装文献研究工作流程:
nlp-query进行自然语言文献搜索ncbi-search并设置数据库="pubmed"进行精确搜索ncbi-fetch获取完整的出版物详情数据集发现工作流程:
count-datasets评估数据可用性nlp-query通过自然语言探索数据集ncbi-search进行系统性的数据库探索E-utilities工作流程(高级):
ncbi-info发现可用的数据库ncbi-global-query查看哪些数据库包含您的搜索词ncbi-search在目标数据库中找到特定的UIDncbi-summary获取记录概述信息ncbi-fetch检索完整记录ncbi-link在数据库之间查找相关记录跨数据库分析工作流程:
ncbi-search查找感兴趣的基因ncbi-link查找相关的蛋白质、结构或文献ncbi-summary获取相关记录的元数据ncbi-fetch检索详细信息高级工具(推荐给大多数用户):
nlp-query:用于一般的生物学问题、复杂的查询以及当您不确定使用哪个工具时summarize-gene:用于全面的基因分析和理解基因功能genome-stats:用于基因组大小、组装质量及有机体比较count-datasets:用于研究规划和数据可用性评估get_gene_info:用于详细的、结构化的基因信息get_genome_info:用于详细的、结构化的基因组信息低级E-utilities工具(适用于高级用户):
ncbi-search (ESearch):用于具有特定过滤器、布尔运算符和字段限定符的精确数据库搜索ncbi-fetch (EFetch):在搜索后检索完整记录,支持多种格式(GenBank、FASTA、XML)ncbi-summary (ESummary):用于获取文档摘要而不需检索完整记录ncbi-link (ELink):用于在数据库之间查找相关记录(例如,基因到蛋白质,蛋白质到结构)ncbi-info (EInfo):用于发现可用的数据库及其能力ncbi-global-query (EGQuery):用于同时搜索所有数据库ncbi-spell (ESpell):用于搜索词的拼写建议ncbi-citation-match (ECitMatch):用于根据引文信息查找PMID了解NCBI数据库:
常见的生物学术语:
搜索策略:
tools/call
{
"name": "nlp-query",
"arguments": {
"query": "请总结TNF-alpha的功能"
}
}
tools/call
{
"name": "summarize-gene",
"arguments": {
"gene_name": "BRCA1"
}
}
tools/call
{
"name": "genome-stats",
"arguments": {
"organism": "Escherichia coli"
}
}
tools/call
{
"name": "count-datasets",
"arguments": {
"database": "biosample",
"query": "mouse melanoma b16f10"
}
}
tools/call
{
"name": "ncbi-search",
"arguments": {
"database": "pubmed",
"term": "BRCA1",
"filters": {
"organism": "Homo sapiens",
"date_range": {
"start": "2020"
}
}
}
}
tools/call
{
"name": "ncbi-fetch",
"arguments": {
"database": "gene",
"ids": ["70"],
"rettype": "gb"
}
}
tools/call
{
"name": "get_gene_info",
"arguments": {
"gene_id": "672"
}
}
tools/call
{
"name": "get_genome_info",
"arguments": {
"organism": "Homo sapiens",
"reference": true
}
}
Apache-2.0