使用说明
OpenAIRE MCP服务器
MCP(模型上下文协议)服务器,用于探索OpenAIRE研究图和ScholExplorer引用索引。使像Claude这样的人工智能助手能够发现引文关系,查找相关的研究成果,并检索出版物、数据集和软件的全面元数据。
目录
概述
此MCP服务器为AI助手提供了两个强大的研究发现API:
- 学校探索者:引文索引,包含36亿个学术关系,链接出版物、数据集和软件
- OpenAIRE研究图:全面的元数据聚合器,涵盖数百万项研究成果,包括完整摘要、作者隶属关系、引文指标和资助信息
特性
- 🔗 查找引用特定DOI的所有研究成果(出版物、数据集、软件)
- 📊 从OpenAIRE研究图中检索全面的元数据
- 🤖 与Claude Desktop和其他MCP客户端无缝集成
- 🐳 Docker容器化支持
- 📝 结构化JSON日志记录
- ⚙️ 通过环境变量进行配置(12因素应用程序)
可用工具
- find_related_research -查找引用给定DOI的出版物、数据集和软件
- 获取元数据 -从OpenAIRE Graph获取研究产品的详细元数据
安装
需求
- Python 3.10或更高版本
- 点
从源代码安装
# Clone the repository
git clone https://github.com/cessda/cessda.ai.mcp.openaire.git
cd cessda.ai.mcp.openaire
# Install in development mode
pip install -e .
验证安装
mcp-openaire --help
配置
服务器遵循12因素应用程序方法,并通过环境变量进行配置。
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
OPENAIRE_SCHOLEXPLORER_URL |
https://api.scholexplorer.openaire.eu/v3 |
ScholExplorer API基础URL |
OPENAIRE_GRAPH_URL |
https://api.openaire.eu/graph/v2 |
OpenAIRE Graph API基础URL |
OPENAIRE_API_TIMEOUT |
30 |
API请求超时(秒) |
OPENAIRE_API_MAX_RETRIES |
3 |
最大重试次数 |
OPENAIRE_LOG_LEVEL |
WARN |
日志记录级别(信息、警告、错误) |
OPENAIRE_DEFAULT_LIMIT |
200 |
默认引用结果限制 |
OPENAIRE_MAX_LIMIT |
1000 |
最大引用结果限制 |
OPENAIRE_PAGE_SIZE |
50 |
每个API页面请求的结果 |
配置文件(可选)
创建一个 .env 工作目录中的文件:
OPENAIRE_API_TIMEOUT=60
OPENAIRE_LOG_LEVEL=INFO
OPENAIRE_DEFAULT_LIMIT=100
用法
Claude桌面设置
-
找到您的Claude Desktop配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
-
添加MCP服务器配置:
{
"mcpServers": {
"openaire": {
"command": "python",
"args": ["-m", "mcp_openaire.server"],
"env": {
"OPENAIRE_LOG_LEVEL": "INFO"
}
}
}
}
或者,如果通过pip安装:
{
"mcpServers": {
"openaire": {
"command": "mcp-openaire"
}
}
}
-
重新启动克劳德桌面
-
验证服务器是否已连接 -查找MCP图标或检查可用工具
可用工具
1.find_related_research
查找引用给定DOI的出版物、数据集和软件。
参数:
doi(必填):内政部查找引文(例如,“10.21338/NSD-ESS8-2016”)limit(可选):最大结果(1-1000,默认值:200)
退货: ScholExplorer的引用链接:
- 找到的引用总数
- 包含标题、作者、DOI和出版日期的引用对象数组
- 关系类型(引用、参考)
- 对象类型(出版物、数据集、软件)
- 链接提供者(开放式、交叉引用、数据引用)
2.获取元数据
从OpenAIRE research Graph获取研究产品的全面元数据。
参数:
identifier(必填):DOI或OpenAIRE ID(例如,“10.2139/ssrn.3991520”)
退货: 丰富的元数据包括:
- 完整标题和摘要
- 完整的作者列表,包括隶属关系和ORCID ID
- 出版日期和出版商
- 引文指标
- 访问权限和开放访问状态
- 资助信息
- 主题分类
- 访问URL
示例提示
在Claude Desktop中尝试以下提示:
-
查找数据集的引用:
“查找所有引用欧洲社会调查数据集10.21338/NSD-ESS8-2016的出版物”
-
发现相关研究:
“显示DOI 10.2139/ssrn.3991520的前50次引用”
-
获取详细元数据:
“给我DOI 10.21338/NSD-ESS8-2016的完整元数据,包括摘要和作者”
-
探索引文网络:
“查找所有引用数据集10.5281/zenodo.1234567的研究,并按日期向我显示前10名”
-
组合工作流程:
“在CESDSA中查找有关气候变化的数据集,然后对于第一个结果,查找引用它的所有出版物,并获取最新出版物的元数据”
发展
设置开发环境
# Clone repository
git clone https://github.com/cessda/cessda.ai.mcp.openaire.git
cd cessda.ai.mcp.openaire
# Install with development dependencies
pip install -e ".[dev]"
项目结构
mcp-openaire/
├── LICENSE.txt # Apache 2.0 license
├── README.md # This file
├── pyproject.toml # Python package configuration
├── Dockerfile # Container image (STDIO)
├── Dockerfile.http # Container image (HTTP/SSE)
├── docker-compose.yml # Docker Compose configuration
└── src/
└── mcp_openaire/
├── __init__.py # Package initialization
├── server.py # FastMCP STDIO server
├── server_http.py # FastMCP HTTP/SSE server
├── tools.py # API integration logic
├── config.py # Environment configuration
└── logging_config.py # Structured JSON logging
代码规范
- 风格:政治公众人物8(通过
black和ruff) - 类型提示:所有公共活动都需要
- 文档:所有模块、类和函数的文档字符串
- 日志记录:结构化JSON到stdout
- 配置:仅环境变量(无硬编码值)
- 版本控制:语义版本控制(主、次、补丁)
测试
# Run API integration tests
python test_api.py
# Format code
black src/
# Lint code
ruff check src/
运营
在Docker中运行
# Build image (STDIO mode)
docker build -t mcp-openaire:0.1.0 .
# Run container (STDIO mode)
docker run -i mcp-openaire:0.1.0
# Build HTTP/SSE image
docker build -f Dockerfile.http -t mcp-openaire-http:0.1.0 .
# Run HTTP server
docker run -d -p 8001:8000 mcp-openaire-http:0.1.0
# Using Docker Compose
docker compose up -d
docker compose logs -f
docker compose down
日志记录
服务器将结构化JSON日志输出到stdout:
{
"timestamp": "2025-01-15T10:30:45.123456Z",
"level": "INFO",
"message": "ScholExplorer search completed",
"logger": "mcp_openaire",
"doi": "10.21338/NSD-ESS8-2016",
"total_available": 55,
"results_returned": 55
}
日志级别:
INFO:信息性消息(API请求、结果)WARN:需要注意的警告(验证问题、超出限制)ERROR:需要调查的错误(API失败、异常)
监控
使用以下方式监视服务器:
- JSON日志聚合(ELK、Splunk等)
- 检查
ERROR和WARN级别消息 - 跟踪API响应时间和故障率
- 监控引文搜索模式
故障排除
问题: 服务器未出现在Claude Desktop中
- 验证配置文件路径和JSON语法
- 检查服务器安装:
which mcp-openaire - 查看Claude Desktop日志中的错误
- 配置更改后重新启动Claude Desktop
问题: API超时
- 增加
OPENAIRE_API_TIMEOUT环境变量 - 检查与OpenAIRE API的网络连接
- 查看结构化日志中的超时模式
- 减少
OPENAIRE_DEFAULT_LIMIT以获得更快的响应
问题: 未找到引用
- 验证DOI是否正确,是否存在于ScholExplorer中
- 并非所有DOI都有引用(尤其是新的出版物)
- 检查DOI格式是否正确(以“10”开头)
- 尝试一个众所周知的DOI,如“10.21338/NSD-ESS8-2016”,以测试连接性
问题: 找不到元数据
- 一些DOI可能还没有出现在OpenAIRE图中
- 尝试先搜索ScholExplorer以获取OpenAIRE ID
- 检查标识符格式(DOI应以“10”开头。)
版本控制
此项目使用语义版本控制:
- 重大:中断对API或配置的更改
- 次要的:新功能,向后兼容
- 补丁:Bug修复,向后兼容
当前版本: 0.1.0
许可证
版权所有©2025 CESSTA ERIC
根据Apache许可证2.0版(“许可证”)许可; 除非遵守许可证,否则您不得使用此文件。 您可以在以下网址获得许可证副本
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则软件 根据许可证分发的内容按“原样”分发, 无任何明示或暗示的保证或条件。 请参阅许可证,了解管理权限和 许可证下的限制。
看 LICENSE.txt 获取完整的许可证文本。
链接
贡献
欢迎投稿!请打开问题或拉取请求。