Koskamo

Canopy MCP

Canopy publishes two official MCP servers: a documentation server that answers questions about the Developer Console and Admin Workspace without authentication, and an account server that exposes public API operations as tools, authenticated via OAuth or API keys to act on behalf of the user.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Canopy MCP logo, by CanopyVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Canopy
MCP endpoint (Streamable HTTP)
https://canopy-io.com/mcp
Vendor documentation

What you can do with it

  • Answer questions about Canopy dashboard controls and API operations
  • Execute public API operations as the authenticated user
  • Manage permissions, roles, and identities via API tools

Source and maintenance

Vendor evidenceRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
canopy-docs 1.0.0
MCP protocol
2025-06-18
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Tools

5 advertised

list_surfaces — List every page of the Developer Console and Admin Workspace
Advertised by the server during the last successful anonymous check.
Advertised read-only

Every left-nav page of both signed-in applications: the application, the menu path in the labels on screen, the capability that opens it, what must be selected first, and the guide that walks through it. The same data as /ai/ui-map.json.

list_surfaces input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "application": {
      "enum": [
        "Developer Console",
        "Admin Workspace"
      ],
      "type": "string",
      "description": "Limit to one application."
    }
  }
}
list_surfaces annotations
{
  "readOnlyHint": true
}
find_surface — Find where something is done in the dashboards
Advertised by the server during the last successful anonymous check.
Advertised read-only

Given what someone wants to do ("rotate a webhook secret", "invite an administrator", "why can't I see Hierarchy"), return the pages where it happens, ranked, each with its menu path, the capability that opens it, and its guide.

find_surface input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "description": "What the person wants to do, in their words."
    }
  }
}
find_surface annotations
{
  "readOnlyHint": true
}
get_guide — Read a guide
Advertised by the server during the last successful anonymous check.
Advertised read-only

A docs page as markdown: for a dashboard guide, the menu path, the exact controls to click in order, and the reasons a control may be missing. Pass the guide URL or path from find_surface or list_surfaces, or a surface id such as console.roles.

get_guide input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "page"
  ],
  "properties": {
    "page": {
      "type": "string",
      "description": "A docs URL, a /docs/... path, or a surface id."
    }
  }
}
get_guide annotations
{
  "readOnlyHint": true
}
explain_capability — Explain an administrator capability
Advertised by the server during the last successful anonymous check.
Advertised read-only

What a capability such as env_roles.manage or billing.manage lets someone do, and which pages it opens. The answer to "why can't I see this button": a page shows only for someone holding one of its listed capabilities, and its write actions only for the matching manage capability.

explain_capability input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "capability"
  ],
  "properties": {
    "capability": {
      "type": "string",
      "description": "A capability key, e.g. env_roles.view."
    }
  }
}
explain_capability annotations
{
  "readOnlyHint": true
}
search_api — Find the API operation behind a task
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search the published OpenAPI documents by words from the task or the resource. Returns method, path, operation id, and the reference page for each match. Reference pages live at /docs/api-reference/{operationId}; never guess those URLs.

search_api input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2
    }
  }
}
search_api annotations
{
  "readOnlyHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
884 ms
95th percentile latency
884 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 884 ms · metadata changed · 5 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http canopy-mcp https://canopy-io.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add canopy-mcp --url https://canopy-io.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable canopy-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "canopy-mcp": {
      "url": "https://canopy-io.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "canopy-mcp": {
      "type": "streamableHttp",
      "url": "https://canopy-io.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start canopy-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "canopy-mcp": {
      "type": "http",
      "url": "https://canopy-io.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http canopy-mcp https://canopy-io.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "canopy-mcp": {
      "url": "https://canopy-io.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "canopy-mcp": {
      "serverUrl": "https://canopy-io.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Canopy MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Canopy MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing