Skip to main content
Glama
NotoriousArnav

EventHorizon MCP Server

README.md
# 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

TDQS

A3.7/5.0

Scored across 13 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no overlap. For example, get_event retrieves event details while get_event_registrations focuses on attendee data, and tools like register_for_event and unregister_from_event are precise opposites. The descriptions reinforce these distinctions, making misselection unlikely.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using snake_case, such as create_event, list_events, and get_my_profile. The naming is predictable and readable throughout, with no deviations in style or convention, which aids agent comprehension.

Tool Count5/5

With 13 tools, the count is well-scoped for an event management domain, covering core operations like CRUD for events, registration handling, and user-specific queries. Each tool earns its place without redundancy, fitting typical server scope expectations.

Completeness5/5

The toolset provides complete coverage for event management, including full CRUD for events (create, get, update, delete), registration lifecycle (register, unregister, manage), and user-specific views (hosted events, registrations, profile). There are no obvious gaps, ensuring agents can handle end-to-end workflows without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues