@oneuptime/mcp-server
v9.2.12
Published
OneUptime MCP Server
Readme
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 recordoneuptime_get{ModelName}- Retrieve a record by IDoneuptime_list{ModelName}s- List records with filteringoneuptime_update{ModelName}- Update a recordoneuptime_delete{ModelName}- Delete a recordoneuptime_count{ModelName}s- Count records
Analytics Models
oneuptime_create{ModelName}- Create analytics dataoneuptime_list{ModelName}s- Query analytics dataoneuptime_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:
# 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.comInstallation
- Install dependencies:
npm install- Configure environment variables:
cp .env.example .env
# Edit .env with your OneUptime configuration- Build the server:
npm run build- (Optional) Link for global CLI usage:
npm run linkUsage
Development
npm run devProduction
npm startExample Tool Usage
List Incidents
{
"name": "oneuptime_listIncidents",
"arguments": {
"query": {"projectId": "your-project-id"},
"limit": 10
}
}Create Alert
{
"name": "oneuptime_createAlert",
"arguments": {
"data": {
"title": "High CPU Usage",
"description": "CPU usage above 90%",
"projectId": "your-project-id"
}
}
}Get Monitor by ID
{
"name": "oneuptime_getMonitor",
"arguments": {
"id": "monitor-id-here"
}
}Query Logs
{
"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 messagewarnings 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:
- Database models added to
Common/Models/DatabaseModels/Index.ts - Analytics models added to
Common/Models/AnalyticsModels/Index.ts
The MCP server will automatically generate tools for them on the next restart.
Testing
npm testLinting
npm run audit
npm run dep-checkLicense
Apache-2.0 - See LICENSE file for details.
