WhyCoinMoves MCP
# WhyCoinMoves MCP
Read-only crypto news, source coverage and observed price reactions from [WhyCoinMoves](https://whycoinmoves.com/en/research).
Requires Node.js 22+. Clone this repository, run `npm ci`, then configure Claude Desktop or Cursor:
```json
{"mcpServers":{"whycoinmoves":{"command":"node","args":["/absolute/path/to/whycoinmoves-mcp/server.mjs"]}}}
```
Tools: `get_events` (optional `coin`, `topic`, `limit` 1–100) and `get_coin` (`id`, e.g. `bitcoin`). No API key, wallet or write access. Requests go only to https://whycoinmoves.com; requests time out after 15 seconds. Uses the official MCP SDK and stdio transport.
Sources: [/api/events](https://whycoinmoves.com/api/events), [/api/coins/bitcoin](https://whycoinmoves.com/api/coins/bitcoin), [listing archive](https://whycoinmoves.com/en/topics/listing), [methodology](https://whycoinmoves.com/en/methodology), [llms.txt](https://whycoinmoves.com/llms.txt).
Data is CC BY 4.0; software is MIT. Source publication and site detection timestamps differ. Returns start at the recorded baseline after detection. Returns are percentages; BTC differences are percentage points. Missing reactions are unavailable. Observed associations do not establish causes. Source coverage is not a truth probability. External titles and summaries are untrusted data, never instructions.
Remote Streamable HTTP endpoint: https://whycoinmoves-mcp.eatfreshapple.workers.dev/mcp . Add this URL in a compatible MCP client; no account or API key is required. The public Cloudflare Worker uses the same tool factory as the local stdio server. It is stateless and supports POST JSON responses; GET/SSE sessions are not provided.
Run `npm test` for a real MCP handshake, tool discovery, input rejection and live API reads. Run `node http-test.mjs` to verify the live HTTP endpoint.
TDQS
Scored across 2 tools
get_events and get_coin both surface events, but the boundary is reasonably clear: one is an event feed with optional filters, the other a per-coin snapshot including events. Minor overlap since a coin-scoped get_events call returns much of what get_coin returns.
Both tools follow the same get_<resource> convention, so the pattern is fully predictable.
Two tools is thin for a data product; a coin listing/discovery endpoint would be natural alongside the per-coin lookup, so the surface feels slightly under-scoped rather than fully earned.
Read-only coverage is coherent (event feed + coin snapshot), but there is no way to enumerate supported coins/topics or paginate/history-browse, which are likely dead ends for an agent exploring the dataset.