GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者提供的说明(英文原文)
Uptime monitoring — monitors, incidents, heartbeats, maintenance windows, status page incidents
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
FETTLE_API_KEY, FETTLE_API_URL, FETTLE_TIMEOUT_MS, Authorization标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
这个地址需要在请求的 header 中放入密钥,而添加连接器的菜单无法设置。请改用 Claude Code、Cursor 或 VS Code。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"fettle": {
"command": "npx",
"args": [
"-y",
"fettle-mcp"
],
"env": {
"FETTLE_API_KEY": "your-value",
"FETTLE_API_URL": "your-value",
"FETTLE_TIMEOUT_MS": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add --transport http fettle https://api.fettle.sh/mcp --header 'Authorization: your-value'claude mcp add fettle --env FETTLE_API_KEY=your-value --env FETTLE_API_URL=your-value --env FETTLE_TIMEOUT_MS=your-value -- npx -y fettle-mcp运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"fettle": {
"url": "https://api.fettle.sh/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"fettle": {
"command": "npx",
"args": [
"-y",
"fettle-mcp"
],
"env": {
"FETTLE_API_KEY": "your-value",
"FETTLE_API_URL": "your-value",
"FETTLE_TIMEOUT_MS": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"fettle": {
"type": "http",
"url": "https://api.fettle.sh/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"fettle": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"fettle-mcp"
],
"env": {
"FETTLE_API_KEY": "your-value",
"FETTLE_API_URL": "your-value",
"FETTLE_TIMEOUT_MS": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个地址需要在请求的 header 中放入密钥,而添加连接器的菜单无法设置。请改用 Claude Code、Cursor 或 VS Code。
你的选择通过 Cookie 保存在这台设备上,无需账户。
FETTLE_API_URL envFETTLE_TIMEOUT_MS envAuthorization 机密 HTTP header这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
服务器要求先登录,才会列出它的工具。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日
注册名称已通过域名 fettle.sh 验证(注册中心会核实域名所有权)
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
在 511 毫秒内响应(HTTP 401)
声明支持 OAuth 登录,你的 AI 应用可以带你去登录
尚未检查;我们会在检查端点时读取工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 3 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:FETTLE_API_KEY, Authorization
两种方式都可以:安装在你的电脑上,或者连接云端版本。
GitHub 仓库最后更新于–,最新版本(1.4.0)于前天进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。
同一分类中有:GitHub, Desktop Commander, Cloudflare MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Website: fettle.sh · MCP docs: fettle.sh/docs/mcp · Dashboard: dashboard.fettle.sh · Support: support@fettle.sh
MCP server for Fettle — uptime monitoring you can drive from Claude Code, Codex, 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, check a deploy or draft a status page post — it calls the same public API you would.
"Add an HTTP monitor for https://api.acme.dev, check it every 5 minutes from Europe."
"Which of my monitors had incidents this week?" "Silence alerts on the checkout monitor for the next 20 minutes — we're deploying." "We just deployed a1b2c3d — did any of the API monitors get worse?"
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.
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.
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 mcp add fettle --env FETTLE_API_KEY=fettle_your_key_here -- npx -y fettle-mcp
codex mcp add fettle --env FETTLE_API_KEY=fettle_your_key_here -- npx -y fettle-mcp
Or by hand in ~/.codex/config.toml (.codex/config.toml for one trusted project):
[mcp_servers.fettle]
command = "npx" args = ["-y", "fettle-mcp"]
[mcp_servers.fettle.env] FETTLE_API_KEY = "fettle_your_key_here"
~/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/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" } } } }
~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": { "fettle": { "command": "npx", "args": ["-y", "fettle-mcp"], "env": { "FETTLE_API_KEY": "fettle_your_key_here" } } } }
| Variable | Required | Default | What it does |
|---|---|---|---|
FETTLE_API_KEY | yes | — | Your API key. The server refuses to start without it. |
FETTLE_API_URL | no | https://api.fettle.sh | Point the server at a different API. You will not normally set this. |
FETTLE_TIMEOUT_MS | no | 30000 | How long one tool call may take before it is abandoned. |
56 tools, grouped by what they work on. Read-scope keys can call the read ones; everything marked write needs a write-scope key.
Every tool carries the MCP hints readOnlyHint, destructiveHint, idempotentHint and openWorldHint, so a client can tell reads from changes without parsing names and ask for confirmation only where it matters. Only the five delete_* tools are destructive. preview_maintenance_window and check_target are marked read-only although they need a write-scope key: they change nothing. check_now and check_target reach the target host, so they are open-world.
Every tool whose result is a JSON object declares an outputSchema and returns the result as structuredContent as well as text, so a client can read typed fields instead of parsing the text. The four exceptions return the text only: list_monitors (its compact rows) and the three tools whose result is a list — list_active_maintenance, preview_maintenance_window and list_channels.
| Tool | Scope | What it does |
|---|---|---|
list_monitors | read | List monitors compactly; filter by type, status, tags; sort by status, SSL expiry, latency. |
get_monitor | read | Read one monitor's configuration and status by id, with certificate and domain expiry. |
check_target | write | Probe a target once from one region before creating a monitor for it. |
create_monitor | write | Create a monitor that checks a URL, host or port on a schedule; opt in to domain expiry. |
bulk_create_monitors | write | Create up to 100 monitors in one call — all of them or none. |
update_monitor | write | Change an existing monitor's settings. |
bulk_update_monitors | write | Set the same interval, regions, channels or thresholds on up to 100 monitors, all or nothing. |
pause_monitor | write | Stop checking a monitor without deleting it. For a deploy, use a maintenance window. |
bulk_pause_monitors | write | Pause up to 100 monitors in one call, all or nothing. |
resume_monitor | write | Resume checks on a paused monitor. |
bulk_resume_monitors | write | Resume up to 100 paused monitors in one call, all or nothing. |
delete_monitor | write | Soft-delete a monitor: it stops being checked and leaves the monitor list. |
check_now | write | Re-arm a monitor to run on the next scheduler tick instead of waiting out its interval. |
get_exposed_ports_preset | read | Database and admin ports that should not be reachable from the internet. |
| Tool | Scope | What it does |
|---|---|---|
get_uptime_summary | read | Uptime, average response time and incident counts over 24h / 7d / 30d at once. |
get_uptime_daily | read | A monitor's uptime for each UTC day, oldest first. |
get_response_time_by_region | read | Per-region response time over 24h, 7d or 30d with percentiles, plus the current slowdown. |
list_check_results | read | Individual check results of a monitor, newest first, filtered by region, status or period. |
| Tool | Scope | What it does |
|---|---|---|
list_incidents | read | List incidents by monitor, status, cause or period; newest first or open unacknowledged first. |
get_incident | read | Read one incident with its cause, every alert attempt and how it was acknowledged. |
get_incident_diagnosis | read | What changed around a monitor incident, with a repro command and the next calls to make. |
get_incident_context | read | Per-region checks, a timeline, downtime periods and who acknowledged an incident, by name. |
acknowledge_incident | write | Acknowledge an open incident so repeat notifications stop. |
| Tool | Scope | What it does |
|---|---|---|
record_deploy | write | Record a deploy so verify_deploy shows it and a later incident can name it as the suspect. |
verify_deploy | read | Compare monitors before and after a deploy, per region, without running a check. |
list_changes | read | Confirmed DNS answer and certificate changes; empty until the change feed is on. |
| Tool | Scope | What it does |
|---|---|---|
list_heartbeats | read | List heartbeat (cron / dead-man's-switch) monitors and when each was last pinged. |
get_heartbeat | read | Read one heartbeat, including its ping URL and when it will be reported late. |
create_heartbeat | write | Create a heartbeat monitor and get the URL a scheduled job should ping. |
update_heartbeat | write | Change a heartbeat's name, period, grace, channels or tags. |
pause_heartbeat | write | Pause a heartbeat: it is not reported late and its pings are ignored. |
resume_heartbeat | write | Resume a paused heartbeat. |
delete_heartbeat | write | Delete a heartbeat for good; its ping URL stops working. |
| Tool | Scope | What it does |
|---|---|---|
list_maintenance_windows | read | List maintenance windows (one-time or recurring, organization-wide or per monitor). |
list_active_maintenance | read | The maintenance windows in effect right now. |
get_maintenance_window | read | Read one maintenance window with its next three occurrences. |
preview_maintenance_window | write | Show the next three occurrences a schedule would produce, without saving it. |
create_maintenance_window | write | Create a window that silences alerts, once or on an iCal RRULE schedule. |
update_maintenance_window | write | Change a maintenance window. |
delete_maintenance_window | write | Delete a maintenance window; alerts resume at once. |
| Tool | Scope | What it does |
|---|---|---|
list_tags | read | List every tag in the organization with how many monitors and heartbeats carry it. |
bulk_update_monitor_tags | write | Add and/or remove tags across up to 300 monitors in one call. |
| bulk_update_heartbeat_tags | write | Add and/or remove tags across up to 300 heartbeats in one call.
只显示了开头部分;其余内容请在仓库中阅读