Skip to main content
Glama

mcp-www

npm version License: MIT Node.js >= 18

DNS-based MCP service discovery and installation.

Problem

Agents need to discover MCP servers, but current approaches lean on centralized registries or hardcoded configurations. This creates single points of failure, adds deployment overhead, and forces agents into walled gardens. There should be a way to discover MCP services using infrastructure that already exists everywhere: DNS.

Related MCP server: mcp-server-find

How It Works

mcp-www is itself a standard MCP server. An agent connects to it the same way it connects to any other MCP server — no new client code, no special SDK, no registry signup.

Once connected, the agent calls discover with a domain name. mcp-www performs a standard UDP DNS TXT lookup for _mcp.{domain}, parses the records, and returns all advertised MCP servers. Then browse connects to those servers and retrieves their full manifests. Finally, install generates the config to permanently add a server to the user's MCP client.

Agent  →  mcp-www  →  discover("example.com")  →  DNS TXT lookup
                   →  browse("example.com")     →  server card GET with MCP handshake fallback
                   →  install("example.com")    →  config for Claude Desktop / VS Code / Cursor / Windsurf

No HTTP registry in the loop. The DNS infrastructure is the registry.

Install

npm install -g mcp-www

Or use directly with npx:

npx mcp-www

Claude Code / MCP Client Config

Add to your MCP client config (e.g., .mcp.json):

{
  "mcpServers": {
    "mcp-www": {
      "type": "stdio",
      "command": "npx",
      "args": ["mcp-www"]
    }
  }
}

Try It

korm.co publishes a live _mcp TXT record. You can discover and interact with it end-to-end:

discover("korm.co")            → DNS lookup, returns all _mcp TXT records
discover_browse("korm.co")     → DNS + server card in one call, init as fallback
browse({ domain: "korm.co" })  → server card first, MCP handshake as fallback
call_remote_tool("https://mcp.korm.co", "browse_posts")  → returns blog articles
read_remote_resource("https://mcp.korm.co", "korm://bio") → reads author bio
get_remote_prompt("https://mcp.korm.co", "recommend-post", { "topic": "AI" }) → gets prompt
install({ domain: "korm.co" }) → generates config to add to your MCP client

Key Design Points

  • Uses UDP DNS (port 53) for lookups — the lightest possible network primitive. A single UDP packet out, a single packet back.

  • The DNS infrastructure IS the registry — no additional servers to deploy, no uptime to maintain, no accounts to create. If you can publish a TXT record, you can advertise your MCP server.

  • mcp-www is a standard MCP server — any MCP-compliant agent can use it with zero new client code.

  • Multiple TXT records supported — a domain can publish multiple _mcp TXT records, each advertising a different MCP server. For example, a public content server alongside an authenticated API:

    _mcp.example.com  TXT  "v=mcp1; src=https://mcp.example.com; auth=none"
    _mcp.example.com  TXT  "v=mcp1; src=https://api.example.com/mcp; auth=oauth2"

    discover returns all records — the agent decides which to connect to based on auth requirements and capabilities. How agents should select between multiple servers for the same domain is an open question.

  • Works with split-horizon DNS — enterprise and private networks can publish internal _mcp records visible only inside their network.

  • Allows overriding the default system DNS resolver via environment variable: MCP_DNS_SERVER=192.168.68.133:5335 npx mcp-www

Tools

discover

DNS-only lookup. Returns all _mcp.{domain} TXT records — there can be multiple, each advertising a different MCP server. Supports single domain or batch lookup.

{ "tool": "discover", "arguments": { "domain": "example.com" } }
{ "tool": "discover", "arguments": { "domains": ["example.com", "acme.org"] } }

discover_browse

DNS lookup + server card in one call. Looks up all _mcp.{domain} TXT records, then fetches .well-known/mcp.json for server metadata. Only falls back to MCP initialize if no server card is found.

{ "tool": "discover_browse", "arguments": { "domain": "example.com" } }

browse

Inspect a domain or server URL. Tries .well-known/mcp.json (server card) first, only falls back to MCP initialize handshake if no server card is found. For domains: also performs DNS lookup for _mcp TXT records.

{ "tool": "browse", "arguments": { "domain": "example.com" } }
{ "tool": "browse", "arguments": { "url": "https://mcp.example.com" } }

call_remote_tool

Call a tool on a remote MCP server. Use browse first to discover available tools, then use this to execute them.

{
  "tool": "call_remote_tool",
  "arguments": {
    "url": "https://mcp.example.com",
    "tool": "list_articles",
    "arguments": { "limit": 5 }
  }
}

read_remote_resource

Read a resource from a remote MCP server by its URI.

{
  "tool": "read_remote_resource",
  "arguments": {
    "url": "https://mcp.example.com",
    "uri": "korm://bio"
  }
}

get_remote_prompt

Get a prompt from a remote MCP server with optional arguments.

{
  "tool": "get_remote_prompt",
  "arguments": {
    "url": "https://mcp.example.com",
    "prompt": "recommend-post",
    "arguments": { "topic": "AI vision" }
  }
}

install

Generate client configuration to permanently add a discovered MCP server. Returns config file paths and JSON entries for Claude Desktop, VS Code, Cursor, and Windsurf. The agent reads the target config file, merges the entry, and writes it back.

{ "tool": "install", "arguments": { "domain": "example.com" } }
{ "tool": "install", "arguments": { "url": "https://mcp.example.com", "name": "my-server" } }

Status

Working. The server implements DNS-based discovery, server inspection, remote tool calling, resource reading, prompt retrieval, and client installation over the Streamable HTTP transport.

Note: DNS-based MCP discovery via _mcp TXT records is currently in pre-SEP research status — it is not yet a ratified part of the Model Context Protocol specification. See Discussion #2334 and Discussion #2368 for ongoing work. The format and behavior may change as the specification evolves.

Feedback, criticism, and alternative approaches are welcome — open an issue or start a discussion.

Security

DNS-based trust model

Because mcp-www uses DNS TXT records for discovery, domain ownership is enforced by DNS infrastructure itself — only the domain owner (or their DNS provider) can publish _mcp TXT records. This is inherently stronger than centralized registries, which introduce a single point of compromise.

IDN homograph attack detection

mcp-www detects IDN homograph attacks on all domain lookups. These attacks use visually identical characters from different Unicode scripts (e.g., Cyrillic "a" vs Latin "a") to spoof legitimate domains.

Detection covers:

  • Punycode-encoded domains — labels starting with xn-- (the ASCII encoding of internationalized domain names)

  • Mixed-script labels — a single label containing characters from multiple scripts (e.g., Latin + Cyrillic)

  • Non-Latin labels — fully Cyrillic/Greek labels that could visually mimic common Latin domains

When detected, a prominent warning is surfaced as a separate content block, instructing the agent to verify the domain with the user before proceeding. Lookups are not blocked — the warning is informational.

Additional considerations

  • No implicit trust — mcp-www discovers and inspects remote servers, but tool execution (call_remote_tool) is always an explicit agent action.

  • Split-horizon DNS — private/internal _mcp records are only resolvable within the network they're published on.

  • Unicode normalization — all domain inputs are NFC-normalized before lookup.

License

MIT

Available Tools

7 tools
browseA

Inspect a domain or server URL. Tries .well-known/mcp.json (server card) first, only falls back to MCP initialize handshake if no server card is found. For domains: also performs DNS lookup for _mcp TXT records.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoDirect MCP server URL to inspect (e.g., 'https://mcp.example.com')
domainNoDomain to browse (e.g., 'example.com') — runs parallel server card + MCP handshake

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full transparency burden. It fully discloses the behavioral traits: the order of attempts (server card first, then MCP handshake), and for domains, the DNS lookup for _mcp TXT records. This goes beyond a generic 'inspect' and gives the agent a clear model of what happens when the tool is invoked.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured. It opens with the primary purpose, then succinctly explains the probing logic and domain-specific extra step. Every sentence earns its place, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, no annotations, and no output schema, the description provides a thorough explanation of the tool's behavior but does not describe the return value or structure of the inspection result. This is a minor gap, as the agent may need to know what 'inspect' returns, but the core usage is well-covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides clear descriptions for both url and domain parameters. The description adds additional value by explicitly stating that for domains, DNS lookup for _mcp TXT records is performed, which is not mentioned in the schema. This clarifies behavioral differences between the two parameters and enriches parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Inspect a domain or server URL.' It further distinguishes itself by detailing the exact probing behavior—well-known/mcp.json first, then MCP initialize handshake, plus DNS lookup for domains—making it specific and distinguishable from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it: for inspecting a server or domain's MCP compatibility. It clearly explains the two modes (URL vs domain) and the fallback sequence, but it does not explicitly mention alternatives or exclusions relative to sibling tools like discover or discover_browse. Still, the usage context is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

call_remote_toolA

Call a tool on a remote MCP server. Use browse first to discover available tools, then use this to execute them.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe MCP server URL (e.g., 'https://mcp.example.com')
toolYesThe name of the tool to call on the remote server
argumentsNoArguments to pass to the remote tool

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It reveals the execution nature of the tool but lacks disclosure of potential risks (e.g., executing arbitrary remote tools), authentication requirements, error handling, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a concise two-sentence structure that front-loads the action and provides a clear sequential instruction. No unnecessary wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the core purpose and usage sequence but omits important context such as return format, error handling, and security considerations. Given that this is a remote execution tool, these gaps are more significant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter (url, tool, arguments) having a description. The tool description adds no additional parameter-specific meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it calls a tool on a remote MCP server. The verb 'call' and resource 'remote MCP server' are specific, and the description distinguishes from sibling discovery tools like browse and discover.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to use browse first for discovery, providing a clear usage sequence. However, it does not mention when not to use this tool or alternatives for other operations like reading resources.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discoverA

DNS-only lookup. Returns all _mcp.{domain} TXT records — there can be multiple, each advertising a different MCP server. Fast, cheap, no HTTP calls. Supports single domain or batch lookup across multiple domains.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoA single domain to look up (e.g., 'example.com')
domainsNoMultiple domains to look up in parallel

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It discloses that the tool performs DNS-only lookups (no HTTP), returns multiple TXT records each advertising a different server, and supports parallel batch lookup. This adds useful context beyond the schema, though it omits details like error handling or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the core purpose ('DNS-only lookup'), and every sentence adds value—covering return payload, performance characteristics, and batch capability. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema, the description adequately explains the return format (TXT records, potentially multiple). It covers the main use cases (single and batch), behavior, and performance. It lacks details on error scenarios or domain validation, but for a simple DNS lookup tool, the description provides sufficient context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes both parameters with 100% coverage, so the baseline is 3. The description adds only a minor clarification about single vs. batch lookup, which is already implied by the schema's parameter names and descriptions. No significant additional semantics are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs a DNS-only lookup of _mcp.{domain} TXT records, which is a specific verb+resource combination. It also distinguishes from sibling tools like discover_browse by emphasizing 'DNS-only' and 'no HTTP calls', setting it apart as a lightweight alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through phrases like 'fast, cheap, no HTTP calls' and mentions support for batch lookup, but it does not explicitly name alternatives or provide when-not-to-use conditions. The context is clear but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_browseA

DNS lookup + server card in one call. Looks up all _mcp.{domain} TXT records, then fetches .well-known/mcp.json for server metadata. Only falls back to MCP initialize if no server card is found. Lighter than browse — no MCP session unless needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe domain to discover and browse (e.g., 'example.com')

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It transparently explains the sequence of operations (DNS lookup, fetching server metadata, fallback to initialize) and the lightweight nature (no MCP session unless needed). This provides meaningful context beyond the schema, though it does not address potential errors or outputs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exceptionally concise at two sentences. It front-loads the core purpose ('DNS lookup + server card in one call') and every subsequent sentence adds necessary detail about behavior and comparison to alternatives. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a composite tool with no annotations and no output schema, the description covers the workflow and fallback behavior, which is sufficient for most usage. It does not explicitly describe return values, but given the step-by-step explanation and the simplicity of the single parameter, the context provided is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage for the single parameter 'domain' with a clear description. The tool description does not add additional parameter-level information; it only references the domain implicitly. Since the schema is highly descriptive, a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'DNS lookup + server card in one call' and details the specific actions (looks up TXT records, fetches .well-known/mcp.json). It also distinguishes itself from sibling 'browse' by noting it is 'lighter' and does not create an MCP session unless needed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context by comparing with 'browse' ('Lighter than browse — no MCP session unless needed') and explains the fallback condition ('Only falls back to MCP initialize if no server card is found'). However, it does not explicitly mention when not to use the tool or how it relates to 'discover' and other siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_remote_promptA

Get a prompt from a remote MCP server. Use browse first to see available prompts, then use this to retrieve one with optional arguments.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe MCP server URL (e.g., 'https://mcp.example.com')
promptYesThe name of the prompt to get
argumentsNoArguments to pass to the prompt

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of disclosing behavior. It explains the core retrieval action and the prerequisite browse step, but it does not mention error handling, authentication, network requirements, or return format. It is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, purpose-first, and contains no redundant information. Every clause earns its place, and it is perfectly sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple read operation, the description covers the essential purpose, parameter guidance (optional arguments), and a usage step. However, the lack of an output schema and annotations means the agent must infer the return value and potential errors, which prevents a perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – all three parameters are described in the schema. The description adds only that arguments are optional, which is already implied by the schema (arguments is not in required). It does not provide significant additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get a prompt') and the resource ('remote MCP server'), and it distinguishes this tool from siblings like browse by positioning it as the retrieval step after browsing. It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit usage context: 'Use browse first to see available prompts, then use this to retrieve one.' This guides the agent on sequencing and purpose. However, it does not mention when not to use the tool or compare it with alternatives like call_remote_tool, so it stops short of full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

installA

Generate client configuration to permanently register a discovered MCP server. Returns config file paths and JSON entries for Claude Desktop, VS Code, Cursor, and Windsurf. The agent should then read the target config file, merge the entry, and write it back. Accepts a server URL directly or a domain (runs discovery first).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe MCP server URL to register (e.g., 'https://mcp.example.com')
nameNoFriendly name for the server entry (auto-derived from domain/URL if omitted)
domainNoDomain to discover first, then register the found server URL

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility. It discloses the tool's behavior well: generates configuration rather than directly writing files, returns paths and JSON entries, and automatically runs discovery when a domain is provided. Missing details like conflict handling or permission requirements, but otherwise transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each with distinct content: purpose, return value, required next steps, and parameter modes. Efficient and front-loaded, with no redundant or filler wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and no annotations, the description covers purpose, output format, workflow, and parameter selection. It would benefit from explicit error handling or conflict behavior, but the core context is complete for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, giving a baseline of 3. The description adds value by clarifying relationships: url and domain are alternatives (domain triggers discovery), and name is auto-derived if omitted—information beyond individual schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair: 'Generate client configuration to permanently register a discovered MCP server.' It clearly states what the tool does and returns (config file paths and JSON entries) for multiple client applications, distinguishing it from siblings like discover and browse.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear usage context: accepts a server URL directly or a domain (runs discovery first), and explains the follow-up workflow (read config file, merge entry, write back). However, it does not explicitly name alternatives or state 'when not to use,' though the distinction from discover is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_remote_resourceA

Read a resource from a remote MCP server. Use browse first to see available resources, then use this to read one by its URI.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesThe resource URI to read (e.g., 'file:///path/to/file')
urlYesThe MCP server URL (e.g., 'https://mcp.example.com')

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only discloses the read action and the need to browse first. It does not mention return format, error behavior, or side effects beyond the implied read-only nature. The workflow hint adds some value, but transparency is limited.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with the purpose stated first and usage guidance second. It contains no filler or redundant information, making it appropriately concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with two well-documented parameters and no output schema. The description provides sufficient workflow context (browse first) and purpose, though it omits explicit return value details and failure modes. Given the low complexity, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters have detailed descriptions in the schema (100% coverage), and the description only reinforces 'read one by its URI'. No additional parameter semantics are offered, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Read a resource from a remote MCP server' with a specific verb and resource. It distinguishes itself from the sibling 'browse' by explicitly referencing it as the discovery step, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The instruction 'Use browse first to see available resources, then use this to read one by its URI' directly tells the agent when to use this tool versus browse, establishing a clear workflow. This is explicit guidance on usage order and differentiates from a key sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.2.0
    • First observedbrowse
    • First observedcall_remote_tool
    • First observeddiscover
    • First observeddiscover_browse
    • First observedget_remote_prompt
    • First observedinstall
    • First observedread_remote_resource

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation2/5

The overlap between `browse` and `discover_browse` is significant—both perform DNS lookup and fetch server card data, with only a subtle distinction in that `browse` can also take a server URL directly. `discover` nests within `browse` as a subset, further blurring boundaries. This ambiguity makes it difficult for an agent to reliably select the correct discovery tool.

Naming Consistency3/5

The naming mixes bare verbs (`discover`, `browse`, `install`) with compound verb-adjective-noun patterns (`call_remote_tool`, `read_remote_resource`, `get_remote_prompt`), and `discover_browse` is an unusual verb-verb compound. While all names are readable and mostly intuitive, the lack of a uniform verb_noun pattern prevents full consistency.

Tool Count5/5

Seven tools is a well-scoped size for a server that handles discovery, inspection, remote interaction, and installation. The count covers all necessary phases without excessive bloat, and each tool has a clear role in the workflow, even if some overlap exists.

Completeness5/5

The tool set covers the complete lifecycle: DNS-based discovery, metadata inspection via server cards, remote tool/resource/prompt access, and installation configuration. There are no obvious missing operations for the stated purpose, and the browse function adequately lists available capabilities.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers