EventHorizon MCP Server
A Model Context Protocol (MCP) server for integrating with the EventHorizon Django event management platform.
Installation
From GitHub (Recommended)
Run directly using npx without cloning:
npx github:NotoriousArnav/EventHorizon-MCP
From Source
git clone https://github.com/NotoriousArnav/EventHorizon-MCP.git
cd EventHorizon-MCP
npm install
npm run build
Configuration
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
EVENTHORIZON_BASE_URL | Yes | http://localhost:8000 | EventHorizon API URL |
EVENTHORIZON_API_TOKEN | Yes | - | Knox authentication token |
LOG_LEVEL | No | info | debug, info, warn, error |
API_TIMEOUT | No | 30000 | Request timeout in ms |
Getting a Knox Token
- Log into your EventHorizon Django instance
- Go to Django Admin > Knox Tokens > Add Token
- Or use the API:
POST /api/auth/login/with credentials
MCP Client Setup
Claude Desktop
Add to ~/.config/claude/claude_desktop_config.json (Linux) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"eventhorizon": {
"command": "npx",
"args": ["-y", "github:NotoriousArnav/EventHorizon-MCP"],
"env": {
"EVENTHORIZON_BASE_URL": "http://localhost:8000",
"EVENTHORIZON_API_TOKEN": "your_knox_token_here"
}
}
}
}
OpenCode
Add to your OpenCode MCP config (~/.config/opencode/config.json):
{
"mcp": {
"servers": {
"eventhorizon": {
"type": "local",
"command": ["npx", "-y", "github:NotoriousArnav/EventHorizon-MCP"],
"env": {
"EVENTHORIZON_BASE_URL": "http://localhost:8000",
"EVENTHORIZON_API_TOKEN": "your_knox_token_here"
}
}
}
}
}
Cursor
Add to Cursor's MCP settings:
{
"mcpServers": {
"eventhorizon": {
"command": "npx",
"args": ["-y", "github:NotoriousArnav/EventHorizon-MCP"],
"env": {
"EVENTHORIZON_BASE_URL": "http://localhost:8000",
"EVENTHORIZON_API_TOKEN": "your_knox_token_here"
}
}
}
}
Local Development
If running from source:
{
"mcpServers": {
"eventhorizon": {
"command": "node",
"args": ["/absolute/path/to/EventHorizon-MCP/dist/index.js"],
"env": {
"EVENTHORIZON_BASE_URL": "http://localhost:8000",
"EVENTHORIZON_API_TOKEN": "your_knox_token_here"
}
}
}
}
Available Tools
Event Management
| Tool | Description |
|---|---|
list_events | List events with optional search/location filters |
get_event | Get detailed event information by ID |
create_event | Create a new event |
update_event | Update an existing event |
delete_event | Delete an event (organizer only) |
Registration
| Tool | Description |
|---|---|
register_for_event | Register for an event |
unregister_from_event | Cancel registration |
get_event_registrations | View registrations (organizer only) |
manage_registration | Approve/waitlist/cancel registration |
User
| Tool | Description |
|---|---|
get_my_profile | Get current user profile |
get_my_registrations | List your event registrations |
get_my_hosted_events | List events you organize |
Utility
| Tool | Description |
|---|---|
health_check | Test API connection and auth |
Development
# Install dependencies
npm install
# Run in development mode (hot reload)
npm run dev
# Build for production
npm run build
# Run production build
npm start
# Run tests
npm test
Testing Without an MCP Client
Use the MCP Inspector:
npx @modelcontextprotocol/inspector node dist/index.js
Or send raw JSON-RPC:
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | node dist/index.js
Requirements
- Node.js 18+
- EventHorizon Django instance with Knox authentication enabled
License
MIT