# 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:
```bash
npx github:NotoriousArnav/EventHorizon-MCP
```
### From Source
```bash
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
1. Log into your EventHorizon Django instance
2. Go to Django Admin > Knox Tokens > Add Token
3. 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):
```json
{
"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`):
```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:
```json
{
"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:
```json
{
"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
```bash
# 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:
```bash
npx @modelcontextprotocol/inspector node dist/index.js
```
Or send raw JSON-RPC:
```bash
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