New:Microsoft Teams Notifications Are Now Available in Socket.Learn more →
Get Started

fettle-mcp

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fettle-mcp

MCP server for Fettle (fettle.sh) uptime monitoring — manage monitors, incidents, heartbeats and status pages from any MCP client.

latest
Source
npmnpm
Version
0.1.1
Version published
Weekly downloads
22
-31.25%
Maintainers
1
Weekly downloads
 
Created
Source

fettle-mcp

MCP server for Fettle — uptime monitoring you can drive from Claude Code, Claude Desktop, Cursor, Windsurf or anything else that speaks the Model Context Protocol.

Ask your assistant to create a monitor, look up why one went down, acknowledge an incident or pause checks before a deploy — it calls the same public API you would.

"Add an HTTP monitor for https://api.acme.dev, check it every minute from all regions."
"Which of my monitors had incidents this week?"
"Pause the checkout monitor — we're deploying for the next 20 minutes."

In the official MCP registry this server is sh.fettle/mcp — one entry covering both channels, for clients that install from the registry rather than from a hand-edited config file.

Requirements

  • Node.js 20 or newer
  • A Fettle account and an API key (Settings → API Keys at https://fettle.sh)

An API key belongs to one organization and carries either read or write scope. Read-scope keys can list and inspect; the write tools below need a write-scope key.

Install

There is nothing to install — MCP clients run the package with npx on demand. Add one entry to your client's config and restart it.

Claude Code

claude mcp add fettle --env FETTLE_API_KEY=fettle_your_key_here -- npx -y fettle-mcp

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows:

{
  "mcpServers": {
    "fettle": {
      "command": "npx",
      "args": ["-y", "fettle-mcp"],
      "env": { "FETTLE_API_KEY": "fettle_your_key_here" }
    }
  }
}

Cursor

~/.cursor/mcp.json (global) or .cursor/mcp.json (per project):

{
  "mcpServers": {
    "fettle": {
      "command": "npx",
      "args": ["-y", "fettle-mcp"],
      "env": { "FETTLE_API_KEY": "fettle_your_key_here" }
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "fettle": {
      "command": "npx",
      "args": ["-y", "fettle-mcp"],
      "env": { "FETTLE_API_KEY": "fettle_your_key_here" }
    }
  }
}

Configuration

VariableRequiredDefaultWhat it does
FETTLE_API_KEYyes—Your API key. The server refuses to start without it.
FETTLE_API_URLnohttps://api.fettle.shPoint the server at a different API. You will not normally set this.
FETTLE_TIMEOUT_MSno30000How long one tool call may take before it is abandoned.

Tools

ToolScopeWhat it does
list_monitorsreadList the monitors in the organization the API key belongs to.
get_monitorreadRead one monitor's full configuration and current status by id.
create_monitorwriteCreate a monitor that checks a URL, host or port on a schedule.
update_monitorwriteChange an existing monitor's settings.
pause_monitorwriteStop checking a monitor without deleting it — use before planned downtime.
resume_monitorwriteResume checks on a paused monitor.
delete_monitorwriteSoft-delete a monitor: it stops being checked and leaves the monitor list.
check_nowwriteRe-arm a monitor to run on the next scheduler tick instead of waiting out its interval.
get_uptime_summaryreadUptime, average response time and incident counts over 24h / 7d / 30d at once.
list_incidentsreadList incidents, optionally filtered by monitor, status, cause or period.
acknowledge_incidentwriteAcknowledge an open incident so repeat notifications stop.
list_heartbeatsreadList heartbeat (cron / dead-man's-switch) monitors and when each was last pinged.
create_heartbeatwriteCreate a heartbeat monitor and get the URL a scheduled job should ping.
list_status_pagesreadList status pages, with each page's slug and whether it is published.

The list is not written by hand. It is generated in the Fettle backend from one registry and served at /public-api/mcp-tools.json; this package vendors that file and builds its tools from it at startup, so the two MCP channels can never offer different tools.

The other channel: remote MCP

If your client supports remote MCP servers over HTTP, you do not need this package at all — point it at https://api.fettle.sh/mcp with the same API key as a Bearer token. Same tools, same behaviour, nothing to install or update.

Claude Code adds the remote channel from the command line — a different flag set from the stdio one above, with the key as a header rather than an environment variable:

claude mcp add fettle --transport http https://api.fettle.sh/mcp \
  --header "Authorization: Bearer fettle_your_key_here"

Clients configured through a JSON file take the same two fields:

{
  "mcpServers": {
    "fettle": {
      "url": "https://api.fettle.sh/mcp",
      "headers": { "Authorization": "Bearer fettle_your_key_here" }
    }
  }
}

Use this package when your client speaks only stdio, or when you would rather the credential stayed in a local config file than in a client's cloud configuration.

There is no OAuth on either channel yet; both authenticate with an API key.

Rate limits and plans

Tool calls spend the same per-organization request budget as the REST API — the plan's limit, not a separate one. A rate-limited call comes back saying how many seconds to wait. Plan limits are listed at https://fettle.sh/pricing.

Troubleshooting

FETTLE_API_KEY is not set — the client started the server without the variable. Check the env block of the config above, then fully restart the client: most clients read MCP config only at launch.

Authentication failed — the key is wrong, revoked, or from a deleted organization. Create a fresh one in Settings → API Keys.

This tool needs an API key with write scope — the key is read-only. Create a write-scoped key; there is no way to widen an existing key's scope.

The assistant does not see the tools — restart the client, then confirm Node.js 20+ with node -v. Run npx -y fettle-mcp in a terminal: it should print the missing-key message and exit, which proves the package itself runs.

Development

pnpm install
pnpm run typecheck
pnpm test
pnpm run build
pnpm run contract:check        # vendored contract vs. production

Adding a tool is a change in the backend's registry, not here: regenerate the contract there, then re-vendor it with pnpm run contract:check -- --write and commit the result. No source file in this package describes a tool.

server.json is the entry the official MCP registry serves, and it repeats the version — a test fails if it stops matching package.json, so bump both together.

Releasing is documented in NPM-SETUP.md (npm) and REGISTRY.md (the MCP registry).

License

MIT © Mark Shamanskii

Keywords

mcp

FAQs

Package last updated on 25 Aug 2026

Related posts