elizavetaRa/cern-indico-mcp
If you are the rightful owner of cern-indico-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The Indico MCP Server PROTOTYPE provides access to CERN Indico public events through a Model Context Protocol (MCP) server.
Indico MCP Server PROTOTYPE
A Model Context Protocol (MCP) server providing access to CERN Indico public events. https://github.com/indico/indico
Features
- Search upcoming public events at CERN
- Get detailed event information
- Filter by date ranges, categories, and keywords
- Built-in caching for improved performance
- Public events only (no authentication required)
Project Structure
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
Quick Start
1. Setup
Linux/macOS:
./scripts/setup.sh
Windows:
scripts\setup.bat
2. Run
Direct execution:
python main.py
With MCP Inspector (for testing):
npx @modelcontextprotocol/inspector .venv/bin/python main.py
Windows:
.venv\Scripts\python.exe main.py
Available Tools
1. search_events
Search upcoming public CERN Indico events by keyword.
Parameters:
keyword(str): Text to search for in event titleslimit(int, optional): Maximum results (default: 10, max: 500)category_id(int, optional): Indico category ID (default: 0 = all)days_ahead(int, optional): Days to look ahead (default: 30)from_date(str, optional): Start date YYYY-MM-DDto_date(str, optional): End date YYYY-MM-DD
Example:
search_events("machine learning", limit=5)
2. get_event_details
Get detailed information for a specific public Indico event.
Parameters:
event_id(int): Numeric Indico event ID
Example:
get_event_details(1234567)
3. upcoming_public
List upcoming public events at CERN.
Parameters:
days(int, optional): Days to look ahead (default: 7)limit(int, optional): Maximum events (default: 10, max: 500)category_id(int, optional): Indico category ID (default: 0 = all)from_date(str, optional): Start date YYYY-MM-DDto_date(str, optional): End date YYYY-MM-DD
Example:
upcoming_public(days=14, limit=20)
4. server_status
Get server status and configuration information.
Example:
server_status()
Configuration
Environment Variables (Optional)
You can customize behavior by creating a .env file:
INDICO_BASE_URL=https://indico.cern.ch
LOG_LEVEL=INFO
ENABLE_CACHE=true
CACHE_SIZE=128
Note: This server only accesses public events. Authentication is disabled for security purposes.
MCP Client Configuration
For Claude Desktop or other MCP clients, use the configuration from config/server_config.example.json:
{
"servers": [
{
"name": "indico",
"command": "python",
"args": ["main.py"],
"env": {},
"enabled": true
}
]
}
Development
Running Tests
source .venv/bin/activate
python -m pytest tests/
Requirements
- Python 3.8+
- fastmcp
- requests
- python-dotenv
License
MIT
Support
- Report issues on GitHub
- Check CERN Indico documentation: https://indico.cern.ch/