MCP Svelte Docs Server
by spences10
Verified
# Novu MCP Implementation
This is a TypeScript implementation of a Model Context Protocol (MCP) server for Novu, allowing AI agents to interact with Novu's notification infrastructure.
## Setup
1. Install dependencies:
```bash
npm install
```
2. Build the project:
```bash
npm run build
```
3. Start the MCP server:
```bash
npm start
```
For development, you can use:
```bash
npm run dev
```
## Configuration
The MCP server requires a Novu API key to be configured in `smithery.yml`. You can obtain an API key from your Novu dashboard.
## Available Operations
The MCP server supports the following Novu operations:
### Events
- `trigger_event`: Send a notification to specific subscribers
- `broadcast_event`: Send a notification to all subscribers
- `cancel_triggered_event`: Cancel a triggered notification
### Notifications
- `get_notifications`: List notifications with pagination
- `get_notification_stats`: Get notification statistics
### Subscribers
- `get_subscribers`: List subscribers with pagination
- `create_subscriber`: Create a new subscriber
- `update_subscriber`: Update subscriber details
- `delete_subscriber`: Remove a subscriber
### Topics
- `get_topics`: List all topics
- `create_topic`: Create a new topic
- `delete_topic`: Delete an existing topic
- `add_subscribers_to_topic`: Add subscribers to a topic
- `remove_subscribers_from_topic`: Remove subscribers from a topic
## Example Usage
To trigger a notification:
```json
{
"type": "execute",
"payload": {
"operation": "trigger_event",
"params": {
"name": "welcome-email",
"to": "subscriber-id",
"payload": {
"name": "John Doe",
"company": "Acme Inc"
}
}
}
}
```
To create a subscriber:
```json
{
"type": "execute",
"payload": {
"operation": "create_subscriber",
"params": {
"subscriberId": "unique-id",
"email": "john@example.com",
"firstName": "John",
"lastName": "Doe"
}
}
}
```
## Development
The source code is written in TypeScript and follows modern development practices. The main implementation is in `src/index.ts`, with Novu-specific logic in `src/novu-service.ts`.