Skip to main content
Glama
Trigv
by Trigv
README.md
# @trigv/mcp

MCP (Model Context Protocol) server for [Trigv](https://trigv.com). Lets AI clients in Cursor, Claude Code, and VS Code send notification events to your Trigv workspace.

## What Trigv is

Trigv delivers developer notifications to your team's devices. Your backend (or AI agent) sends lightweight JSON events; Trigv queues push delivery. Notification title and body are not stored on Trigv servers — metadata only.

## Installation

```bash
npm install @trigv/mcp
```

Or run directly with `npx`:

```bash
npx @trigv/mcp
```

## Quick start

1. Create a workspace API key at [app.trigv.com](https://app.trigv.com).
2. Set `TRIGV_API_KEY` in your MCP client config (see below).
3. Ask your AI assistant to send an event using the `send_event` tool.

Example tool call:

```json
{
  "channel": "deploys",
  "title": "Production deploy complete",
  "description": "Build #42 succeeded in 38s (commit abc1234)",
  "level": "success",
  "event_type": "deploy.completed",
  "idempotency_key": "deploy-prod-42"
}
```

## Authentication

| Variable | Required | Default | Description |
|----------|:--------:|---------|-------------|
| `TRIGV_API_KEY` | Yes | — | Workspace ingest API key (`trgv_…`) |
| `TRIGV_BASE_URL` | No | `https://api.trigv.com/api` | Override for local dev (`http://trigv-platform.test/api`) |

The API key is sent as `Authorization: Bearer` and is **never** included in tool responses or error messages.

## Tool: `send_event`

Sends a notification event via `POST /v1/events`.

| Field | Required | Description |
|-------|:--------:|-------------|
| `channel` | Yes | Channel slug (e.g. `general`, `deploys`) |
| `title` | Yes | Notification title |
| `description` | No | Body text |
| `image_url` | No | HTTPS image URL (not stored server-side) |
| `url` | No | Destination URL for the notification (max 2048 characters; not stored server-side) |
| `level` | No | `info`, `success`, `warning`, `error` (default: `info`) |
| `delivery_urgency` | No | `standard` or `time_sensitive` (default: `standard`) |
| `event_type` | No | Free-form label (e.g. `deploy.completed`) |
| `idempotency_key` | No | Dedup key per workspace |

**Success response** includes `event.public_id`, `duplicate` (true when HTTP 200), and other event metadata.

**Error response** includes `error.type`, `error.message`, and optional `error.errors` for validation failures.

## Levels

- `info` — general information (default)
- `success` — completed successfully
- `warning` — attention needed
- `error` — failure or alert

## Delivery urgency

- `standard` — normal notifications (default)
- `time_sensitive` — iOS Time Sensitive delivery

## Idempotency

When you set `idempotency_key`, retries with the same key return the existing event (`duplicate: true`) without billing again.

## Error handling

| Error type | When |
|------------|------|
| `ConfigurationError` | Missing `TRIGV_API_KEY` |
| `ValidationError` | Invalid input (client or server 422) |
| `AuthenticationError` | HTTP 401 |
| `AuthorizationError` | HTTP 403 |
| `NotFoundError` | Channel not found (HTTP 404) |
| `RateLimitError` | HTTP 429 |
| `NetworkError` / `TimeoutError` | Connection issues |

## MCP client configuration

### Cursor

Add to `.cursor/mcp.json` in your project (or global Cursor MCP settings):

```json
{
  "mcpServers": {
    "trigv": {
      "command": "npx",
      "args": ["-y", "@trigv/mcp"],
      "env": {
        "TRIGV_API_KEY": "trgv_your_api_key_here"
      }
    }
  }
}
```

For a local checkout during development:

```json
{
  "mcpServers": {
    "trigv": {
      "command": "node",
      "args": ["/path/to/trigv-mcp/dist/index.js"],
      "env": {
        "TRIGV_API_KEY": "trgv_your_api_key_here",
        "TRIGV_BASE_URL": "http://trigv-platform.test/api"
      }
    }
  }
}
```

### Claude Code

Add to `~/.claude/settings.json` or project `.claude/settings.json`:

```json
{
  "mcpServers": {
    "trigv": {
      "command": "npx",
      "args": ["-y", "@trigv/mcp"],
      "env": {
        "TRIGV_API_KEY": "trgv_your_api_key_here"
      }
    }
  }
}
```

### VS Code

Add to `.vscode/mcp.json` in your workspace:

```json
{
  "servers": {
    "trigv": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@trigv/mcp"],
      "env": {
        "TRIGV_API_KEY": "trgv_your_api_key_here"
      }
    }
  }
}
```

## Examples

### Basic event

```json
{ "channel": "general", "title": "Hello from MCP" }
```

### Deploy completed (canonical)

```json
{
  "channel": "deploys",
  "title": "Production deploy complete",
  "description": "Build #42 succeeded in 38s (commit abc1234)",
  "level": "success",
  "delivery_urgency": "standard",
  "event_type": "deploy.completed",
  "idempotency_key": "deploy-prod-42"
}
```

### Cron job failed

```json
{
  "channel": "alerts",
  "title": "Nightly backup failed",
  "description": "Exit code 1 after 12 minutes",
  "level": "error",
  "event_type": "cron.failed"
}
```

## Development

```bash
git clone https://github.com/Trigv/trigv-mcp.git
cd trigv-mcp
npm install
npm run build
npm test
```

Run locally:

```bash
TRIGV_API_KEY=trgv_… npm run dev
```

## Testing

```bash
npm test
```

Tests use mocked HTTP — no live API key required in CI.

## Contributing

See the [Trigv SDK programme](https://github.com/Trigv/trigv-node) for API contract and conformance requirements.

## Licence

MIT — see [LICENSE](LICENSE).

TDQS

A3.9/5.0

Scored across 1 tool

Disambiguation5/5

Only one tool exists, so there is no ambiguity. The single tool has a clear, distinct purpose.

Naming Consistency5/5

With only one tool, naming consistency is perfect as there are no other tools to conflict with. The name 'send_event' follows a clear verb_noun pattern.

Tool Count3/5

A single tool is borderline; while it may be sufficient for a very narrow purpose, it feels thin compared to the typical 3-15 tools for a well-scoped server.

Completeness2/5

The server only provides a send operation, missing other expected capabilities like event listing, deletion, or configuration, which limits its usefulness for agents.

Maintenance

ActivityStale
ResponsivenessNo issues