HostTracker

io.github.HostTracker由 GitHub 账号 HostTracker 发布v2.1.0更新于 Oct 24, 2026

Website uptime monitoring: run checks from 300+ locations, manage monitors, alerts and incidents

已验证Streamable HTTP可网页运行云端与基础设施安全与监控

概览

AI 生成的概览

HostTracker 托管 MCP 服务器让助手从 300 多个地点执行网站检测,并管理可用性监控、告警、事件与状态页。

可以做什么
  • 从 300 多个地点对任意网址执行即时检测(HTTP/S、ping、TCP 端口、路由追踪、DNS、黑名单、WHOIS、网页速度)并获取结果
  • 列出、查看、创建、编辑、复制、暂停、恢复和删除监控项,支持单个与批量操作
  • 查看可用性汇总、原始检测结果、事件列表与事件详情及评论,并管理维护窗口
  • 管理联系人、联系人组、订阅关系、Webhook 端点及其投递日志
  • 管理公开状态页、发布事件与后续更新,并生成报告
  • 轮询、等待、取消或恢复异步任务,列出可用监测地点,读取账户配额与用量
适用场景
适合希望用自然语言询问某个网站当前是否可用、哪些监控项处于故障状态,或直接创建、暂停、调整监控、告警和状态页工作而不必打开 HostTracker 控制台的场景。
运行要求
需要 HostTracker 账户,并连接到托管的 streamable HTTP 端点。认证方式为 OAuth 2.1 登录并在同意页授权,或在 Authorization 请求头中提供 HostTracker API 令牌(自建副本以 stdio 运行时改用 HT_TOKEN 环境变量)。自建需 Docker 或 .NET 10 SDK;使用 mcp-remote 桥接需 Node.js 18 或更高版本。
安装前请注意
助手可以改动你的监控账户:监控项、维护窗口、联系人、订阅、Webhook 和状态页都可被创建、修改或删除,删除一经确认不可恢复。应只授予最小范围的权限,因为读与写权限互不包含。Bearer 令牌是长期有效的密钥,应尽量避免写入配置文件。调用会消耗你的 API 套餐配额,服务器会以你的令牌把请求转发给 HostTracker API。

安装

在 SourceWeft 中

  1. 打开 控制台中的 HostTracker,将其添加到工作区。
  2. 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.HostTracker%2Fhosttracker/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。

{
  "mcpServers": {
    "hosttracker": {
      "type": "http",
      "url": "https://mcp.host-tracker.com/mcp"
    }
  }
}

README

HostTracker MCP server

[validate] [Smithery] [Glama score] [MIT]

Connect an AI assistant to HostTracker over the Model Context Protocol and let it operate your monitoring account in conversation: run a live check from 300+ global locations, see what is down, create or pause a monitor, schedule a maintenance window, review incidents, manage who gets alerted, wire a webhook, publish a status page update.

Endpoint   https://mcp.host-tracker.com/mcpTransport  streamable HTTPAuth       OAuth 2.1 (sign in when your client asks) - or Authorization: Bearer <HostTracker API token>

This repository is the public face of that hosted server: the connection metadata (server.json), the per-client setup guide (CLIENT.md), and the security policy (SECURITY.md) - and, since 2.0.0, the server's own source code in src/, so you can read exactly what runs behind the endpoint or run a copy yourself (see "Run it yourself" below).

Connect in two minutes

With OAuth (recommended - Claude.ai, Claude Desktop, Claude Code, ChatGPT and any client with an OAuth-capable connector dialog):

  1. Add the endpoint https://mcp.host-tracker.com/mcp as a connector in your client.
  2. Sign in and approve. The client opens HostTracker's sign-in page, then a consent card listing the permissions it asks for (by default: run checks + read monitors). Press Approve. No token ever appears.
  3. Ask in plain language: "is example.com up right now, checked from Europe and Asia?", "which of my monitors are down?", "pause the staging monitor until tomorrow".

Claude Code

With OAuth (no token needed):

sh
claude mcp add --transport http hosttracker https://mcp.host-tracker.com/mcp# then, inside Claude Code: /mcp -> hosttracker -> Authenticate (opens the sign-in + consent page)

Or with a bearer token in the header:

.mcp.json in your project (or ~/.claude.json for a user-wide connector):

json
{  "mcpServers": {    "hosttracker": {      "type": "http",      "url": "https://mcp.host-tracker.com/mcp",      "headers": { "Authorization": "Bearer YOUR_HOSTTRACKER_API_TOKEN" }    }  }}

Or from the command line:

sh
claude mcp add --transport http hosttracker https://mcp.host-tracker.com/mcp \  --header "Authorization: Bearer YOUR_HOSTTRACKER_API_TOKEN"

Claude.ai and Claude Desktop

Settings -> Connectors -> Add custom connector -> paste https://mcp.host-tracker.com/mcp -> Connect. The browser opens HostTracker's sign-in + consent page; press Approve and the connector is live. That is the whole setup.

To use a bearer token instead (for example a long-lived token with a hand-picked scope set), Desktop can also connect through the mcp-remote bridge. Edit claude_desktop_config.json:

json
{  "mcpServers": {    "hosttracker": {      "command": "npx",      "args": [        "-y", "mcp-remote", "https://mcp.host-tracker.com/mcp",        "--header", "Authorization:${HT_AUTH}"      ],      "env": { "HT_AUTH": "Bearer YOUR_HOSTTRACKER_API_TOKEN" }    }  }}

The ${HT_AUTH} indirection is deliberate: some mcp-remote builds split an argument on its first space, which breaks a literal Authorization: Bearer .... Node.js 18 or newer is required.

Cursor

~/.cursor/mcp.json for every project, or .cursor/mcp.json for one:

json
{  "mcpServers": {    "hosttracker": {      "url": "https://mcp.host-tracker.com/mcp",      "headers": { "Authorization": "Bearer YOUR_HOSTTRACKER_API_TOKEN" }    }  }}

VS Code (GitHub Copilot agent mode)

.vscode/mcp.json in the workspace. The inputs block keeps the token out of the file, prompting for it once and storing it in the editor's secret storage:

json
{  "inputs": [    {      "type": "promptString",      "id": "ht-token",      "description": "HostTracker API token",      "password": true    }  ],  "servers": {    "hosttracker": {      "type": "http",      "url": "https://mcp.host-tracker.com/mcp",      "headers": { "Authorization": "Bearer ${input:ht-token}" }    }  }}

Windsurf

~/.codeium/windsurf/mcp_config.json:

json
{  "mcpServers": {    "hosttracker": {      "serverUrl": "https://mcp.host-tracker.com/mcp",      "headers": { "Authorization": "Bearer YOUR_HOSTTRACKER_API_TOKEN" }    }  }}

Run it yourself (Docker)

The hosted endpoint is the normal way to use the server. If you would rather run your own copy - to read the code, audit it, or keep the MCP hop inside your network - the repository builds it from source:

bash
docker build -t hosttracker-mcp https://github.com/HostTracker/mcp.gitdocker run --rm -p 8080:8080 hosttracker-mcp

Your copy then answers at http://localhost:8080/mcp and takes exactly the same Authorization: Bearer header: it is a stateless bridge, so it stores nothing and still talks to the public HostTracker API v2 under your token. Without Docker, dotnet run --project src does the same on any machine with the .NET 10 SDK.

The same binary also speaks stdio, for clients that launch the server as a child process instead of connecting to a URL. Add --stdio and pass your token as the HT_TOKEN environment variable (there is no request header on stdio):

bash
HT_TOKEN=YOUR_HOSTTRACKER_API_TOKEN dotnet run --project src -- --stdiodocker run -i --rm -e HT_TOKEN=YOUR_HOSTTRACKER_API_TOKEN hosttracker-mcp --stdio

Logs go to stderr in that mode, so stdout stays a clean protocol stream.

ChatGPT and other clients

ChatGPT (developer mode -> connectors): add https://mcp.host-tracker.com/mcp; ChatGPT offers its "link account" step, which opens HostTracker's sign-in + consent page. Any other client with an OAuth-capable connector dialog works the same way - just the URL.

Any client that can send a static header also works with a bearer token: the endpoint https://mcp.host-tracker.com/mcp and the header Authorization: Bearer YOUR_HOSTTRACKER_API_TOKEN. Where a client's connector form offers an API-key or custom-header authentication mode, the token goes there.

A generic, dependency-free bridge for anything that can only launch a command:

sh
npx -y mcp-remote https://mcp.host-tracker.com/mcp --header "Authorization:${HT_AUTH}"

Longer walkthroughs, verification commands and troubleshooting live in CLIENT.md.

What the assistant can do

The server exposes the HostTracker v2 REST API as MCP tools. Every list tool takes limit (maximum 50) and cursor and returns the next cursor; every timestamp is Unix seconds in both directions; ids are opaque strings.

FamilyWhat it covers
ChecksRun an instant check on any URL from 300+ locations (HTTP/S, ping, TCP port, traceroute, DNS, blacklist, WHOIS, Web Risk, crawl, page speed), fetch its result, list the available check types and devices.
MonitorsList, read, create, edit, copy, pause, resume and delete monitors, in single or bulk form, plus the catalogue of monitor types.
Results and incidentsUptime summaries, raw check results, the incident list, one incident in detail, and comments on an incident.
MaintenanceList, create, edit and delete maintenance windows so planned work does not raise alerts.
ContactsManage contacts and contact groups, send and confirm a contact confirmation, and send a test alert to one.
SubscriptionsSee who is notified for which monitor, and subscribe or unsubscribe a contact.
WebhooksManage webhook endpoints, send a test delivery, review the delivery log and redeliver a failed one.
Status pagesManage public status pages, publish an incident on one and post follow-up updates.
ReportsGenerate a report and list the report types available on your plan.
JobsPoll, wait on, cancel or resume the asynchronous jobs that bulk operations and reports return.
AccountRead-only: the account profile, its quota and its current usage. Useful for diagnosing a refused call.
LocationsList the checkpoint pools and individual monitoring locations you can target.
Generic doordescribe_api searches the real v2 operations and api_request calls one, for anything without a dedicated tool. It is not a URL proxy: the operation must exist in the published API description, and the safety policy below still applies.
The full tool list
FamilyTools
Checksrun_instant_check, get_check_result, list_check_types
Monitorslist_monitors, get_monitor, create_monitor, update_monitor, delete_monitor, pause_monitor, resume_monitor, copy_monitor, bulk_create_monitors, bulk_update_monitors, bulk_delete_monitors, list_monitor_types
Results and incidentsget_uptime_summary, list_monitor_results, list_incidents, get_incident, comment_incident
Maintenancelist_maintenance, create_maintenance, update_maintenance, delete_maintenance
Contactslist_contacts, get_contact, create_contact, update_contact, delete_contact, send_contact_confirmation, confirm_contact, test_contact, list_contact_groups, create_contact_group, update_contact_group, delete_contact_group
Subscriptionslist_subscriptions, subscribe_contact, unsubscribe_contact
Webhookslist_webhooks, create_webhook, update_webhook, delete_webhook, test_webhook, list_webhook_deliveries, redeliver_webhook
Status pageslist_status_pages, get_status_page, create_status_page, update_status_page, delete_status_page, create_status_page_incident, add_status_page_incident_update
Reportsgenerate_report, list_report_types
Jobsget_job, wait_for_job, cancel_job, resume_job
Accountget_account, get_account_quota, get_account_usage
Locationslist_locations
Generic doordescribe_api, api_request

Three behaviours worth knowing before the first call:

  • Bulk operations validate first. A bulk tool returns a validation report; the write needs an explicit second call with submit=true. Bulk deletion additionally needs confirmed=true and the count the validation pass reported, so a selection that drifted in between is refused.
  • Bulk operations and reports are asynchronous. They answer with a job id; poll it with wait_for_job.
  • Deleting anything is not undoable, so it always takes two calls. A delete tool's first call removes nothing - it returns the resource so the assistant can show you what is about to go - and only a repeat call with confirmed=true deletes. The API returns a receipt listing what was removed.

Authentication and scopes

Two ways in, same permission model:

  • OAuth (connected apps). The client registers itself, you sign in once and approve a scope set on the consent page, and the server mints short-lived access tokens (1 hour) with rotating refresh tokens (90 days) behind the scenes. If the client requests no scopes it gets check + monitor:read. The account family is never grantable to a connected app. Every connection is listed under Integrations -> API -> Connected apps, where one click revokes it (the app then has to ask you again). A tool that needs a scope the connection lacks answers missing_scope naming what is required - reconnect and approve the wider set.
  • Bearer tokens. Mint them at Integrations -> API with a hand-picked scope set, expiration and optional IP allow-list; pass them in the Authorization header.

Scopes are per family with :read and :write leaves that do not imply each other; a bare family name satisfies every leaf under it.

You want the assistant toScopes
Run instant checkscheck
See monitors, uptime and incidentsmonitor:read
Create, edit, pause or delete monitors and maintenancemonitor:write
See who is notifiedcontact:read, subs:read
Manage contacts and subscriptionscontact:write, subs:write
Manage webhookswebhook:read, webhook:write
Manage status pages and publish incidentsstatuspage:read, statuspage:write
Read quota, usage and limitsaccount:read (bearer tokens only - not offered to OAuth connections)

Grant the narrowest set that covers the work. There is never a reason to grant account:write: the server refuses every write under /account regardless of what the token allows. If a call comes back refused, ask the assistant to run get_account_quota, which reports the scopes the token actually carries.

Limits and quota

  • The endpoint rate-limits each client IP on /mcp. A limited response carries Retry-After, which the server passes through as a value; it never sleeps or retries on your behalf, so the assistant decides what to do.
  • Your API plan quota is enforced against your own token, exactly as it is for direct REST calls. get_account_usage and get_account_quota report where you stand. Details in the errors and limits guide.
  • Application failures (no token, wrong scope, quota exhausted, invalid input) come back as ordinary tool results with an actionable message rather than a protocol error.

Safety

The server is stateless and stores nothing: every call is forwarded to the API under your own token, and all ownership, quota and rate enforcement happens there. On top of that it refuses, at the server, regardless of the token: any write under /account, and anything touching payments, plans, passwords, login or the minting of API tokens. Content that a checked target controls is wrapped in a fenced, length-capped block before it reaches the model, so a hostile target cannot inject instructions into your assistant. Full policy in SECURITY.md.

Links

License

The contents of this repository (documentation and metadata) are released under the MIT license. The hosted MCP server and the HostTracker service itself are proprietary.

来源:README.md,提交 d9598c4

工具

0
该服务器需要登录,因此 SourceWeft 无法在没有账号的情况下读取其工具,也未收录。已连接账号所能看到的内容可能因账号及其权限而异。

版本历史

1
  1. v2.1.0最新Sep 16, 2026

评分

已满足适用检查项的 85%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分