mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-04-06 00:32:12 +02:00
184 lines
4.2 KiB
Markdown
184 lines
4.2 KiB
Markdown
# OneUptime MCP Server
|
|
|
|
A production-ready Model Context Protocol (MCP) server for OneUptime that provides dynamic tools for all OneUptime models and operations.
|
|
|
|
## Features
|
|
|
|
- **Dynamic Tool Generation**: Automatically generates MCP tools for all OneUptime models (Database and Analytics)
|
|
- **Full CRUD Operations**: Supports Create, Read, Update, Delete, List, and Count operations
|
|
- **Production Ready**: Built with proper error handling, logging, and configuration
|
|
- **Extensible**: Automatically supports new models as they are added to OneUptime
|
|
- **Type Safe**: Fully typed with TypeScript
|
|
|
|
## Available Operations
|
|
|
|
The MCP server automatically generates tools for each OneUptime model with the following operations:
|
|
|
|
### Database Models
|
|
- `oneuptime_create{ModelName}` - Create a new record
|
|
- `oneuptime_get{ModelName}` - Retrieve a record by ID
|
|
- `oneuptime_list{ModelName}s` - List records with filtering
|
|
- `oneuptime_update{ModelName}` - Update a record
|
|
- `oneuptime_delete{ModelName}` - Delete a record
|
|
- `oneuptime_count{ModelName}s` - Count records
|
|
|
|
### Analytics Models
|
|
- `oneuptime_create{ModelName}` - Create analytics data
|
|
- `oneuptime_list{ModelName}s` - Query analytics data
|
|
- `oneuptime_count{ModelName}s` - Count analytics records
|
|
|
|
## Supported Models
|
|
|
|
The server automatically generates tools for all OneUptime models including:
|
|
|
|
**Database Models**: Incident, Alert, Monitor, Project, User, Team, StatusPage, and 100+ more
|
|
**Analytics Models**: Log, Metric, Span, ExceptionInstance, MonitorLog
|
|
|
|
## Configuration
|
|
|
|
Copy `.env.example` to `.env` and configure:
|
|
|
|
```bash
|
|
# OneUptime API Key (Required)
|
|
ONEUPTIME_API_KEY=your_oneuptime_api_key_here
|
|
|
|
# OneUptime Instance URL (Optional - defaults to https://oneuptime.com)
|
|
ONEUPTIME_URL=https://oneuptime.com
|
|
```
|
|
|
|
## Installation
|
|
|
|
1. Install dependencies:
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
2. Configure environment variables:
|
|
```bash
|
|
cp .env.example .env
|
|
# Edit .env with your OneUptime configuration
|
|
```
|
|
|
|
3. Build the server:
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
4. (Optional) Link for global CLI usage:
|
|
```bash
|
|
npm run link
|
|
```
|
|
|
|
|
|
## Usage
|
|
|
|
### Development
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
### Production
|
|
```bash
|
|
npm start
|
|
```
|
|
|
|
## Example Tool Usage
|
|
|
|
### List Incidents
|
|
```json
|
|
{
|
|
"name": "oneuptime_listIncidents",
|
|
"arguments": {
|
|
"query": {"projectId": "your-project-id"},
|
|
"limit": 10
|
|
}
|
|
}
|
|
```
|
|
|
|
### Create Alert
|
|
```json
|
|
{
|
|
"name": "oneuptime_createAlert",
|
|
"arguments": {
|
|
"data": {
|
|
"title": "High CPU Usage",
|
|
"description": "CPU usage above 90%",
|
|
"projectId": "your-project-id"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Get Monitor by ID
|
|
```json
|
|
{
|
|
"name": "oneuptime_getMonitor",
|
|
"arguments": {
|
|
"id": "monitor-id-here"
|
|
}
|
|
}
|
|
```
|
|
|
|
### Query Logs
|
|
```json
|
|
{
|
|
"name": "oneuptime_listLogs",
|
|
"arguments": {
|
|
"query": {
|
|
"serviceId": "service-id",
|
|
"severity": "error"
|
|
},
|
|
"limit": 50,
|
|
"sort": {"time": -1}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### MCP Logging Compatibility
|
|
|
|
This server uses a custom `MCPLogger` class that ensures all log messages are directed to `stderr` instead of `stdout`. This is critical for MCP protocol compliance, as `stdout` is reserved for JSON-RPC messages.
|
|
|
|
**Fixed Issues:**
|
|
- `Failed to parse message` warnings caused by log messages going to stdout
|
|
- Dotenv initialization messages interfering with MCP protocol
|
|
- All informational logging now properly directed to stderr
|
|
|
|
If you encounter parsing warnings, ensure no code is writing to stdout directly - use `MCPLogger` instead of console methods.
|
|
|
|
## Architecture
|
|
|
|
- **DynamicToolGenerator**: Automatically discovers and generates tools for all OneUptime models
|
|
- **OneUptimeApiService**: Handles API communication with OneUptime instance
|
|
- **Type Definitions**: Provides type safety and IntelliSense support
|
|
- **Error Handling**: Comprehensive error handling and user-friendly messages
|
|
|
|
## Development
|
|
|
|
### Adding New Models
|
|
|
|
New models are automatically supported! When new models are added to OneUptime:
|
|
|
|
1. Database models added to `Common/Models/DatabaseModels/Index.ts`
|
|
2. Analytics models added to `Common/Models/AnalyticsModels/Index.ts`
|
|
|
|
The MCP server will automatically generate tools for them on the next restart.
|
|
|
|
### Testing
|
|
|
|
```bash
|
|
npm test
|
|
```
|
|
|
|
### Linting
|
|
|
|
```bash
|
|
npm run audit
|
|
npm run dep-check
|
|
```
|
|
|
|
## License
|
|
|
|
Apache-2.0 - See LICENSE file for details.
|