oneuptime/MCP
2025-09-26 14:23:46 +01:00
..
__mocks__ feat: Improve error handling and logging in OneUptimeApiService and related tests 2025-07-01 21:02:32 +01:00
__tests__ fix: Update model type validation to use lowercase values for consistency 2025-07-14 19:13:33 +01:00
build feat: Implement MCP Hello World Server with basic tools and configuration 2025-06-27 12:56:38 +01:00
Services Refactor API calls to use unified request structure 2025-09-19 20:57:54 +01:00
Types Refactor DynamicToolGenerator tests and utility functions for improved readability and consistency 2025-06-30 23:27:57 +01:00
Utils refactor: Format imports and improve error logging in NotificationService 2025-07-29 11:07:10 +01:00
.env.example refactor: Simplify environment configuration by removing hostname, protocol, and base route; update API service to use URL 2025-06-27 14:06:32 +01:00
Dockerfile.tpl feat: update @oneuptime/common to version 7.0.4800 and adjust workflow dependencies 2025-07-30 16:42:39 +01:00
Index.ts refactor: Clean up console logging in Index.ts and improve structure in DynamicToolGenerator tests 2025-07-01 09:45:22 +01:00
jest.config.json refactor: Update jest.config.json for module name mapping and transform ignore patterns 2025-07-25 16:03:01 +01:00
nodemon.json refactor: Update nodemon.json files to ignore node_modules and public directories 2025-09-17 14:50:58 +01:00
package-lock.json fix: Update @oneuptime/common and axios versions in package-lock.json; modify compile command to include npm update 2025-09-23 19:34:01 +01:00
package.json refactor: Update dependency version for @oneuptime/common to allow any version 2025-07-30 10:01:46 +01:00
README.md refactor: Replace logger with MCPLogger for improved logging compliance and add MCPLogger class for stderr logging 2025-06-27 16:47:45 +01:00
tsconfig.json refactor: Update API service configuration to use bracket notation for environment variables; remove unused variables from imports 2025-06-27 14:17:17 +01:00

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, TelemetryAttribute, 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.com

Installation

  1. Install dependencies:
npm install
  1. Configure environment variables:
cp .env.example .env
# Edit .env with your OneUptime configuration
  1. Build the server:
npm run build
  1. (Optional) Link for global CLI usage:
npm run link

Usage

Development

npm run dev

Production

npm start

Example 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 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

npm test

Linting

npm run audit
npm run dep-check

License

Apache-2.0 - See LICENSE file for details.