使用说明
orion mcp:用于orion DB集合的mcp服务器。
orion-mcp 是一个 模型上下文协议(MCP)服务器 这允许您查询 ORION DB 使用LLM在Google BigQuery上收集。它支持OpenAlex、Crossref、ORCID、DataCite等。
这是一个早期的实验性实施,侧重于开放的研究信息。亚伦·泰的 关于LLM与学术MCP服务器结合的潜力的更广泛背景 这是一个有用的总体介绍。
欢迎通过GitHub issues提交意见和反馈。
运作原理
orion-mcp 将ORION DB的模式元数据(列名、类型和描述)加载到LLM上下文中。当您提出问题时,LLM会编写一个BigQuery SQL查询,向您显示它以及它将扫描多少GB的估计值,并在运行之前要求您确认。选择所有列的查询(SELECT *)被封锁。仅命名所需的列可以使查询快速且成本低。结果可以在本地下载和分析。
保留任何大小的查询结果 在本地R会话中 (命名 q1, q2, ...)--只有大小限制的预览会发送到LLM,因此大的结果永远不会溢出对话。然后,LLM可以使用内置工具参考分析完整结果(orion_result_summary, orion_result_count, orion_result_slice)或将其写入文件 orion_export_result --所有这些都不需要重新查询BigQuery,因此后续问题和导出是免费的。每次运行后,实际计费金额都会被报告回来(包括BigQuery从其24小时缓存中免费提供查询的时间)。预览预算默认为~60000个字符(大小适合典型的MCP客户端限制),可以使用 MAX_RESULT_CHARS 环境变量(例如。 -e MAX_RESULT_CHARS=200000).
该工具不向LLM提供者发送原始数据;它只共享SQL查询。MCP服务器在隔离的Docker容器中运行,无法访问您的文件系统。传递到容器的唯一信息是您的Google Cloud凭据,用于通过应用程序默认凭据(ADC)与BigQuery进行身份验证。
您可以在没有Google Cloud帐户的情况下浏览架构元数据。
安装
先决条件: Docker 桌面版, Claude 桌面版, gcloud命令行界面
如果你是谷歌云的新手,你还需要一个 Google帐户和云项目 运行查询。模式浏览在没有模式浏览的情况下也能正常工作。
1.使用Google Cloud进行身份验证
gcloud auth application-default login
这将打开一个浏览器窗口并将凭据保存到 ~/.config/gcloud/你只需要做一次。当MCP服务器启动时,它会请求您的凭据类型支持的最窄访问范围: bigquery.readonly 在可能的情况下(服务帐户),否则标准BigQuery作用域--gcloud用户凭据不支持只读作用域。
无论证书允许什么, 服务器本身强制执行只读SQL:它只执行单个 SELECT 声明。数据修改SQL(INSERT, UPDATE, DELETE, CREATE, DROP,多语句脚本。..)在到达BigQuery之前被拒绝。
编写仍然是可能的,但只能通过两个专用工具,其中目标表是您在对话中确认的显式参数,而不是通过SQL: orion_save_result_to_bq 将已运行的结果上传为表(自由加载作业),以及 orion_query_to_table 将大型查询结果直接写入项目中的表中,而无需下载它们(只收取查询扫描费用)。两者都拒绝触摸现有表,除非您明确要求覆盖它,并且都受您自己的IAM权限的约束。
2.拉取Docker镜像
确保Docker Desktop已打开并正在运行,然后下载服务器映像:
docker pull ghcr.io/subugoe/orion-mcp:latest
3.将服务器添加到Claude Desktop
在文本编辑器中打开Claude Desktop配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLibrary是一个隐藏的文件夹。使用以下命令从终端打开它:open ~/Library/Application\ Support/Claude/claude_desktop_config.json或者在Finder中: Go → 转到文件夹 (
⇧⌘G)并粘贴~/Library/Application Support/Claude/ - Linux:
~/.config/Claude/claude_desktop_config.json
首先创建导出的查询结果将显示在计算机上的文件夹:
mkdir -p ~/Downloads/orion-exports
然后添加 orion-dbs 进入里面 mcpServers。如果文件已经包含其他服务器,请在添加此条目之前在最后一个条目后添加逗号,因为JSON对逗号要求严格。
{
"mcpServers": {
"orion-dbs": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "/Users/YOUR_USERNAME/.config/gcloud:/root/.config/gcloud:ro",
"-v", "/Users/YOUR_USERNAME/Downloads/orion-exports:/data/exports",
"-e", "BQ_BILLING_PROJECT=YOUR_PROJECT_ID",
"ghcr.io/subugoe/orion-mcp:latest"
]
}
}
}
替换:
YOUR_USERNAME--您的macOS/Linux用户名(在Linux上使用/home/YOUR_USERNAME/...)YOUR_PROJECT_ID--您的GCP项目ID,例如。my-project-123456。在 谷歌云控制台 通过单击顶部栏中的项目选择器。
架构浏览(
orion_list_datasets,orion_list_tables,orion_get_db_schema)无需计费项目即可工作。您可以省略BQ_BILLING_PROJECT如果您只想探索模式,请完全使用该行。
BigQuery按扫描的字节计费,而不是按返回的行计费。这 BigQuery沙盒 每月为每个帐户提供1TB的免费查询处理。
出口如何到达您的机器
容器与文件系统隔离。当您要求Claude导出查询结果时,文件将写入 /data/exports 集装箱内;第二 -v 上面的行将该文件夹映射到 ~/Downloads/orion-exports 在您的机器上,导出内容会立即显示在那里。您可以使用任何您喜欢的目录,但如果没有此挂载,当容器停止时,导出的文件将丢失(导出工具和 “检查我的设置” 如果底座丢失,健康检查都会警告您)。
要更改容器内导出路径,请设置 EXPORT_DIR 环境变量(例如。 -e EXPORT_DIR=/tmp/exports).
4.重新启动克劳德桌面
退出并重新打开Claude Desktop。你应该看看 orion dbs 列在下面 设置→ 开发者→ MCP 服务器。如果没有出现,请仔细检查配置文件中的JSON是否缺少逗号或括号不匹配。
用法
用通俗易懂的语言问克劳德:
检查您的设置
- “orion dbs工作吗?检查我的设置。”
这将运行免费的端到端健康检查(架构元数据、凭据、计费项目、BigQuery连接、导出文件夹装载),并引导您修复任何缺失的内容。安装后或查询意外失败时运行一次。
无需Google Cloud帐户
- “ORION DB中有哪些可用的数据集?”
- “显示Crossref工作表的模式。”
- “哪些版本的OpenAlex可用,模式如何比较?”
需要Google Cloud帐户
- “2021年至2025年间,哥廷根大学的研究人员在期刊上发表了多少篇论文?”
- “2023年发表了多少篇开放获取文章,按OA类型细分?”
查询运行后,您可以继续挖掘存储的结果,而无需为另一个查询付费:
- “按年份分解。”
- “只显示2023年的行。”
- “给我列的摘要——有多少缺失值?”
贡献/地方发展
要在本地构建映像而不是从注册表中提取映像,请执行以下操作:
git clone https://github.com/subugoe/orion-mcp
cd orion-mcp
docker build -t orion-mcp_mcp .
然后使用 orion-mcp_mcp 作为Claude Desktop配置中的图像名称。
服务器逻辑存在于 R/functions.R; server.R 处理身份验证并注册MCP工具。在打开pull请求之前,从repo根运行单元测试:
Rscript tests/test-functions.R
在CI中对每个pull请求运行相同的测试,并对映像构建进行门控,因此回归无法到达已发布的映像。它们涵盖了除BigQuery往返本身之外的所有内容,内置的健康检查(“检查我的设置”)在安装时进行验证。
服务器在R中使用 埃尔默 和 mcptools 包装。欢迎通过GitHub issues提交贡献和错误报告。
如果Claude误解了你的问题,产生了意外的结果,或者查询了错误的数据集,请打开一个GitHub问题,描述你的问题和发生了什么。这种反馈与代码贡献一样有价值,因为它有助于改进指导LLM的工具描述。
联系
Najko Jahn(najko.jahn@sub.uni-goettingen.de),哥廷根州立大学图书馆。