mcp-pulse

io.github.ondraulehlav0.1.1更新於 Oct 3, 2026

Health and token cost of every remote MCP registry server, probed daily. Look up, search, or probe.

已驗證Streamable HTTP可網頁執行Developer ToolsSecurity & MonitoringData & Analytics

概覽

AI 產生的概覽

讓助理查詢、搜尋並即時探測遠端 MCP 登錄檔伺服器,了解其可用性、驗證、付費與工具 token 成本。

功能
mcp-pulse 透過 Streamable HTTP 提供四個工具:lookup_server、search_servers、check_server 與 registry_summary。它提供官方 MCP 登錄檔中每個遠端伺服器的每日探測結果,包括 initialize 與 tools/list 是否成功、延遲、協商出的協定版本、驗證方式、是否要求付費、工具數量,以及工具定義的 token 成本。check_server 可對單一 URL 進行即時探測,search_servers 支援全文搜尋、篩選與排序。
適用情境
適合在挑選或稽核 MCP 伺服器時使用:確認伺服器是否存活、是否需要驗證或付費,以及其工具定義會佔用多少上下文 token。也適合比較提供相同工具集的伺服器,或查看某個伺服器的歷史紀錄。
執行需求
需要一個遠端 Streamable HTTP 端點 金鑰或環境變數。助理需要能連線至該主機的網路。
安裝前請注意
此伺服器只讀取公開的登錄檔與探測資料,不會代替你寫入、傳送或刪除任何內容。即時檢查會把目標伺服器 URL 傳送給第三方服務;探測結果由單一分詞器估算,token 數可能與你的用戶端不同。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 mcp-pulse,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "mcp-pulse": {
      "type": "http",
      "url": "https://mcp-pulse.ulehla.dev/mcp"
    }
  }
}

README

mcp-pulse

[CI] [npm mcptop] [license]

Is that MCP server alive, and what does it cost your context window?

Live board: mcp-pulse.ulehla.dev

mcp-pulse probes every remote server in the official MCP registry and records, for each one:

  • whether it answers initialize and tools/list, and how fast
  • the protocol version it negotiates
  • whether it needs auth, and which scheme (from WWW-Authenticate)
  • whether it asks for payment (HTTP 402)
  • how many tools it has and how many tokens their definitions cost

mcptop: what do your own servers cost?

bash
npx mcptop                     # reads Claude Code, Claude Desktop, Cursor, VS Code, Windsurf and Gemini CLI configsnpx mcptop --config .mcp.json  # one filenpx mcptop --budget 30000      # exit 1 when the total is above the budget, for CI

It starts every configured server the way your client does, lists the tools and prints the token cost per server and in total. See packages/mcptop.

The board

mcp-pulse.ulehla.dev is rendered on the edge from a D1 database, ships no JavaScript, and refreshes every night.

  • Overview: the share of servers that answer, token cost percentiles, and a form to check any server
  • Check: probes one URL live, with the same steps as the daily run; the exact token count runs in the browser
  • Statistics: results by cause, token cost and tool count percentiles, the heaviest tool sets, protocol versions, auth schemes, transports, biggest publishers
  • Servers: full-text search over name, title, description and host (word prefixes, so git copilot finds the GitHub Copilot servers), filters by result, protocol and transport, seven sorts, and every filter is a plain URL you can share
  • Server page: status, latency, protocol, capabilities, the most expensive tools, servers with the same tool set, history, and the badge
  • Hosts: the 500 biggest publishers with how many distinct tool sets they actually serve

For agents and scripts

  • JSON: /api/s/<name>.json, /api/servers.json?q=…&status=ok&sort=tokens, /api/check.json?url=…, /api/summary.json
  • MCP server over Streamable HTTP, no auth: https://mcp-pulse.ulehla.dev/mcp with the tools lookup_server, search_servers, check_server, registry_summary. The manifest for the registry is site/server.json.
  • /llms.txt lists all of it. /tokens answers the general question: how many context tokens does an MCP server cost.

Each server on the board gets a page and a badge:

markdown
[![mcp-pulse](https://mcp-pulse.ulehla.dev/badge/io.github.you/your-server.svg)](https://mcp-pulse.ulehla.dev/s/io.github.you/your-server)

First full run, 2026-10-03

The registry held 38 942 latest entries. 24 294 of them have a remote endpoint, and the probe connected to all of them in 40 minutes.

ResultServersShare
alive: initialize and tools/list succeed12 97553 %
needs auth (401, 403)5 83624 %
not MCP: HTTP 200 but no valid MCP reply1 8007 %
not found (404, 405, 410)8814 %
no DNS7283 %
rate limited (429)5002 %
payment required (402)4342 %
server error (5xx)3491 %
other3071 %
TLS error2591 %
timeout2041 %
refused210 %

Of the 12 975 servers that answered:

  • the median tool set costs 1 727 tokens, the 90th percentile 7 429, the 99th 28 200
  • 208 servers cost more than 20 000 tokens, 46 more than 50 000, and 3 more than a whole 200k window
  • the heaviest is com.replynodes/mcp: 66 tools, 431 925 tokens
  • the median server has 8 tools, the largest 1 385
  • median initialize latency is 455 ms, the 90th percentile 1.5 s
  • 60 % negotiate protocol 2025-11-25, 24 % still 2025-03-26, 4 % 2024-11-05
  • 122 servers answer with protocol 2026-07-28, which the current TypeScript SDK rejects

The registry is lumpy. 16 161 of 16 534 hosts publish one server. Five hosts publish more than 6 000 entries between them: one Workers subdomain with 2 365 near-identical entries, a gateway with 1 716 entries of which 1 321 return a JSON-RPC error on initialize, and a host with 276 entries that all answer 402.

How it works

registry ──▶ probe/run.ts ──▶ data/raw/probe-run.json                                   │                        probe/build-data.ts                                   │               data/latest/{servers,summary,hosts}.json                                   │                           probe/to-sql.ts ──▶ import.sql ──▶ D1                                                                │                              site/ (Astro on Workers) ◀────────┘
  • packages/mcptop/ the library and the CLI mcptop: registry client, remote and stdio probe, config discovery, token counting
  • probe/ the batch runner and the data pipeline
  • site/ the board: Astro 7 with the Cloudflare adapter on Workers, rendered from D1 with FTS5 search, SVG badges, no client JavaScript
  • .github/workflows/probe.yml runs the whole pipeline daily and commits summary.json and hosts.json
  • .github/workflows/deploy.yml deploys the site when site/ changes

Methodology

  • Transport. The probe uses the official TypeScript SDK as a client. Streamable HTTP first, SSE when that is the only remote.
  • No GET stream. The probe answers 405 to the SDK's standalone GET, so it never opens a server-to-client stream. The probe needs no server-initiated messages, and some servers stall tools/list while that stream is open (DeepWiki held it for 15 s and never answered the POST meanwhile).
  • Token count. Each tool is serialised as compact JSON with name, description and input_schema, and counted with the o200k_base tokenizer. Clients wrap tool definitions differently, so this is an estimate. It is the same estimate for every server, which makes the numbers comparable.
  • Same tool set. A hash of the sorted tool names and schema sizes marks servers that serve identical tools under different names.
  • Timeouts. 15 seconds per request. At most one probe runs against a host at a time.
  • Identification. Every request carries the User-Agent mcp-pulse/<version> (+https://github.com/ondraulehla/mcp-pulse). To exclude a server, open an issue with its registry name.

Run it

bash
npm installnpm run probe -- --sample 200 --per-host 2        # a sample, results in data/samples/npm run probe -- --all --out data/raw/probe-run.jsonnode --import tsx probe/build-data.ts --in data/raw/probe-run.json --out data/latestnode --import tsx probe/to-sql.ts --in data/latest --out data/latest/import.sqlnpm test --workspaces --if-present

Site, locally against a local D1:

bash
cd sitenpm run db:schema:local && npm run db:import:localnpm run dev

Deploying needs a Cloudflare account with a D1 database named mcp-pulse (wrangler d1 create mcp-pulse, then put the id in site/wrangler.jsonc). The workflows expect the repository secrets CLOUDFLARE_API_TOKEN (Workers Scripts: Edit, D1: Edit) and CLOUDFLARE_ACCOUNT_ID.

Licence

MIT

來源:README.md,提交 57782de

工具

0
工具後設資料尚未被收錄。

版本歷史

1
  1. v0.1.1最新Oct 3, 2026