北欧化工股份有限公司的WEBMCP服务器
这是一个实验项目,正在进行中。它是一个自定义的MCP(模型上下文协议)服务器,在本地运行,并使Claude Desktop等工具能够搜索公众 北极光 -加拿大的研究数据存储库-直接来自对话。
备注:此MCP服务器是在Claude的帮助下为Python部分构建的。
Screenshot of query and results Screenshot of asking for more info about a dataset Screenshot of querying the data itself
它的作用
此连接器允许:
- 搜索加拿大机构的研究数据集
- 按特定机构筛选结果(支持70多家加拿大机构)
- 按地理覆盖范围(国家、省/州、数据所在城市)过滤
- 返回带有标题、描述、DOI链接和作者的格式化结果
- 访问已发布和未发布的数据集(仅使用API密钥和访问权限未发布)
- 在询问有关特定数据集的更多信息时检索数据集元数据
- 列出数据集中具有过滤和分页功能的文件
- 直接在聊天中检索和查看基于文本的数据集文件(低于5MB,可配置行限制)
- 搜索中支持布尔运算符(AND/OR/NOT),不区分大小写
查询示例
- “搜索北欧蜜蜂授粉数据集”
- “使用我的Borealis搜索工具从UofT找到关于蜜蜂的数据集”
- “向我展示UBC过去5年关于林业的数据集”
- “查找萨斯喀彻温省医疗保健数据集”
- “告诉我更多关于SynPAIN数据集的信息”
- “此数据集中有哪些文件?”
- “我们可以一起看自述文件吗?”
先决条件
- Claude Desktop(说明中以Claude Desktop为例)
- Python 3.7+
- Borealis帐户和API密钥(可选-公共搜索无需身份验证即可工作)
安装
1.安装所需的依赖项
pip install mcp httpx python-docxpython-docx Word文档需要(.docx)提取。如果跳过它,服务器仍将工作-- .docx 文件将返回一个下载链接,其中包含安装库的说明。
2.克隆此存储库
git clone https://github.com/jesswhyte/borealis_dataverse_mcp.git
cd borealis_dataverse_mcp3.使服务器可执行
chmod +x borealis_server.py4.获取Borealis API密钥(可选)
- 首选https://borealisdata.ca
- 登录或创建帐户
- 导航到您的帐户设置
- 生成API令牌
- 复制令牌(格式:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
5.配置克劳德桌面
编辑您的Claude Desktop配置文件,例如,如果您使用的是Mac:
nano ~/Library/Application\ Support/Claude/claude_desktop_config.json添加以下配置(请注意,您需要更改borealis_server.py的路径并编辑API密钥):
{
"mcpServers": {
"borealis-dataverse": {
"command": "python3",
"args": [
"/absolute/path/to/borealis_server.py"
],
"env": {
"BOREALIS_API_KEY": "your-api-key-here"
}
}
}
}重要:
- 替换
/absolute/path/to/borealis_server.py包含克隆存储库的完整路径 - 替换
your-api-key-here使用您实际的Borealis API密钥 - 如果没有API密钥,请省略
env完全部分-公开搜索仍然有效
6.重新启动克劳德桌面
- 完全退出克劳德桌面(⌘+Q)
- 重新打开克劳德桌面
7.验证安装
检查日志以确认服务器已成功启动:
cat ~/Library/Logs/Claude/mcp*.log | grep borealis您应该看到指示服务器已启动并连接的消息。
8.测试它
打开A 新对话 在Claude Desktop中尝试:
Search Borealis for datasets about pelagic species from UBC用法
基本搜索
Search Borealis for datasets about [your topic]按机构搜索
Find datasets from [Institution Name] about [topic]支持的机构格式:
- 全名:“多伦多大学”、“麦吉尔大学”
- 一些简称:“UBC”、“U of T”
- 常见缩写:“UAlberta”、“UWaterloo”
按地理覆盖范围搜索
Find datasets about [city/province/country]注意:地理过滤器指示数据所在的地区 *关于* (例如,“关于哈利法克斯的数据集”),而不是研究人员所在的位置。
获取更多信息
查看搜索结果后,您可以要求提供详细的元数据:
Tell me more about the [dataset name]这将检索元数据,包括描述、所有具有从属关系的作者、关键字、许可证详细信息和文件信息。
选项
该工具支持:
- 结果数量:在提示中请求更多或更少的结果(最多100个)
- 排序:按相关性(默认)、日期(最新日期在前)或名称(按字母顺序)排序
- 类型筛选:按数据集、数据宇宙或文件筛选
- 组合过滤器:在单个查询中混合大学、地理和关键字过滤器
支持机构
包括70多家加拿大机构的映射。看 borealis_server.py 查看完整列表。
可用工具
MCP服务器有四个工具:
1.搜索_数据集
搜索数据集。支持布尔运算符(AND/OR/NOT)——不区分大小写,自动规范化。
2.获取_数据_元数据
检索特定数据集的元数据
3.列表_数据_文件
列出特定数据集中支持以下功能的所有文件:
- 分页(限制和偏移参数)
- 文件类型筛选(按扩展名或文件名搜索)
- 文件元数据(大小、类型、访问限制)
- MD5校验和用于验证
- 用于检索的文件ID
4.get_dataset_file
通过智能处理下载和检索文件内容:
- 直接在聊天中显示的基于文本的文件(CSV、TXT、DAT、R、Python等)
- Word文档(
.docx)以纯文本形式提取,保留标题结构(需要python-docx) - 聊天显示的最大文件大小为5MB
- 可配置的线路限制(
max_lines,默认值为100,最大值为2000);当被截断时,响应会解释限制并提供用更高的值重新获取 - 通过
doi在截断消息中包含直接下载链接 - PDF返回直接下载URL和Claude Desktop拖放提示
- 其他二进制文件返回直接下载URL
- 文件格式检测和验证
建筑
组件
- 语言:Python 3
- MCP-SDK:Anthropic的官方Python MCP库
- HTTP库:用于异步API调用的httpx
- 配置:环境变量和JSON配置文件
运作原理
- 接收用户的搜索或元数据请求
- MCP服务器将机构名称转换为数据域标识符并格式化查询
- 服务器使用适当的过滤器查询Borealis API
- 结果被解析和格式化
- 返回带有DOI链接和元数据的结构化结果
故障排除
服务器未连接
等一下,或者重新启动克劳德 有时MCP服务器启动速度不够快,请尝试重新启动Claude,并在再次尝试之前给它一秒钟的时间。
检查日志: 例如。..
cat ~/Library/Logs/Claude/mcp*.log | tail -50常见问题:
- 验证配置中的文件路径是否正确且绝对
- 确保Python文件可执行(
chmod +x borealis_server.py) - 检查Python 3是否可用:
which python3
API身份验证错误
如果身份验证失败,服务器会自动回退到公共搜索。要验证您的API密钥:
curl -H "X-Dataverse-key: YOUR_KEY" "https://borealisdata.ca/api/search?q=test"工具未出现
- 确保您启动了 新对话 重新启动Claude Desktop后
- MCP工具仅加载到服务器连接后创建的对话中
- 检查服务器在Claude Desktop中是否显示为已连接
发展
扩展服务器
要添加其他工具,请执行以下操作:
- 将工具定义添加到
list_tools() - 实现处理函数
- 将处理程序添加到
call_tool()
有关可用终点,请参阅Borealis API文档:https://borealisdata.ca/guides/en/latest/api/
测试
直接测试服务器:
cd /path/to/borealis-mcp-server
python3 borealis_server.py服务器应启动并等待无错误的输入。
技术说明
- 服务器对非阻塞API调用使用async/await
- 身份验证是可选的;公共搜索在没有API密钥的情况下工作
- 机构名称匹配不区分大小写
- 这
subtree参数过滤特定数据的结果 - 地理过滤器使用
fq(过滤查询)参数 - 每次请求的结果限制为100(Borealis API限制)
- 元数据以JSON-LD格式检索并解析以供显示
- 它使用MCP的stdio传输,因此它通过标准输入和输出进行通信,而不是使用HTTP。它必须由兼容MCP的主机(例如Claude Desktop)启动,并且不能作为HTTP服务器运行,因此无法使用uvicorn启动或在浏览器中打开。
已知限制
- 地理过滤器指示数据集主题,而不是研究人员位置
- 尚未实施的区域分组(例如,跨多个机构的“多伦多研究”)
- 一些MCP服务器启动时间问题可能需要重新启动Claude Desktop
未来改进
潜在的改进领域:
- 代码重构(将其拆分为配置、工具)。它有点笨重。
- 区域机构分组(例如,所有多伦多机构)
- 更广泛的文件下载功能
- 更好的错误处理和用户反馈
- 扩展的地理地图
- 日期范围过滤
- 可以添加一个基于HTTP的MCP接口,使其与OpenAI风格的连接器兼容。
许可证
GPLv3
致谢
支持
关于以下问题:
- 此MCP服务器:在此存储库中打开一个问题
- Borealis API:参观https://borealisdata.ca/guides/
- 克劳德桌面版:联系Anthropic支持
- MCP协议:参见https://modelcontextprotocol.io/
______________________________________________________________________
