Cyanheads Server
БесплатноНе проверенFleet discovery for the cyanheads MCP ecosystem — semantic search + install snippets.
Описание
Fleet discovery for the cyanheads MCP ecosystem — semantic search + install snippets.
README
@cyanheads/cyanheads-mcp-server
Fleet discovery for the cyanheads MCP ecosystem — semantic search + install snippets.
Public Hosted Server: https://cyanheads.caseyjhand.com/mcp
Overview
Fleet discovery for the cyanheads MCP ecosystem, built on a hosted fleet.json catalog of pre-computed tool and server embeddings. Search the catalog by natural-language query, or resolve a known tool or server name to its description, connection URL, and per-client install snippet. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.
Tools
| Tool | Description |
|---|---|
cyanheads_search_catalog |
Search fleet tools and servers by natural-language query. Returns ranked matches with brief summaries and the owning server. |
cyanheads_describe_entry |
Return the description, connection URL, and per-client install snippet for a named tool or server. |
Capability reference
cyanheads_search_catalog tool
query1–500 characters;scopeselectstools(default) orserversresult granularity- Optional
categoryfilter:research,government,public-data,utility limit1–20 (default 5); results below theSIMILARITY_FLOOR(default0.3) are dropped before the limit applies- Every result carries
score(cosine similarity,[0, 1]), comparable only within one response - For scope
tools, aserversroll-up (top 10 by best-matching tool,serversTotalfor the full count) summarizes which servers matched - Throws retryable
catalog_emptywhile the catalog is still loading
cyanheads_describe_entry tool
name1–64 characters; accepts a snake_case tool name or kebab-case server name, auto-detected or pinned viakind- Tool lookups return the description and owning server; server lookups return version, npm package, GitHub URL, the full tool list, and per-client install snippets
clientfilters snippets to one ofclaude-code,codex,cursor,gemini,streamable-http,curl; omit for every client- Local (stdio, via
npx) snippets are returned for every published server; remote (Streamable HTTP) snippets are added only when a hosted endpoint exists - Discriminated on
kind(tool|server) so callers branch on data, not string parsing - Throws
not_found(unknown name),ambiguous_kind(name matches both a tool and a server — passkindto disambiguate), or retryablecatalog_empty
Features
Built on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.
Catalog-specific:
- Hourly background catalog refresh (
CATALOG_REFRESH_SECONDS, default3600) with an atomic index swap whengeneratedAtchanges — no restart needed - Query embeddings are computed at request time via
@huggingface/transformers; document embeddings are pre-computed, L2-normalized, and Matryoshka-truncated, shipped insidefleet.json - The embedding model is warmed up during startup, before OpenTelemetry's HTTP instrumentation patches
fetch— avoids a cold-cache model-load failure under OTEL - Self-describing:
cyanheads_describe_entryresolves this server's own name and tools from a static fallback record, consulted only when the remote catalog doesn't carry an entry for it CATALOG_URLcan point at any endpoint serving the same schema, to front a custom fleet
Agent-friendly output:
- Search responses echo the effective query, report the total match count before the limit, and include broadening guidance when nothing matches
- Discriminated
result.kind(tool|server) oncyanheads_describe_entrylets callers branch on data, not string parsing - Every search result carries a
scorefield for trust calibration, plus aserversroll-up so agents can see which servers matched without a second call
Getting started
Public Hosted Instance
A public instance is available at https://cyanheads.caseyjhand.com/mcp — no installation required. Point any MCP client at it via Streamable HTTP:
{
"mcpServers": {
"cyanheads-mcp-server": {
"type": "streamable-http",
"url": "https://cyanheads.caseyjhand.com/mcp"
}
}
}
For Claude Code:
claude mcp add --transport http cyanheads https://cyanheads.caseyjhand.com/mcp
Self-Hosted / Local
Add the following to your MCP client configuration file.
{
"mcpServers": {
"cyanheads-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/cyanheads-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}
Or with npx (no Bun required):
{
"mcpServers": {
"cyanheads-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@cyanheads/cyanheads-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}
Or with Docker:
{
"mcpServers": {
"cyanheads-mcp-server": {
"type": "stdio",
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/cyanheads-mcp-server:latest"]
}
}
}
For Streamable HTTP, set the transport and start the server:
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp
Prerequisites
- Bun v1.4.0 or higher (or Node.js v24+).
Installation
- Clone the repository:
git clone https://github.com/cyanheads/cyanheads-mcp-server.git
- Navigate into the directory:
cd cyanheads-mcp-server
- Install dependencies:
bun install
- Configure environment:
cp .env.example .env
# edit .env to override any defaults
Configuration
All configuration is validated at startup via Zod schemas in src/config/server-config.ts. Every variable has a sensible default — out of the box, the server points at the canonical cyanheads fleet.
| Variable | Description | Default |
|---|---|---|
MCP_TRANSPORT_TYPE |
Transport: stdio or http |
stdio |
MCP_HTTP_PORT |
HTTP server port | 3010 |
MCP_HTTP_HOST |
HTTP server bind host | 127.0.0.1 |
MCP_HTTP_ENDPOINT_PATH |
HTTP endpoint path where the MCP server is mounted | /mcp |
MCP_AUTH_MODE |
Authentication: none, jwt, or oauth |
none |
MCP_SESSION_MODE |
HTTP session posture: auto, stateful, or stateless. src/index.ts declares stateless; set this only to override it. |
stateless |
MCP_LOG_LEVEL |
Log level (debug, info, warning, error, etc.) |
info |
CATALOG_URL |
Remote fleet.json endpoint (schema v2 with baked embeddings). Must be an absolute URL. Override to front your own fleet. | https://caseyjhand.com/fleet.json |
CATALOG_FETCH_TIMEOUT_MS |
Per-request timeout for fleet.json fetches in ms. Must be > 0. | 10000 |
CATALOG_REFRESH_SECONDS |
Background poll interval for fleet.json refresh. 0 disables; otherwise must be > 0. |
3600 |
EMBEDDING_MODEL_ID |
Hugging Face model id for query embedding. Must match fleet.json.embeddingModel. |
Snowflake/snowflake-arctic-embed-m-v1.5 |
SIMILARITY_FLOOR |
Cosine similarity cutoff for cyanheads_search_catalog results. Must be within [0, 1]. |
0.3 |
OTEL_ENABLED |
Enable OpenTelemetry | false |
See .env.example for the full list of optional overrides.
Running the server
Local development
Build and run the production version:
# One-time build bun run rebuild # Run the built server bun run start:http # or bun run start:stdioRun checks and tests:
bun run devcheck # Lints, formats, type-checks, runs MCP and packaging linters bun run test # Runs the test suite
Docker
docker build -t cyanheads-mcp-server .
docker run --rm -p 3010:3010 cyanheads-mcp-server
The Dockerfile defaults to HTTP transport, stateless session mode, and logs to /var/log/cyanheads-mcp-server. OpenTelemetry peer dependencies are installed by default — build with --build-arg OTEL_ENABLED=false to omit them.
Project structure
| Directory | Purpose |
|---|---|
src/mcp-server/tools |
Tool definitions (*.tool.ts). Two tools — cyanheads_search_catalog and cyanheads_describe_entry. |
src/services/catalog |
Catalog service — remote fleet.json provider with atomic-swap refresh, vector index, snippet builders, the self-description fallback record, and the query-time embedding runtime (@huggingface/transformers, behind an injectable interface for deterministic tests). |
src/config |
Server-specific environment variable parsing and validation with Zod. |
tests/ |
Unit and integration tests, mirroring the src/ structure. |
docs/ |
Design doc and schema reference. |
Development guide
See CLAUDE.md for development guidelines and architectural rules. The short version:
- Handlers throw, framework catches — no
try/catchin tool logic - Use
ctx.logfor logging,ctx.statefor storage - Register new tools in the
toolsarray passed tocreateApp()insrc/index.ts - Wrap external data: validate raw → normalize to domain type → return output schema; never fabricate missing fields
Contributing
Issues are welcome. Run checks and tests before submitting:
bun run devcheck
bun run test
License
Apache-2.0 — see LICENSE for details.
Установка Cyanheads Server
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/cyanheads/cyanheads-mcp-serverFAQ
Cyanheads Server MCP бесплатный?
Да, Cyanheads Server MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Cyanheads Server?
Нет, Cyanheads Server работает без API-ключей и переменных окружения.
Cyanheads Server — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Cyanheads Server в Claude Desktop, Claude Code или Cursor?
Открой Cyanheads Server на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
автор: duxiaohuiSupabase
Database, auth and storage
автор: SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare Cyanheads Server with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
