MCP 서버

cyanheads-mcp-server

io.github.cyanheads/cyanheads-mcp-server
MCP 및 에이전트 인프라 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Searches a catalog of MCP servers and tools and returns descriptions plus installation or connection snippets.

cyanheads_describe_entry
Describe Fleet Tool or Server
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.
읽기 전용
입력 스키마
{'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") or server name (kebab-case, e.g. "earthquake-mcp-server"). 1-64 characters. Exact names win; unique case-insensitive names resolve to canonical names. Use cyanheads_search_catalog to discover valid names.'}, 'client': {'enum': ['claude-code', 'codex', 'cursor', 'curl', 'gemini', 'streamable-http'], 'type': 'string', 'description': 'Return install snippets for this client only (both local and remote transports when available). Omit to return snippets for all supported clients.'}}, 'additionalProperties': False}
출력 스키마
{'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', 'catalog_empty'], 'description': 'Machine-readable failure mode. Declared by this tool: `not_found`: No tool or server with the given name exists in the catalog. `ambiguous_kind`: Name matches both a tool and a server (collision in catalog). `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', '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 required for local installation.'}}, 'description': 'A resolved tool entry â\x80\x94 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").'}, '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 â\x80\x94 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', '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 â\x80\x94 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 local (stdio) install requires (e.g. ["MAILCHIMP_API_KEY"]). Absent when none.'}}, 'description': 'A resolved server entry â\x80\x94 metadata, optional hosted endpoint, and per-client install snippets.', 'additionalProperties': False}], 'description': 'The resolved entry â\x80\x94 either a tool detail or a server detail depending on the resolved kind.'}}, 'additionalProperties': False}
cyanheads_search_catalog
Search Fleet Tools and Servers
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.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 5, 'maximum': 20, 'minimum': 1, 'description': 'Maximum number of results to return (1-20). Default 5.'}, '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.'}, '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}
출력 스키마
{'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': {'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.'}, 'notice': {'type': 'string', 'description': 'Guidance for zero matches or an exhausted result page. Absent on nonempty result pages.'}, '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".'}, '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.'}, '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_describe_entry
2026년 10월 1일 2:44 AM
변경됨
cyanheads_search_catalog
2026년 10월 1일 2:44 AM
추가됨
cyanheads_describe_entry
2026년 9월 17일 12:41 PM
추가됨
cyanheads_search_catalog
2026년 9월 17일 12:41 PM