研究引用关系发现服务器

OpenAIRE MCP服务器为AI助手提供访问学术引用索引和元数据的服务,用于发现研究引用关系、查找相关研究成果并获取出版物、数据集和软件的详细元数据。

  • by cessda
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 cessda/cessda.ai.mcp.openaire

使用说明

OpenAIRE MCP服务器

MCP(模型上下文协议)服务器,用于探索OpenAIRE研究图和ScholExplorer引用索引。使像Claude这样的人工智能助手能够发现引文关系,查找相关的研究成果,并检索出版物、数据集和软件的全面元数据。

目录

概述

此MCP服务器为AI助手提供了两个强大的研究发现API:

  • 学校探索者:引文索引,包含36亿个学术关系,链接出版物、数据集和软件
  • OpenAIRE研究图:全面的元数据聚合器,涵盖数百万项研究成果,包括完整摘要、作者隶属关系、引文指标和资助信息

特性

  • 🔗 查找引用特定DOI的所有研究成果(出版物、数据集、软件)
  • 📊 从OpenAIRE研究图中检索全面的元数据
  • 🤖 与Claude Desktop和其他MCP客户端无缝集成
  • 🐳 Docker容器化支持
  • 📝 结构化JSON日志记录
  • ⚙️ 通过环境变量进行配置(12因素应用程序)

可用工具

  1. find_related_research -查找引用给定DOI的出版物、数据集和软件
  2. 获取元数据 -从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桌面设置

  1. 找到您的Claude Desktop配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 窗户: %APPDATA%\Claude\claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  2. 添加MCP服务器配置:

{
  "mcpServers": {
    "openaire": {
      "command": "python",
      "args": ["-m", "mcp_openaire.server"],
      "env": {
        "OPENAIRE_LOG_LEVEL": "INFO"
      }
    }
  }
}

或者,如果通过pip安装:

{
  "mcpServers": {
    "openaire": {
      "command": "mcp-openaire"
    }
  }
}
  1. 重新启动克劳德桌面

  2. 验证服务器是否已连接 -查找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中尝试以下提示:

  1. 查找数据集的引用:

    “查找所有引用欧洲社会调查数据集10.21338/NSD-ESS8-2016的出版物”

  2. 发现相关研究:

    “显示DOI 10.2139/ssrn.3991520的前50次引用”

  3. 获取详细元数据:

    “给我DOI 10.21338/NSD-ESS8-2016的完整元数据,包括摘要和作者”

  4. 探索引文网络:

    “查找所有引用数据集10.5281/zenodo.1234567的研究,并按日期向我显示前10名”

  5. 组合工作流程:

    “在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 获取完整的许可证文本。

链接

贡献

欢迎投稿!请打开问题或拉取请求。