cyanheads-mcp-server
OfficialProvides tools to search and retrieve research papers from arXiv, enabling access to scholarly articles across various scientific disciplines.
Provides geocoding and location data services from OpenStreetMap, allowing conversion of addresses to coordinates and reverse geocoding.
Provides tools to search and access researcher profiles and works from ORCID, facilitating interaction with researcher identity data.
Provides tools to query and access structured data from Wikidata, enabling retrieval of entity information and relationships.
Provides tools to search and retrieve encyclopedia content from Wikipedia, enabling access to articles, summaries, and links.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cyanheads-mcp-serverfind tools for tracking earthquakes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Search fleet tools and servers by natural-language query. Returns ranked matches with brief summaries and the owning server. |
| Return the description, connection URL, and per-client install snippet for a named tool or server. |
Related MCP server: embecode
Capability reference
cyanheads_search_catalog tool
query1–500 raw characters, with non-whitespace text required; surrounding whitespace is trimmed before embedding and echo.scopeselectstools(default) orservers; optionalcategory:research,government,public-data,utility;limit1–20 (default 5).Results carry cosine-similarity
score([0, 1], comparable within one response). Tool searches include aserversroll-up with ten entries per page andserversTotal; an unloaded catalog returns retryablecatalog_empty.Page results with
offsetand the tools-scope roll-up independently withserversOffset(both default to 0). Reuse the same query, scope, category, and limit withnextOffset/nextServersOffset; null means exhausted. Each call uses the current catalog, so a refresh between pages can change ordering. Servers scope requiresserversOffset: 0and omits roll-up fields.SIMILARITY_FLOOR(default0.3) filters matches before the limit applies.
cyanheads_describe_entry tool
name1–64 characters accepts a tool or server name, auto-detected or pinned viakind. Exact names win, then unique case-insensitive names; output uses canonical names.clientoptionally selectsclaude-code,codex,cursor,gemini,streamable-http, orcurl.Both kinds return connection metadata and install snippets; server results also include the full tool inventory. Published servers get local snippets; hosted servers also get HTTP snippets. For local-only entries,
client: "curl"returns successful metadata with aninstallNoticenaming a stdio client to try. Required environment variables remain visible even without snippets.Descriptions are catalog text; obtain tool schemas from the connected server's
tools/list.Failures return
not_found,ambiguous_kind(setkind), 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 neededEmpty catalogs and conflicting duplicate identities fail before index replacement; refresh retains the last valid catalog. Identical duplicates collapse before indexing, with a bounded load-time warning; servers with no tools remain valid.
Query embeddings are computed at request time via
@huggingface/transformers; document embeddings are pre-computed, L2-normalized, and Matryoshka-truncated, shipped insidefleet.jsonThe embedding model is warmed up during startup, before OpenTelemetry's HTTP instrumentation patches
fetch— avoids a cold-cache model-load failure under OTELSelf-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 itCATALOG_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 parsingEvery 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/mcpSelf-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/mcpPrerequisites
Bun v1.4.0 or higher (or Node.js v24+).
Installation
Clone the repository:
git clone https://github.com/cyanheads/cyanheads-mcp-server.gitNavigate into the directory:
cd cyanheads-mcp-serverInstall dependencies:
bun installConfigure environment:
cp .env.example .env
# edit .env to override any defaultsConfiguration
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 |
| Transport: |
|
| HTTP server port |
|
| HTTP server bind host |
|
| HTTP endpoint path where the MCP server is mounted |
|
| Authentication: |
|
| HTTP session posture: |
|
| Log level ( |
|
| Remote fleet.json endpoint (schema v2 with baked embeddings). Must be an absolute URL. Override to front your own fleet. |
|
| Per-request timeout for fleet.json fetches in ms. Must be > 0. |
|
| Background poll interval for fleet.json refresh. |
|
| Hugging Face model id for query embedding. Must match |
|
| Cosine similarity cutoff for |
|
| Enable OpenTelemetry |
|
| OTLP base URL for traces and metrics | Unset |
| Explicit OTLP logs URL; requires the OTel log peers included in the default Docker build | Unset |
| Log failed arguments and results, redacted by key name. Secrets inside free-form values are not redacted. |
|
| UTF-8 byte cap for each logged failure payload |
|
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-serverThe 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 |
| Tool definitions ( |
| 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 ( |
| Server-specific environment variable parsing and validation with Zod. |
| Unit and integration tests, mirroring the |
| 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 logicUse
ctx.logfor logging,ctx.statefor storageRegister new tools in the
toolsarray passed tocreateApp()insrc/index.tsWrap 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 testLicense
Apache-2.0 — see LICENSE for details.
This server cannot be deployed
Maintenance
Related MCP Connectors
Search and install 4,000+ security-scanned MCP servers from inside any MCP-aware AI client.
MCP registry & directory: search, find & install 31k+ MCP servers & tools. Catalog and marketplace.
Search and get install details on MCP servers, right from your agent -- a unified marketplace index.
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAI-first MCP server discovery tool that enables agents to search, inspect, and install MCP servers from multiple registries.13AGPL 3.0
- AlicenseAqualityDmaintenanceLocal-first MCP server for semantic + keyword hybrid code search. Zero external services, no API keys required.2MIT
- AlicenseNot gradedqualityAmaintenanceProvides MCP tools for semantic search over personal knowledge sources using pluggable embeddings and local vector indexing.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP-based hybrid semantic code search over repositories, providing tools for searching code by meaning or keyword, retrieving symbol definitions, finding usages, reading chunks, and listing indexed repos.MIT