Skip to main content
Glama

Find MCP servers

find_mcp
Read-onlyIdempotent

Find canonical MCP servers by task, claimed or observed capability, name, source directory, client compatibility, transport, authentication posture, or deployment kind. Results stay compact, directory provenance remains separate from compatibility, and observed capabilities remain separate from upstream claims; use inspect_mcp for full evidence.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum canonical MCPs to return, from 1 to 10.
queryYesTask, capability, MCP name, description text, claimed tool, or Pod-observed tool to search for.
clientNoRequire an upstream works-with claim, such as claude, claude-code, claude-desktop, or claude-api.
directoryNoRequire a current listing sourced directly from Claude's MCP directory. This is provenance, not a client compatibility claim.
transportNoRequire this claimed remote transport.
authPostureNoRequire this claimed authentication posture.
deploymentKindNoRequire this claimed deployment kind.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countYesNumber of canonical MCPs returned.
resultsYesRanked compact canonical MCP matches.
guidanceNoPresent when no indexed MCP matches the query and filters.
interactionIdYesStable ID for this directory search, used when sending Pod feedback.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed20 schema fields changed
    • addedInput schema / properties / directory
      Added value: +{
      +  "description": "Require a current listing sourced directly from Claude's MCP directory. This is provenance, not a client compatibility claim.",
      +  "enum": [
      +    "Claude"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / results / description
      Previous value: -"Ranked canonical MCP matches."New value: +"Ranked compact canonical MCP matches."
    • addedOutput schema / properties / results / items / properties / availability
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Latest measured availability. Omitted when Pod has not measured this MCP.",
      +  "properties": {
      +    "observedAt": {
      +      "description": "ISO timestamp of the latest availability measurement.",
      +      "type": "string"
      +    },
      +    "status": {
      +      "description": "Latest availability outcome measured directly by Pod.",
      +      "enum": [
      +        "ok",
      +        "auth_required",
      +        "configuration_required",
      +        "empty_tools",
      +        "protocol_error",
      +        "startup_error",
      +        "unreachable",
      +        "timeout",
      +        "rate_limited"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "observedAt"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / properties / results / items / properties / categories
      Removed value: -{
      -  "description": "Deduplicated categories claimed by upstream directories.",
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / results / items / properties / claimedTools
      Removed value: -{
      -  "description": "Tool names claimed by upstream directories; these are not live probe results.",
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedOutput schema / properties / results / items / properties / connection
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Best current actionable remote, package, or extension connection claimed by an upstream directory.",
      +  "properties": {
      +    "authPosture": {
      +      "description": "Claimed authentication posture, such as no_auth or auth_required.",
      +      "type": "string"
      +    },
      +    "endpointUrl": {
      +      "description": "Fixed remote MCP endpoint when the source publishes one.",
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "kind": {
      +      "description": "How this upstream source says the MCP is deployed.",
      +      "enum": [
      +        "fixed_remote",
      +        "dynamic_remote",
      +        "source_scoped_remote",
      +        "package",
      +        "local_extension"
      +      ],
      +      "type": "string"
      +    },
      +    "packageIdentifier": {
      +      "description": "Installable package identifier.",
      +      "type": "string"
      +    },
      +    "packageRegistry": {
      +      "description": "Package registry, such as npm or pypi.",
      +      "type": "string"
      +    },
      +    "packageVersion": {
      +      "description": "Package version claimed by the source.",
      +      "type": "string"
      +    },
      +    "transport": {
      +      "description": "Claimed MCP transport, such as streamable-http or sse.",
      +      "type": "string"
      +    },
      +    "urlPattern": {
      +      "description": "Tenant-specific endpoint pattern when no single URL exists.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "kind"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / properties / results / items / properties / deployments
      Removed value: -{
      -  "description": "Remote, package, or local deployment options claimed upstream.",
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "authPosture": {
      -        "description": "Claimed authentication posture, such as no_auth or auth_required.",
      -        "type": "string"
      -      },
      -      "endpointUrl": {
      -        "description": "Fixed remote MCP endpoint when the source publishes one.",
      -        "format": "uri",
      -        "type": "string"
      -      },
      -      "kind": {
      -        "description": "How this upstream source says the MCP is deployed.",
      -        "enum": [
      -          "fixed_remote",
      -          "dynamic_remote",
      -          "source_scoped_remote",
      -          "package",
      -          "local_extension"
      -        ],
      -        "type": "string"
      -      },
      -      "packageIdentifier": {
      -        "description": "Installable package identifier.",
      -        "type": "string"
      -      },
      -      "packageRegistry": {
      -        "description": "Package registry, such as npm or pypi.",
      -        "type": "string"
      -      },
      -      "packageVersion": {
      -        "description": "Package version claimed by the source.",
      -        "type": "string"
      -      },
      -      "transport": {
      -        "description": "Claimed MCP transport, such as streamable-http or sse.",
      -        "type": "string"
      -      },
      -      "urlPattern": {
      -        "description": "Tenant-specific endpoint pattern when no single URL exists.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • changedOutput schema / properties / results / items / properties / description / description
      Previous value: -"Best current description claimed by an upstream directory."New value: +"One-sentence description from a current upstream directory."
    • addedOutput schema / properties / results / items / properties / description / maxLength
      Added value: +240
    • addedOutput schema / properties / results / items / properties / directories
      Added value: +{
      +  "description": "Compact names of current upstream directories listing this MCP.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / results / items / properties / matches
      Added value: +{
      +  "description": "Up to three capabilities explaining why this MCP matched.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "capability": {
      +        "description": "Capability that matched the search task.",
      +        "type": "string"
      +      },
      +      "evidence": {
      +        "description": "Evidence boundary: Observed came from Pod's tools/list measurement; Claimed and Category came from an upstream directory.",
      +        "enum": [
      +          "Observed",
      +          "Claimed",
      +          "Category"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "capability",
      +      "evidence"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 3,
      +  "type": "array"
      +}
    • removedOutput schema / properties / results / items / properties / measurements
      Removed value: -{
      -  "description": "Pod measurements kept separate from publisher claims, including exact observed tools.",
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "authScheme": {
      -        "description": "Authentication scheme advertised by a gated endpoint.",
      -        "type": "string"
      -      },
      -      "checkedAt": {
      -        "description": "ISO timestamp of the measurement.",
      -        "type": "string"
      -      },
      -      "endpointUrl": {
      -        "description": "Exact remote endpoint measured by Pod.",
      -        "format": "uri",
      -        "type": "string"
      -      },
      -      "latencyMs": {
      -        "description": "End-to-end measurement latency in milliseconds.",
      -        "maximum": 9007199254740991,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "observedToolCount": {
      -        "description": "Count returned by the complete tools/list walk.",
      -        "maximum": 9007199254740991,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "observedTools": {
      -        "description": "Tool names returned directly by paginated tools/list.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "outcome": {
      -        "description": "Measured outcome. Gated/configuration-required is not an empty or broken server.",
      -        "enum": [
      -          "ok",
      -          "auth_required",
      -          "configuration_required",
      -          "empty_tools",
      -          "protocol_error",
      -          "startup_error",
      -          "unreachable",
      -          "timeout",
      -          "rate_limited"
      -        ],
      -        "type": "string"
      -      },
      -      "packageIdentifier": {
      -        "description": "Exact package identifier measured by Pod.",
      -        "type": "string"
      -      },
      -      "packageRegistry": {
      -        "description": "Exact package registry measured by Pod.",
      -        "type": "string"
      -      },
      -      "packageVersion": {
      -        "description": "Pinned package version measured by Pod.",
      -        "type": "string"
      -      },
      -      "protocolVersion": {
      -        "description": "MCP protocol version negotiated during initialization.",
      -        "type": "string"
      -      },
      -      "serverName": {
      -        "description": "Name returned by the server's own initialize handshake.",
      -        "type": "string"
      -      },
      -      "serverVersion": {
      -        "description": "Version returned by the server's own initialize handshake.",
      -        "type": "string"
      -      },
      -      "targetKind": {
      -        "description": "What Pod connected to or executed.",
      -        "enum": [
      -          "remote",
      -          "package"
      -        ],
      -        "type": "string"
      -      },
      -      "transport": {
      -        "description": "Transport that successfully carried this measurement.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "targetKind",
      -      "outcome",
      -      "checkedAt",
      -      "observedTools"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / results / items / properties / reportSummary
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "Counts of selected decision-useful GitHub issues. Internal engineering tickets are excluded.",
      -  "properties": {
      -    "decisionUseful": {
      -      "description": "Current GitHub issues useful for choosing, installing, integrating, or troubleshooting this MCP.",
      -      "maximum": 9007199254740991,
      -      "minimum": 0,
      -      "type": "integer"
      -    },
      -    "external": {
      -      "description": "Decision-useful reports opened by external users or contributors.",
      -      "maximum": 9007199254740991,
      -      "minimum": 0,
      -      "type": "integer"
      -    },
      -    "maintainer": {
      -      "description": "Decision-useful user-visible bugs documented by maintainers.",
      -      "maximum": 9007199254740991,
      -      "minimum": 0,
      -      "type": "integer"
      -    }
      -  },
      -  "required": [
      -    "decisionUseful",
      -    "external",
      -    "maintainer"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / results / items / properties / sources
      Removed value: -{
      -  "description": "Current upstream listings kept separate by source.",
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "documentationUrl": {
      -        "description": "Documentation URL published upstream.",
      -        "format": "uri",
      -        "type": "string"
      -      },
      -      "key": {
      -        "description": "Stable Pod key for the upstream directory.",
      -        "type": "string"
      -      },
      -      "listingName": {
      -        "description": "Name used by this upstream listing.",
      -        "type": "string"
      -      },
      -      "name": {
      -        "description": "Human-readable upstream directory name.",
      -        "type": "string"
      -      },
      -      "repositoryUrl": {
      -        "description": "Explicit source repository URL published upstream.",
      -        "format": "uri",
      -        "type": "string"
      -      },
      -      "verifiedTier": {
      -        "description": "Verification tier claimed by this upstream source.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "key",
      -      "name",
      -      "listingName"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / results / items / properties / url
      Removed value: -{
      -  "description": "Public Pod directory page when available.",
      -  "format": "uri",
      -  "type": "string"
      -}
    • removedOutput schema / properties / results / items / properties / verificationStatus
      Removed value: -{
      -  "description": "Whether Pod has verified the canonical MCP identity.",
      -  "enum": [
      -    "Unverified",
      -    "Verified"
      -  ],
      -  "type": "string"
      -}
    • removedOutput schema / properties / results / items / properties / website
      Removed value: -{
      -  "description": "Canonical website when known.",
      -  "format": "uri",
      -  "type": "string"
      -}
    • removedOutput schema / properties / results / items / properties / worksWith
      Removed value: -{
      -  "description": "Clients claimed compatible by upstream directories.",
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • changedOutput schema / properties / results / items / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "verificationStatus",
      -  "sources",
      -  "categories",
      -  "worksWith",
      -  "claimedTools",
      -  "measurements",
      -  "deployments",
      -  "reportSummary"
      -]New value: +[
      +  "id",
      +  "name",
      +  "matches",
      +  "directories"
      +]
    • addedOutput schema / properties / results / maxItems
      Added value: +10
  2. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false. The description adds useful behavioral context beyond those: results stay compact, directory provenance is separate from compatibility, and observed capabilities are separate from upstream claims. This tells the user that results may filter by provenance and that observed capabilities are distinguished from claimed ones—valuable semantic detail not in the annotations. It doesn't describe pagination or error behavior, but given the safety annotations and output schema, a 4 is reasonable.

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?

Two sentences: the first states scope and search dimensions; the second layers in the key caveats and routes to inspect_mcp. Every clause earns its place, no repetition of schema details, and the important routing instruction is placed at the end where it completes the behavioral contract. It is concise without being underspecified.

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

Completeness5/5

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

For a read-only, idempotent search tool with a 100%-documented schema and a JSON output schema, the description is complete. It states what can be searched, the key semantic distinctions (provenance vs. compatibility, observed vs. claimed), and when to escalate to inspect_mcp. An agent has everything needed to decide whether to call this tool and how to use its constraints appropriately.

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 of the seven parameters having a clear description including enum values and special semantics (e.g., directory being 'provenance, not a client compatibility claim'). The tool description adds high-level context about separation of provenance from compatibility, but it does not add syntax-level detail per parameter beyond what the schema provides. Baseline 3 applies since the schema carries the full load.

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 the specific verb 'Find' with a clear resource ('canonical MCP servers') and enumerates the search dimensions: task, capability, name, source directory, client compatibility, transport, auth posture, and deployment kind. It distinguishes the tool from inspect_mcp by explicitly stating that use inspect_mcp for full evidence, and the sibling list confirms inspect_mcp exists as the evidence-deep counterpart.

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 description explicitly states when to use this tool vs the alternative: 'use inspect_mcp for full evidence.' It also conveys that results stay compact and that provenance and observed capabilities are separated from upstream claims, implying this tool is for discovery and quick filtering while inspect_mcp is for deeper verification. This gives the agent clear selection criteria.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.2/5.0
Disambiguation4/5

Most tools have clearly distinct purposes: search handles general experience queries, find_mcp/inspect_mcp are MCP-server-specific, fetch opens detail pages, and feedback records private input. The only mild overlap is between search and find_mcp, but their descriptions make the intended domain difference clear.

Naming Consistency4/5

All tool names are lowercase imperative verbs, which gives the set a recognizable command-like style. The two MCP-specific tools use the consistent verb_mcp suffix, while the others are single-word verbs, so the pattern is mostly consistent with minor structural variation.

Tool Count5/5

Five tools is a well-scoped number for a Pod discovery platform covering search, fetch, MCP directory lookup, inspection, and feedback. Each tool serves a distinct user need without unnecessary bloat or redundancy.

Completeness4/5

The set covers the core read/discovery workflow: search experiences, fetch full pages, find and inspect MCP servers, and provide feedback. Obvious gaps are limited—there is no explicit way to submit an experience or publish content, but feedback partially covers contribution.

Resources