oncallhealth-mcp
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@oncallhealth-mcpstart a new burnout analysis for the last 30 days"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
oncallhealth-mcp
MCP server for On-Call Health burnout analysis. Connects AI assistants to your on-call data for workload insights.
Prerequisites
An On-Call Health account at oncallhealth.ai
An API key from oncallhealth.ai/settings/api-keys
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-mcpClaude Desktop
Add to your claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%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-mcpRun the server:
export ONCALLHEALTH_API_KEY=och_live_...
oncallhealth-mcpOr run without installing using uvx:
ONCALLHEALTH_API_KEY=och_live_... uvx oncallhealth-mcpConfiguration
Environment Variables
Variable | Required | Default | Description |
| Yes | - | API key from oncallhealth.ai |
| No |
| 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 analyzeinclude_weekends(bool, default: true): Include weekend dataintegration_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 exitTransport 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.
Links
On-Call Health - Main website
API Documentation - REST API docs
GitHub Issues - Report bugs
License
Apache-2.0
Available Tools
3 toolsexecuteA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Python async code to execute tool calls via call_tool(name, arguments) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It mentions that code is async, only call_tool is in scope, and return produces output. Missing details on error handling, side effects, or resource constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with main purpose. No redundant information; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should clarify return format. It mentions 'return' for output but does not specify structure, error behavior, or limits. Somewhat incomplete for a code execution tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds semantics by explaining that the code parameter should contain async code using call_tool and that output is produced via return. This goes beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool allows chaining await call_tool(...) calls in one Python block, which is a specific verb+resource. It distinguishes from sibling tools 'get_schema' and 'search' by focusing on execution of multiple tool calls rather than schema retrieval or searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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' and specifies that only call_tool is available, providing context for usage. However, it does not explicitly exclude scenarios or compare to alternatives.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tools | Yes | List of tool names to get schemas for | |
| detail | No | 'brief' for names and descriptions, 'detailed' for parameter schemas as markdown, 'full' for complete JSON schemas | detailed |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden for behavioral disclosure. It does not indicate side effects, idempotency, or safety. The description only states what the tool does, not its behavioral characteristics, which is insufficient for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two sentences, is front-loaded with the purpose, and contains no unnecessary words. Every sentence is meaningful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, output schema exists), the description covers the essential purpose and usage context. It does not lack critical information for a basic retrieval tool, though it could mention that different detail levels return different formats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for both parameters. The tool description does not add additional meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get parameter schemas for specific tools', which is a specific verb+resource. It distinguishes itself from sibling tools 'execute' and 'search' by indicating it follows search and precedes execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use after searching to get the detail needed to call a tool', providing clear context for when to use this tool. It does not mention when not to use it or alternatives, but the guidance is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchB
Search for available tools by query.
Returns matching tools ranked by relevance.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to find available tools | |
| tags | No | Filter to tools with any of these tags before searching | |
| detail | No | 'brief' for names and descriptions, 'detailed' for parameter schemas as markdown, 'full' for complete JSON schemas | brief |
| limit | No | Maximum number of results to return |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only mentions ranking by relevance without explaining criteria, limitations, or side effects. No information about authentication, rate limits, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences that immediately convey the core function and return behavior. No unnecessary words, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, return values are covered. However, the description lacks context on search scope (all tools?), ranking algorithm, and interactions with other parameters. It is minimally adequate but not fully complete for a search tool with optional tags and detail options.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 does not add meaning beyond the schema's parameter descriptions. It repeats 'by query' but offers no additional context like expected input format or behavior for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search for available tools by query' and 'Returns matching tools ranked by relevance.' It specifies the verb (search), object (tools), and method (by query), distinguishing it from siblings 'execute' and 'get_schema'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'execute' or 'get_schema'. It does not specify when not to use it, nor does it mention any prerequisites or context.
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. Dates show when Glama detected each change.
3 tool updates
v0.3.0- First observed
execute - First observed
get_schema - First observed
search
TDQS
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.
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.
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.
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Hosted MCP server for Cliniko — patients, appointments, availability, and invoices for AI agents.
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Hosted MCP server exposing US hospital procedure cost data to AI assistants
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server that connects AI assistants like Claude to WHOOP health data, enabling natural language queries about recovery, sleep, workouts, and more.194149MIT
- AlicenseAqualityDmaintenanceMCP server that enables AI assistants to access Whoop health data including recovery, sleep, workouts, and daily strain for personalized health recommendations.7163MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to access Oura Ring health data including activity, sleep, heart rate, stress, and personal info.182-
- FlicenseNot gradedqualityBmaintenanceSelf-hosted MCP server that provides read-only access to Google Health API v4, enabling analysis of personal health data via OpenAI Responses API or ChatGPT.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Rootly-AI-Labs/mcp-on-call-health'
If you have feedback or need assistance with the MCP directory API, please join our Discord server