Show HN: Inspect any MCP server – latency, token usage, and security scans A new open-source web tool, remote-mcp-server-tester (also available as mcp-tester), lets developers inspect any Model Context Protocol (MCP) server by browsing its tools, resources, and prompts, measuring fetch latency, estimating token usage, scoring tool definition quality, and comparing two servers side by side. The tool, hosted on Render's free tier with a live demo, includes features such as token counting for Claude API, OpenAI GPT-4o, and GPT-4, an LLM Readiness Score grading tool definitions A–F, and a heuristic scan for MCP tool poisoning attacks. It supports multiple authentication methods including OAuth2 and SSO, and is installable via pip or from GitHub. A web-based tool for inspecting Model Context Protocol MCP https://modelcontextprotocol.io servers. Connect to any MCP server, browse its Tools, Resources, and Prompts , measure fetch latency, estimate token usage, score the quality of tool definitions , and compare two servers side by side . πŸ”— Live demo: https://mcp-tester-gsei.onrender.com Hosted on Render's free tier β€” the first request after a period of inactivity may take ~50 seconds to wake the server. Claude-API features deep scan, Claude token counting are disabled in the demo; run it locally to use them. | Feature | Details | |---|---| Tool inspection | Lists all tools with name, description, parameter breakdown, and input schema | Resource inspection | Lists all resources with URI, name, mimeType; read any resource to view its contents | Prompt inspection | Lists all prompts with arguments; fill in arguments and render the prompt messages | Token counting | Four provider options: Generic estimate ~4 chars/token , Claude API accurate, uses count tokens , OpenAI GPT-4o / o-series tiktoken o200k base , OpenAI GPT-4 / GPT-3.5 tiktoken cl100k base | Fetch timing | Shows MCP server fetch time, roundtrip time, and a per-phase timing breakdown waterfall | Auth Inspector | After connecting, shows the auth method used, headers sent, decoded access token claims exp, iss, sub, scope , and OAuth endpoints; SSO access tokens are cached and reused until expiry | LLM Readiness Score | Grades tool definitions A–F across 5 dimensions; highlights which tools need improvement | Tool Poisoning Risk | Heuristic scan for MCP tool poisoning attacks hidden Unicode, prompt-injection phrasing, credential-exfiltration hints, hidden HTML comments plus "rug pull" detection tool description/schema silently changed since last connect to the same server ; optional deeper scan via the Claude API | Compare Mode | Connects to two servers in parallel and compares performance, tokens, quality scores, and documentation | Multiple auth methods | None Β· Bearer Token Β· OAuth2 Client Credentials Β· SSO Authorization Code + PKCE Β· Custom Header | SSO auto-discovery | Discovers OAuth endpoints from /.well-known/oauth-authorization-server and MCP WWW-Authenticate headers | Dynamic Client Registration | Registers an OAuth client automatically RFC 7591 β€” no Client ID required | Protocol Messages | Collapsible history of all MCP JSON-RPC calls made during the session β€” initialize , tools/list , resources/list , prompts/list , tools/call , resources/read , prompts/get | Multiple transports | Streamable HTTP MCP 2025 and SSE, with automatic fallback | Connection history | Remembers the last 8 connections in the browser | - Python 3.11+ uv https://docs.astral.sh/uv/ recommended or pip pip install remote-mcp-server-tester To also enable the OpenAI GPT-4o / GPT-4 token counting providers via tiktoken : pip install remote-mcp-server-tester openai This installs two equivalent console script commands β€” remote-mcp-server-tester full name and mcp-tester short alias β€” see Quick Start quick-start . git clone https://github.com/ytkoka/mcp-tester.git cd mcp-tester uv venv uv pip install \ "mcp =1.0.0" \ "fastapi =0.100.0" \ "uvicorn standard =0.20.0" \ "httpx =0.25.0" git clone https://github.com/ytkoka/mcp-tester.git cd mcp-tester python -m venv .venv source .venv/bin/activate Windows: .venv\Scripts\activate pip install \ "mcp =1.0.0" \ "fastapi =0.100.0" \ "uvicorn standard =0.20.0" \ "httpx =0.25.0" To enable the OpenAI GPT-4o / GPT-4 token counting providers, install tiktoken : uv uv pip install tiktoken pip if using the pip-based setup pip install tiktoken Without it, the OpenAI providers return an error message and the other providers Generic estimate, Claude API continue to work normally. mcp-tester or, using the full package name: remote-mcp-server-tester Both commands are equivalent β€” mcp-tester is just a shorter alias. ./run.sh or .venv/bin/python main.py Open http://localhost:8080 in your browser. | Variable | Default | Description | |---|---|---| PORT | 8080 | Port the server listens on | By default, all features are enabled and the tool connects to any URL you enter β€” ideal for local use, including testing MCP servers on localhost . Most users running locally can ignore this section. When hosting a public demo, set these two variables together: | Variable | Effect | |---|---| HOST=0.0.0.0 | Binds to all network interfaces instead of 127.0.0.1 local-only β€” required by most container platforms | MCP TESTER DEMO MODE=true | Blocks requests to private/internal addresses SSRF protection and disables Claude-API features deep scan, Claude token counting . Heuristic checks and other providers still work. | For finer control, MCP TESTER BLOCK PRIVATE IPS and MCP TESTER DISABLE CLAUDE API can be set individually. - Enter the MCP Server URL e.g. https://api.example.com/mcp - Choose a Transport Auto / Streamable HTTP / SSE - Select an Auth Method and fill in credentials see below - Click Connect & Fetch Tools On connect, the tool simultaneously fetches Tools, Resources, and Prompts from the server. Primitives not supported by the server simply show an empty state β€” no error is raised. The Server Info card shows the server name, protocol version, transport used, and timing: MCP fetch β€” time the backend spent connecting and listing all primitives Roundtrip β€” total elapsed time from the browser click to the displayed result Color coding: green < 500 ms Β· yellow < 2 s Β· red β‰₯ 2 s Click β–Ά Timing breakdown to expand a per-phase waterfall chart showing where time was spent: | Phase | What it measures | |---|---| transport connect | Time to enter the transport context TCP setup for SSE; near-zero for streamable HTTP which connects lazily | initialize | MCP initialize handshake β€” includes the actual TCP connection for streamable HTTP | list tools | Time to call tools/list and receive all tool definitions | list resources | Time to call resources/list shown only if server advertises resources capability | list prompts | Time to call prompts/list shown only if server advertises prompts capability | network overhead | Roundtrip minus MCP fetch β€” browser↔backend network time | Each bar is scaled relative to the longest phase. The percentage column shows each phase's share of the total roundtrip. After a successful connection, an Auth Inspector section appears in the sidebar. It shows the full details of the active authentication β€” useful for troubleshooting auth failures and verifying that credentials are being sent as expected. | Section | Content | |---|---| Auth method | Badge showing the active method SSO PKCE / Bearer Token / OAuth CC / Custom Header / None | Headers sent | The exact HTTP headers sent to the MCP server. Bearer / SSO access tokens are partially masked; click show to reveal the full value or copy to copy it | Access token claims | If the token is a JWT, decoded claims are shown: exp expiry with time remaining β€” yellow if < 10 min, red if expired , iss , sub , scope , aud | OAuth metadata | For SSO and OAuth CC: the discovered or configured issuer , authorization endpoint, token endpoint, client ID, and whether Dynamic Client Registration was used | Access token validity | For OAuth CC: the token lifetime reported by the authorization server expires in | Note:"Access token" is used throughout Auth Inspector to distinguish OAuth credentials from the AI input tokens counted in the Token Summary card. After a successful SSO login, the access token is cached in sessionStorage keyed by the MCP server URL. On subsequent connections to the same server: - If the cached token is still valid with a 60-second buffer before expiry , the OAuth browser popup is skipped and the cached token is used directly. The sidebar shows Using cached access token expires in Xh Xm . - If the token has expired, the full SSO flow runs again automatically. - Click Force re-auth in the Auth Inspector to clear the cached token and trigger a fresh login regardless of expiry. The cache is stored in sessionStorage under the key mcp-token-cache . It is scoped to the current browser tab and is automatically cleared when the tab or window is closed. Switch to the Tools tab. Each tool card shows: - Tool name and parameter count - Estimated or accurate token cost badge, with a color-coded bar relative to the heaviest tool - Expandable view with description, parameter tags required ones are highlighted , and the full input schema β–Ά Execute section to call the tool and view the result inline Use the Search tools… box to filter by name or description. Switch to the Resources tab. Each resource card shows: - Resource name and URI - MIME type badge if provided - Description β–Ά Read button β€” fetches the resource contents from the server and displays them inline- Text content is pretty-printed as JSON when parseable - Binary image blobs are rendered as