Skip to main content
Glama
Rootly-AI-Labs

oncallhealth-mcp

Official

oncallhealth-mcp

PyPI version Python 3.10+

MCP server for On-Call Health burnout analysis. Connects AI assistants to your on-call data for workload insights.

Prerequisites

Related MCP server: whoop-mcp-server

Installation

Pick your editor or client below and follow the instructions.

Claude Code

claude mcp add oncallhealth -e ONCALLHEALTH_API_KEY=och_live_... -- uvx oncallhealth-mcp

Claude Desktop

Add to your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "oncallhealth": {
      "command": "uvx",
      "args": ["oncallhealth-mcp"],
      "env": {
        "ONCALLHEALTH_API_KEY": "och_live_your_api_key_here"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for global):

{
  "mcpServers": {
    "oncallhealth": {
      "command": "uvx",
      "args": ["oncallhealth-mcp"],
      "env": {
        "ONCALLHEALTH_API_KEY": "och_live_your_api_key_here"
      }
    }
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "oncallhealth": {
      "command": "uvx",
      "args": ["oncallhealth-mcp"],
      "env": {
        "ONCALLHEALTH_API_KEY": "och_live_your_api_key_here"
      }
    }
  }
}

VS Code / GitHub Copilot

Add to .vscode/mcp.json in your project:

{
  "servers": {
    "oncallhealth": {
      "command": "uvx",
      "args": ["oncallhealth-mcp"],
      "env": {
        "ONCALLHEALTH_API_KEY": "och_live_your_api_key_here"
      }
    }
  }
}

Manual / Other Clients

Install from PyPI:

pip install oncallhealth-mcp

Run the server:

export ONCALLHEALTH_API_KEY=och_live_...
oncallhealth-mcp

Or run without installing using uvx:

ONCALLHEALTH_API_KEY=och_live_... uvx oncallhealth-mcp

Configuration

Environment Variables

Variable

Required

Default

Description

ONCALLHEALTH_API_KEY

Yes

-

API key from oncallhealth.ai

ONCALLHEALTH_API_URL

No

https://api.oncallhealth.ai

API endpoint URL

Security Note

Avoid committing API keys to version control. Use environment variables or a secrets manager instead of hardcoding keys in config files.

Available Tools

analysis_start

Start a new burnout analysis for your on-call data.

Parameters:

  • days_back (int, default: 30): Number of days to analyze

  • include_weekends (bool, default: true): Include weekend data

  • integration_id (int, optional): Specific integration to analyze

analysis_status

Check the status of a running analysis.

Parameters:

  • analysis_id (int): ID of the analysis to check

analysis_results

Get full results for a completed analysis.

Parameters:

  • analysis_id (int): ID of the completed analysis

analysis_current

Get the most recent analysis for your account.

Parameters: None

integrations_list

List all connected integrations (Rootly, GitHub, Slack, Jira, Linear).

Parameters: None

Resources

oncallhealth://methodology

Provides a brief description of the On-Call Health methodology for measuring workload and burnout risk.

Prompts

weekly_brief

Template for generating a weekly on-call health summary.

Parameters:

  • team_name (str): Name of the team to summarize

CLI Reference

usage: oncallhealth-mcp [-h] [--transport {stdio,http}] [--host HOST]
                        [--port PORT] [-v] [--version]

options:
  -h, --help            show this help message and exit
  --transport {stdio,http}
                        Transport to use (default: stdio)
  --host HOST           Host to bind to (http transport only, default: 127.0.0.1)
  --port PORT           Port to bind to (http transport only, default: 8000)
  -v, --verbose         Enable verbose logging
  --version             show program's version number and exit

Transport Options

  • stdio (default): Standard input/output transport. Used by Claude Desktop and most MCP clients.

  • http: HTTP transport with Server-Sent Events. Useful for web-based clients or debugging.

License

Apache-2.0

Available Tools

3 tools
executeB

Chain await call_tool(...) calls in one Python block; prefer returning the final answer from a single block. Use return to produce output. Only call_tool(tool_name: str, params: dict) -> Any is available in scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesPython async code to execute tool calls via call_tool(name, arguments)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavior. It mentions that only `call_tool` is available and that `return` produces output, but it omits critical details like execution environment, side effects, timeout, error handling, and security restrictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences with no extraneous content, front-loaded with the core purpose, and every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite low complexity (one parameter), the description is insufficient for safe usage of arbitrary code execution. It lacks details on output handling, variable scope, error propagation, and security constraints, making it incomplete for an agent to reliably invoke this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds minimal value by detailing the `call_tool` signature and return usage, but it essentially repeats the schema's code description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states that the tool executes Python code to chain asynchronous tool calls via the `call_tool` function, distinguishing it from siblings like `get_schema` and `search` which are for single operations or queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises to 'prefer returning the final answer from a single block' implying a pattern, but it does not explicitly state when to use this tool versus making individual calls or using alternatives, nor does it provide exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_schemaA

Get parameter schemas for specific tools.

Use after searching to get the detail needed to call a tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolsYesList of tool names to get schemas for
detailNo'brief' for names and descriptions, 'detailed' for parameter schemas as markdown, 'full' for complete JSON schemasdetailed

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose any behavioral traits such as side effects, authorization needs, or rate limits. For a read-only tool, the description could mention that it is non-destructive, but it remains silent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. Essential information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool is simple, output schema exists, so description doesn't need to explain return values. The description covers the essential usage flow, but slight improvement could mention that it returns JSON schemas.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds context about using after searching, which helps understand the purpose of the 'tools' parameter, but doesn't add extra meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool gets parameter schemas for specific tools. Verb 'get' and resource 'parameter schemas for specific tools' are specific and distinct from sibling tools like execute, search, and tags.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Use after searching to get the detail needed to call a tool.' This gives clear context for when to use it, though it doesn't mention when not to use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.3.0
    • First observedexecute
    • First observedget_schema
    • First observedsearch

TDQS

B3.4/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: execute chains calls, get_schema retrieves parameter details, and search finds tools. There is no overlap or ambiguity.

Naming Consistency4/5

Tool names are imperative verbs (execute, search) and one uses get_ prefix (get_schema). While mostly consistent, the underscore in get_schema differs from the others, causing a minor deviation.

Tool Count2/5

With only 3 tools, the server feels underdeveloped for the domain implied by 'oncallhealth'. The tools are generic meta-tools rather than domain-specific actions, making the count too low for its apparent scope.

Completeness1/5

The tool set is severely incomplete for an oncall health server. It lacks any domain-specific tools (e.g., managing incidents, schedules, alerts) and only provides generic utility functions, failing to cover the intended domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers