Koskamo

cyanheads-mcp-server

A community MCP server providing fleet discovery for the cyanheads ecosystem. It enables semantic search across tools and servers using natural language queries and returns ranked matches with brief summaries. Additionally, it provides detailed descriptions and per-client install snippets for specific tools or servers, supporting various clients like Claude, Codex, and Cursor.

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.

cyanheads-mcp-server logo, by cyanheadsCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by cyanheads
MCP endpoint (Streamable HTTP)
https://cyanheads.caseyjhand.com/mcp
Vendor documentation

What its tools do

2 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

2 of 2 have a description · 2 of 2 declare behavior hints · 2 of 2 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search fleet tools and servers by natural-language description
  • Return description and install snippets for a named tool or server
  • Find fleet servers for a task and hand over a working install

Source and maintenance

Community listingRegistry 0.5.0
Maintenance checked

Protocol and capabilities

Server
cyanheads-mcp-server 0.5.0
MCP protocol negotiated in check
2025-11-25
Tools
2 advertised
Resources
1 advertised
Resource templates
1 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "logging": {},
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "subscribe": true,
    "listChanged": true
  },
  "extensions": {
    "io.modelcontextprotocol/skills": {
      "directoryRead": true
    }
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

This server is the discovery front door to the cyanheads MCP fleet. Use cyanheads_search_catalog to find tools or servers by describing what you want to do. Use cyanheads_describe_entry to get descriptions, connection metadata, and per-client install snippets for any result; pass a result's name and server to describe exactly that row. Tool schemas are available from the connected server through tools/list. Continue searches with nextOffset and, in tools scope, nextServersOffset; reuse the same query and filters. Scope "tools" (default) finds individual tools; scope "servers" finds which server owns a workflow. cyanheads_describe_entry also resolves this server itself, under the name "cyanheads-mcp-server".

Tools

2 advertised

cyanheads_search_catalog — Search Fleet Tools and Servers
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search fleet tools and servers by natural-language description. Returns ranked matches with brief summaries and the server each tool belongs to. Use scope "servers" to find which server handles a workflow; use the default scope "tools" to find specific tools.

cyanheads_search_catalog input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 5,
      "maximum": 1000,
      "minimum": 1,
      "description": "Maximum number of results to return (1-1000). Default 5. At most 20 per call: a larger limit returns up to 20, with a notice naming the offset to continue from when more matches follow."
    },
    "query": {
      "type": "string",
      "pattern": "\\S",
      "maxLength": 500,
      "minLength": 1,
      "description": "Natural language search query. Describe what you want to accomplish, a workflow, or a capability area. 1-500 raw characters; surrounding whitespace is trimmed. Must contain non-whitespace text."
    },
    "scope": {
      "enum": [
        "tools",
        "servers"
      ],
      "type": "string",
      "default": "tools",
      "description": "What to search. \"tools\" returns individual tool matches; \"servers\" returns server-level matches."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "Result offset. Use nextOffset with the same query, scope, category, and limit; pages use the current catalog."
    },
    "category": {
      "enum": [
        "research",
        "government",
        "public-data",
        "utility"
      ],
      "type": "string",
      "description": "Filter by catalog category. Omit to search all categories. Categories are catalog labels, not publisher types (a federal agency API can be public-data), and a wrong guess silently drops the matching server, so set this only when the category is known."
    },
    "serversOffset": {
      "type": "integer",
      "default": 0,
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "Independent server roll-up offset (10 per page). Use nextServersOffset; must be zero in servers scope."
    }
  },
  "additionalProperties": false
}
cyanheads_search_catalog output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "offset",
        "nextOffset",
        "results",
        "scope",
        "effectiveQuery",
        "totalCount"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "cap": {
      "type": "number",
      "description": "Per-call result cap that was applied."
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "invalid_servers_offset",
                "catalog_empty"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `invalid_servers_offset`: A nonzero serversOffset is supplied in servers scope. `catalog_empty`: Catalog has not finished loading. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "scope": {
      "enum": [
        "tools",
        "servers"
      ],
      "type": "string",
      "description": "Scope that was searched."
    },
    "shown": {
      "type": "number",
      "description": "Results returned on this capped page."
    },
    "notice": {
      "type": "string",
      "description": "Guidance for zero matches, an exhausted result page, or a page cut to the 20-per-call cap with more matches following (names the offset to continue from). Absent otherwise."
    },
    "offset": {
      "type": "number",
      "description": "Current ranked-result offset."
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "server",
          "brief",
          "category",
          "score"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Tool name (snake_case) or server name (kebab-case) depending on scope."
          },
          "brief": {
            "type": "string",
            "description": "One-line summary of what this tool or server does."
          },
          "score": {
            "type": "number",
            "description": "Cosine similarity between query and entry, in [0, 1]. Higher is better. Compare only within a single response."
          },
          "server": {
            "type": "string",
            "description": "Server package name that owns this tool (e.g. \"arxiv-mcp-server\"). Same as name when scope is \"servers\". Pass name and server to cyanheads_describe_entry to describe exactly this row."
          },
          "category": {
            "enum": [
              "research",
              "government",
              "public-data",
              "utility"
            ],
            "type": "string",
            "description": "Catalog category for the owning server."
          }
        },
        "description": "A single search result entry.",
        "additionalProperties": false
      },
      "description": "Ranked matches, best first."
    },
    "servers": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "brief",
          "category",
          "matchedTools",
          "topScore"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Server package name (e.g. \"cdc-health-mcp-server\")."
          },
          "brief": {
            "type": "string",
            "description": "One-line description of what the server does."
          },
          "category": {
            "enum": [
              "research",
              "government",
              "public-data",
              "utility"
            ],
            "type": "string",
            "description": "Catalog category."
          },
          "topScore": {
            "type": "number",
            "description": "Best cosine similarity among this server's matched tools. Drives ordering. Distinct from the score a server gets under scope \"servers\"."
          },
          "matchedTools": {
            "type": "number",
            "description": "Count of this server's tools in the full match set."
          }
        },
        "description": "A server roll-up entry.",
        "additionalProperties": false
      },
      "description": "Server roll-up from the full match set, independent of result offset/limit. Tools scope only. Ordered by topScore desc (name-tiebroken); 10 per page starting at serversOffset. Use nextServersOffset to continue and serversTotal for the full distinct count."
    },
    "truncated": {
      "type": "boolean",
      "description": "True when limit exceeded the 20-per-call cap and more matches follow this page."
    },
    "nextOffset": {
      "type": [
        "number",
        "null"
      ],
      "description": "Next ranked-result offset, or null when exhausted."
    },
    "totalCount": {
      "type": "number",
      "description": "Total relevant matches before the limit was applied."
    },
    "serversTotal": {
      "type": "number",
      "description": "Total distinct servers in the full match set (before the cap of 10 is applied). Present only when servers is present."
    },
    "serversOffset": {
      "type": "number",
      "description": "Current server roll-up offset; tools scope only."
    },
    "effectiveQuery": {
      "type": "string",
      "description": "The query that was searched."
    },
    "nextServersOffset": {
      "type": [
        "number",
        "null"
      ],
      "description": "Next server roll-up offset, or null when exhausted; tools scope only."
    }
  },
  "additionalProperties": false
}
cyanheads_search_catalog annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
cyanheads_describe_entry — Describe Fleet Tool or Server
Advertised by the server during the last successful anonymous check.
Advertised read-only

Return the description and install snippets for a named tool or server. For tools: the description, owning server, and connection metadata. For either kind: local (stdio, via npx) install snippets for every published server, plus remote (HTTP) connection snippets when a hosted endpoint exists — for every supported client, or one client via the client parameter.

cyanheads_describe_entry input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "name"
  ],
  "properties": {
    "kind": {
      "enum": [
        "tool",
        "server"
      ],
      "type": "string",
      "description": "Whether name refers to a tool or server. Omit to auto-detect: names containing underscores are treated as tools; names containing hyphens are treated as servers."
    },
    "name": {
      "type": "string",
      "maxLength": 64,
      "minLength": 1,
      "description": "Tool name (snake_case, e.g. \"earthquake_search_events\") or server name (kebab-case, e.g. \"earthquake-mcp-server\"). 1-64 characters. Exact names win; unique case-insensitive names resolve to canonical names. A tool name that more than one server owns also needs server. Use cyanheads_search_catalog to discover valid names."
    },
    "client": {
      "enum": [
        "claude-code",
        "cline",
        "codex",
        "cursor",
        "curl",
        "gemini",
        "streamable-http"
      ],
      "type": "string",
      "description": "Return install snippets for this client only (both local and remote transports when available). \"streamable-http\" selects the generic mcpServers JSON; \"curl\" selects a connectivity probe for hosted servers. Omit to return snippets for all supported clients."
    },
    "server": {
      "type": "string",
      "maxLength": 64,
      "minLength": 1,
      "description": "Server that owns the tool to describe — the server value cyanheads_search_catalog returned with this name. 1-64 characters, resolved like a server name. Required when the tool name has more than one owner; with a server name, it must name the same server."
    }
  },
  "additionalProperties": false
}
cyanheads_describe_entry output schema
{
  "type": "object",
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "result"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "examples": [
                "not_found",
                "ambiguous_kind",
                "ambiguous_owner",
                "catalog_empty"
              ],
              "description": "Machine-readable failure mode. Declared by this tool: `not_found`: No tool or server with the given name, under the given server when set, exists in the catalog. `ambiguous_kind`: Name matches both a tool and a server (collision in catalog). `ambiguous_owner`: The tool name has more than one owning server and server is not set. `catalog_empty`: Catalog has not finished loading. Other values are possible when a failure originates below the handler."
            },
            "recovery": {
              "type": "object",
              "required": [
                "hint"
              ],
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "description": "Actionable next step for the caller.",
              "additionalProperties": {}
            },
            "retryable": {
              "type": "boolean",
              "description": "Whether retrying may succeed."
            }
          },
          "additionalProperties": {}
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        }
      },
      "description": "Present when the call failed. Absent on success.",
      "additionalProperties": {}
    },
    "result": {
      "oneOf": [
        {
          "type": "object",
          "required": [
            "kind",
            "name",
            "description",
            "server",
            "npm",
            "github",
            "auth",
            "installSnippets"
          ],
          "properties": {
            "npm": {
              "type": "string",
              "description": "Owning server npm package for local installation."
            },
            "auth": {
              "type": "string",
              "description": "Owning server hosted authentication requirement."
            },
            "kind": {
              "type": "string",
              "const": "tool",
              "description": "Resolved as a tool entry."
            },
            "name": {
              "type": "string",
              "description": "Canonical resolved tool name."
            },
            "github": {
              "type": "string",
              "description": "Owning server GitHub repository URL."
            },
            "server": {
              "type": "string",
              "description": "Server package name that owns this tool."
            },
            "endpoint": {
              "type": "string",
              "description": "Owning server hosted HTTP endpoint, when available."
            },
            "description": {
              "type": "string",
              "description": "Brief description of what the tool does."
            },
            "installNotice": {
              "type": "string",
              "description": "Actionable guidance when the requested client has no compatible installation snippet."
            },
            "installSnippets": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "client",
                  "transport",
                  "label",
                  "payload"
                ],
                "properties": {
                  "label": {
                    "type": "string",
                    "description": "Install method label."
                  },
                  "client": {
                    "enum": [
                      "claude-code",
                      "cline",
                      "codex",
                      "cursor",
                      "curl",
                      "gemini",
                      "streamable-http"
                    ],
                    "type": "string",
                    "description": "Target MCP client."
                  },
                  "payload": {
                    "type": "string",
                    "description": "Install command or configuration."
                  },
                  "transport": {
                    "enum": [
                      "stdio",
                      "http"
                    ],
                    "type": "string",
                    "description": "Local stdio or hosted HTTP transport."
                  }
                },
                "description": "An installation snippet for the owning server.",
                "additionalProperties": false
              },
              "description": "Owning server install snippets, filtered by client when supplied."
            },
            "requiredEnvVars": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Environment variable names the owning server's manifest marks required for a local install; a key the manifest leaves optional is not listed."
            }
          },
          "description": "A resolved tool entry — its description and the server that owns it.",
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "name",
            "displayName",
            "description",
            "version",
            "npm",
            "github",
            "auth",
            "toolCount",
            "tools",
            "installSnippets"
          ],
          "properties": {
            "npm": {
              "type": "string",
              "description": "npm package name (e.g. \"@cyanheads/arxiv-mcp-server\"). Drives the local stdio snippets."
            },
            "auth": {
              "type": "string",
              "description": "Auth requirement for the hosted deployment (currently always \"none\")."
            },
            "kind": {
              "type": "string",
              "const": "server",
              "description": "Resolved as a server entry."
            },
            "name": {
              "type": "string",
              "description": "Canonical resolved server name."
            },
            "tools": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "name",
                  "description"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Tool name (snake_case, e.g. \"earthquake_search_events\")."
                  },
                  "description": {
                    "type": "string",
                    "description": "Brief description of what the tool does."
                  }
                },
                "description": "A single tool exposed by this server.",
                "additionalProperties": false
              },
              "description": "Every tool this server exposes, each with its name and a brief description — one describe call reveals the full surface without a second lookup."
            },
            "github": {
              "type": "string",
              "description": "GitHub repository URL."
            },
            "version": {
              "type": "string",
              "description": "Published version captured at fleet-generation time."
            },
            "endpoint": {
              "type": "string",
              "description": "Streamable HTTP endpoint for the hosted deployment. Absent for local-only (stdio) servers."
            },
            "toolCount": {
              "type": "number",
              "description": "Number of tools exposed by this server."
            },
            "description": {
              "type": "string",
              "description": "Brief description of what the server does."
            },
            "displayName": {
              "type": "string",
              "description": "Human-readable server label."
            },
            "installNotice": {
              "type": "string",
              "description": "Actionable guidance when the requested client has no compatible installation snippet."
            },
            "installSnippets": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "client",
                  "transport",
                  "label",
                  "payload"
                ],
                "properties": {
                  "label": {
                    "type": "string",
                    "description": "Human-readable install method label."
                  },
                  "client": {
                    "enum": [
                      "claude-code",
                      "cline",
                      "codex",
                      "cursor",
                      "curl",
                      "gemini",
                      "streamable-http"
                    ],
                    "type": "string",
                    "description": "MCP client this snippet targets."
                  },
                  "payload": {
                    "type": "string",
                    "description": "Install payload (JSON fragment or CLI command)."
                  },
                  "transport": {
                    "enum": [
                      "stdio",
                      "http"
                    ],
                    "type": "string",
                    "description": "Transport this snippet installs — stdio (local) or http (remote)."
                  }
                },
                "description": "A single install instruction entry.",
                "additionalProperties": false
              },
              "description": "Install instructions: local (stdio) snippets for every server, plus remote (HTTP) snippets when an endpoint exists. Filtered to one client when input.client is set."
            },
            "requiredEnvVars": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Env var names the server's manifest marks required for a local (stdio) install (e.g. [\"MAILCHIMP_API_KEY\"]). Absent when none. A key the manifest leaves optional, such as one only some tools need, is not listed, so check the README before treating a local install as keyless."
            }
          },
          "description": "A resolved server entry — metadata, optional hosted endpoint, and per-client install snippets.",
          "additionalProperties": false
        }
      ],
      "description": "The resolved entry — either a tool detail or a server detail depending on the resolved kind."
    }
  },
  "additionalProperties": false
}
cyanheads_describe_entry annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}

Prompts

0 advertised

No prompt definitions available.

Resources

1 advertised

cyanheads-guide

Advertised by the server during the last successful anonymous check.

Find a cyanheads fleet MCP server for a task and hand the user a working install, using cyanheads_search_catalog and cyanheads_describe_entry. Use when the session lacks a capability, or the user asks which cyanheads server or tool does X, whether one is hosted, or how to add it to a client. Covers telling real matches from near misses, the category filter, hosted vs local installs, and env vars the snippets leave out.

cyanheads-guide URI
skill://cyanheads-guide/SKILL.md

MIME type: text/markdown

io.modelcontextprotocol/skills

Advertised by the server during the last successful anonymous check.

io.modelcontextprotocol/skills URI template
skill://{+path}

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
643 ms
95th percentile latency
643 ms

Maintenance history

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

  • · probe · passed · 643 ms · metadata changed · 2 tool(s), 1 resource(s), 1 resource template(s), 0 prompt(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 cyanheads-mcp-server https://cyanheads.caseyjhand.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 cyanheads-mcp-server --url https://cyanheads.caseyjhand.com/mcp

Cursor

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

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start cyanheads-mcp-server and inspect its tools.
VS Code configuration
{
  "servers": {
    "cyanheads-mcp-server": {
      "type": "http",
      "url": "https://cyanheads.caseyjhand.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 cyanheads-mcp-server https://cyanheads.caseyjhand.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://cyanheads.caseyjhand.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": {
    "cyanheads-mcp-server": {
      "serverUrl": "https://cyanheads.caseyjhand.com/mcp"
    }
  }
}

Let your agent find its tools

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