事件查询服务

一个提供CERN Indico公共事件访问的模型上下文协议(MCP)服务器,支持搜索、过滤和获取详细事件信息。

  • by elizavetaRa
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 elizavetaRa/cern-indico-mcp

使用说明

Indico MCP服务器原型

一种模型上下文协议(MCP)服务器,提供对CERN Indico公共事件的访问。 https://github.com/indico/indico

特性

  • 搜索CERN即将举行的公共活动
  • 获取详细的事件信息
  • 按日期范围、类别和关键字筛选
  • 内置缓存以提高性能
  • 仅限公共活动 (无需身份验证)

项目结构

indico-mcp/
├── main.py                    # Main entry point
├── requirements.txt           # Python dependencies
├── .env.example              # Environment variables template
├── .gitignore
│
├── src/                      # Source code package
│   ├── __init__.py
│   ├── server.py             # MCP server implementation
│   ├── client.py             # Indico API client
│   ├── config.py             # Configuration management
│   ├── models.py             # Data models and normalizers
│   └── utils.py              # Utility functions
│
├── scripts/                  # Setup and utility scripts
│   ├── setup.sh             # Linux/macOS setup script
│   └── setup.bat            # Windows setup script
│
└── config/                   # Configuration examples
    ├── server_config.example.json
    └── server_config.windows.example.json

快速开始

1.设置

Linux/macOS:

./scripts/setup.sh

窗户:

scripts\setup.bat

2.跑步

直接执行:

python main.py

MCP检查员(用于测试):

npx @modelcontextprotocol/inspector .venv/bin/python main.py

窗户:

.venv\Scripts\python.exe main.py

可用工具

1. search_events

按关键字搜索即将举行的CERN Indico公开活动。

参数:

  • keyword (str):在事件标题中搜索的文本
  • limit (int,可选):最大结果(默认值:10,最大值:500)
  • category_id (int,可选):Indico类别ID(默认值:0=全部)
  • days_ahead (int,可选):展望未来的天数(默认值:30)
  • from_date (str,可选):开始日期YYYY-MM-DD
  • to_date (str,可选):结束日期YYYY-MM-DD

例子:

search_events("machine learning", limit=5)

2. get_event_details

获取特定公开Indico事件的详细信息。

参数:

  • event_id (int):数字标记事件ID

例子:

get_event_details(1234567)

3. upcoming_public

列出欧洲核子研究中心即将举行的公开活动。

参数:

  • days (int,可选):展望未来的天数(默认值:7)
  • limit (int,可选):最大事件数(默认值:10,最大值:500)
  • category_id (int,可选):Indico类别ID(默认值:0=全部)
  • from_date (str,可选):开始日期YYYY-MM-DD
  • to_date (str,可选):结束日期YYYY-MM-DD

例子:

upcoming_public(days=14, limit=20)

4. server_status

获取服务器状态和配置信息。

例子:

server_status()

配置

环境变量(可选)

您可以通过创建 .env 文件:

INDICO_BASE_URL=https://indico.cern.ch
LOG_LEVEL=INFO
ENABLE_CACHE=true
CACHE_SIZE=128

注意:此服务器仅访问公共事件。出于安全目的,已禁用身份验证。

MCP客户端配置

对于Claude Desktop或其他MCP客户端,请使用以下配置 config/server_config.example.json:

{
  "servers": [
    {
      "name": "indico",
      "command": "python",
      "args": ["main.py"],
      "env": {},
      "enabled": true
    }
  ]
}

发展

运行测试

source .venv/bin/activate
python -m pytest tests/

需求

  • Python 3.8+
  • fastmcp
  • 请求:
  • python dotenv

许可证

麻省理工学院

支持

  • 在GitHub上报告问题
  • 查看CERN Indico文件:https://indico.cern.ch/