返回市场
全球生物信息设施-MCP服务器

全球生物信息设施-MCP服务器

作者:agentmorris2 星标更新:2025-08-05

项目介绍

GBIF BigQuery MCP 服务器

这是一个模型上下文协议(MCP)服务器,它为AI代理提供特定领域的工具,通过BigQuery查询GBIF(全球生物多样性信息设施)物种出现数据。此MCP服务器负责查询的构建;它依赖于BigQuery MCP服务器来执行查询。

功能概述

此MCP服务器作为AI代理与GBIF之间的桥梁,提供以下三个关键功能:

  • 按分类群和地理位置统计出现次数
  • 检索带有详细信息和坐标的出现记录
  • 列出高级分类群中的物种

该服务器生成优化的BigQuery SQL语句,基于以下知识:

  • GBIF模式和字段名称
  • 常见查询模式和最佳实践
  • 分类过滤
  • 按ISO国家代码进行地理过滤

架构

AI代理 → GBIF MCP服务器 → BigQuery MCP服务器 → Google BigQuery

MCP生成领域特定的SQL,BigQuery MCP执行它,代理获取具有完整GBIF上下文的结果。

预备条件

安装

创建环境

mamba create -n gbif-mcp-server python=3.12 -2
mamba activate gbif-mcp-server

安装依赖

pip install -r requirements.txt

测试安装

python gbif_mcp_server.py

服务器应启动并等待输入(使用Ctrl+C退出)。

配置

配置因主机代理环境而异,但相关的.json配置文件如下所示:

{
  "mcpServers": {
    "gbif-mcp-server": {
      "command": "/path/to/your/gbif-mcp-server/bin/python",
      "args": ["/path/to/your/gbif_mcp_server.py"],
      "env": {}
    },
    "bigquery": {
      "command": "npx",
      "args": ["-y", "@google-cloud/mcp-server-bigquery"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/your/service-account-key.json"
      }
    }
  }
}

使用示例

统计记录

"计算乌干达蚊子的出现次数,包括坐标"

→ 生成SQL使用family = 'Culicidae'country_code = 'UG'require_coordinates = True

获取物种列表

"列出在肯尼亚发现的蝴蝶物种"

→ 生成SQL使用order = 'Lepidoptera'country_code = 'KE'

获取出现记录

"获取来自巴西的最近鸟类观察记录,限制50条记录"

→ 生成SQL使用class = 'Aves'country_code = 'BR'limit = 50

可用工具

count_occurrences_by_taxon

按分类群和地点统计GBIF出现记录。

参数:

  • kingdomphylumclass_nameorderfamilygenusspecies:分类过滤器
  • country_code:两位数的ISO国家代码(例如,'UG','KE')
  • require_coordinates:仅统计具有有效坐标的记录
  • min_yearmax_year:时间过滤器

get_occurrence_records

检索实际出现记录及其详细信息。

参数: 同上,加上:

  • limit:返回的最大记录数(默认100,最大10,000)

get_species_in_taxon

列出高级分类群内的不同物种。

参数: 同计数工具,不包括物种级过滤器

  • limit:返回的最大物种数(默认1,000)

资源

该服务器还提供了参考资源:

  • gbif://schema:GBIF BigQuery模式参考
  • gbif://country-codes:常见的ISO国家代码

示例SQL输出

输入:"计算乌干达蚊子的出现次数,包括坐标"

生成的SQL:

SELECT COUNT(*) as occurrence_count
FROM `bigquery-public-data.gbif.occurrences`
WHERE occurrencestatus = 'PRESENT' 
  AND UPPER(family) = UPPER('Culicidae') 
  AND countrycode = 'UG' 
  AND decimallatitude IS NOT NULL 
  AND decimallongitude IS NOT NULL;

数据来源

此服务器生成查询针对的是GBIF BigQuery数据集,该数据集包含超过20亿条来自全球生物多样性信息设施的物种出现记录。

许可证

MIT许可证