{
  "markdown": "# Zipp MCP\n\n> Multi-language crypto news for AI assistants — editorial summaries,\n> sentiment labels (BULLISH / NEUTRAL / BEARISH), importance scores\n> (0–100), and every story credited to its original publisher.\n\n[![MCP Endpoint](https://img.shields.io/badge/MCP-zippfeed.com%2Fmcp%2F-1f6feb)](https://zippfeed.com/mcp/)\n[![MCP Registry](https://img.shields.io/badge/MCP%20Registry-com.zippfeed%2Fzipp-success)](https://registry.modelcontextprotocol.io/v0/servers?search=zipp)\n[![Smithery](https://smithery.ai/badge/deficlow/zipp)](https://smithery.ai/servers/deficlow/zipp)\n[![Transport](https://img.shields.io/badge/transport-Streamable%20HTTP-2ea043)](https://modelcontextprotocol.io/)\n[![Auth](https://img.shields.io/badge/auth-public%20%E2%80%93%20no%20key-success)](https://zippfeed.com/mcp/)\n[![Languages](https://img.shields.io/badge/languages-8-blueviolet)](#languages)\n[![License](https://img.shields.io/badge/license-MIT-lightgrey)](LICENSE)\n\nThis repository hosts the **public listing manifest** and the\n**`zipp-mcp` Python package**. The canonical Zipp MCP server is\nhosted at `https://zippfeed.com/mcp/` — most clients should connect\nto that URL directly. The PyPI / Docker package is for the cases\nwhere they can't: stdio-only desktop clients, locked-down networks,\nor anywhere you want a self-contained install.\n\n- 🌐 Website: [zippfeed.com](https://zippfeed.com)\n- 🔌 MCP endpoint: `https://zippfeed.com/mcp/`\n- 📡 Transport: Streamable HTTP (MCP spec `2025-06-18`)\n- 🔓 Auth: none — public, rate-limited at the Cloudflare edge\n- 📰 Coverage: crypto / blockchain / Web3 across 8 languages\n- ✍️ Editorial: every item carries sentiment + importance + source attribution\n- 📦 PyPI: `uvx zipp-mcp` · Docker: `ghcr.io/deficlow/zipp-mcp` (Day 3 follow-up)\n\n## Self-host\n\nThree install paths. All three speak the same protocol and call the\nsame upstream API; the right choice depends on the client.\n\n### `uvx` — no install, one command\n\nFor stdio MCP clients (Claude Desktop, Cursor's stdio mode, Cline,\nZed, etc.) that prefer launching a local subprocess:\n\n```bash\nuvx zipp-mcp\n```\n\nClaude Desktop config (`claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"zipp\": {\n      \"command\": \"uvx\",\n      \"args\": [\"zipp-mcp\"]\n    }\n  }\n}\n```\n\n### `pip install` — for embedded use\n\n```bash\npip install zipp-mcp\nzipp-mcp --transport stdio\n```\n\nOr import the client directly in your own code:\n\n```python\nfrom zipp_mcp import ZippClient\n\nasync with ZippClient() as zipp:\n    payload = await zipp.search(query=\"bitcoin etf\", lang=\"en-US\", limit=5)\n    for item in payload[\"items\"]:\n        print(item[\"title\"], item[\"sentiment\"], item[\"importance\"])\n```\n\n### Docker — for hosted / sandboxed environments\n\n```bash\ndocker run -i --rm ghcr.io/deficlow/zipp-mcp\n```\n\nFor Streamable HTTP transport on a server (Railway, Fly, Render):\n\n```bash\ndocker run -p 8080:8080 -e MCP_HOST=0.0.0.0 \\\n  ghcr.io/deficlow/zipp-mcp \\\n  zipp-mcp --transport http\n```\n\n### Configuration\n\nAll flags read from env vars too; everything is optional.\n\n| Env var          | Default                | What it does |\n|------------------|------------------------|--------------|\n| `ZIPP_API_BASE`  | `https://zippfeed.com` | Upstream Zipp deployment (staging, mirror, etc.) |\n| `ZIPP_API_TIMEOUT_S` | `30`               | HTTP client timeout (1–120s) |\n| `MCP_HOST`       | `127.0.0.1`            | Bind host for HTTP/SSE transports (set `0.0.0.0` in containers) |\n| `MCP_PORT`       | `8080`                 | Bind port; also aliased as `PORT` for Railway/Fly/Render/Heroku |\n\nThe package is read-only — there is nothing to authenticate; the\nupstream API is public and rate-limited at the Cloudflare edge.\n\n## Why Zipp?\n\nMost news connectors are pure aggregators that hand the model a raw\nheadline list. Zipp adds an **editorial layer** on top of the firehose:\n\n| Signal             | What it does                                                                 |\n|--------------------|------------------------------------------------------------------------------|\n| **Sentiment**      | Each story labelled `BULLISH` / `NEUTRAL` / `BEARISH` (editorial, not advice) |\n| **Importance**     | 0–100 score; `≥ 75` is the *breaking* threshold                              |\n| **Multi-language** | 8 languages, native-quality summaries (not auto-translate)                   |\n| **Attribution**    | Original publisher name + URL on every item, always                          |\n| **Taxonomy**       | 7 categories × 5 sub-leaves = 35 leaves, stable slugs                        |\n\n## Quick start\n\nZipp speaks **Streamable HTTP** at `https://zippfeed.com/mcp/` — no\nauth, no install. Below are copy-paste configs for the major\nMCP-capable clients, plus two ways to smoke-test the endpoint.\n\n### Claude Desktop\n\nAdd to your `claude_desktop_config.json` (macOS:\n`~/Library/Application Support/Claude/claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"zipp\": {\n      \"type\": \"http\",\n      \"url\": \"https://zippfeed.com/mcp/\"\n    }\n  }\n}\n```\n\nRestart Claude Desktop. You should see Zipp in the tool list and be\nable to ask things like *\"What's breaking in crypto right now?\"* or\n*\"Search Zipp for Bitcoin ETF inflows in Turkish.\"*\n\n### Claude Code (CLI)\n\nOne-liner — registers Zipp at user scope so every project sees it:\n\n```bash\nclaude mcp add --scope user --transport http zipp https://zippfeed.com/mcp/\n```\n\nVerify with `claude mcp list`.\n\n### Claude.ai web (Connectors)\n\nSettings → Connectors → **Add custom connector** →\nURL: `https://zippfeed.com/mcp/` → no authentication.\n\n### ChatGPT (Custom Connectors)\n\nSettings → Connectors → **Add** → Custom connector →\nURL: `https://zippfeed.com/mcp/` → Authentication: **None**.\n\n### Cursor\n\n`~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"zipp\": {\n      \"url\": \"https://zippfeed.com/mcp/\"\n    }\n  }\n}\n```\n\n### Windsurf\n\n`~/.codeium/windsurf/mcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"zipp\": {\n      \"serverUrl\": \"https://zippfeed.com/mcp/\"\n    }\n  }\n}\n```\n\n### Cline (VS Code extension)\n\nOpen the Cline panel → **MCP Servers** → **Edit Configuration**, then\nadd Zipp to `cline_mcp_settings.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"zipp\": {\n      \"url\": \"https://zippfeed.com/mcp/\",\n      \"type\": \"streamableHttp\"\n    }\n  }\n}\n```\n\n### Zed\n\n`~/.config/zed/settings.json` — Zed's `context_servers` interface is\nstdio-only today, so use the [`mcp-remote`](https://www.npmjs.com/package/mcp-remote)\nbridge:\n\n```json\n{\n  \"context_servers\": {\n    \"zipp\": {\n      \"command\": {\n        \"path\": \"npx\",\n        \"args\": [\"-y\", \"mcp-remote\", \"https://zippfeed.com/mcp/\"]\n      }\n    }\n  }\n}\n```\n\n### Gemini CLI\n\n`~/.gemini/settings.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"zipp\": {\n      \"httpUrl\": \"https://zippfeed.com/mcp/\"\n    }\n  }\n}\n```\n\n### OpenAI Responses API\n\n```python\nfrom openai import OpenAI\n\nclient = OpenAI()\nresp = client.responses.create(\n    model=\"gpt-5\",\n    tools=[{\n        \"type\": \"mcp\",\n        \"server_label\": \"zipp\",\n        \"server_url\": \"https://zippfeed.com/mcp/\",\n        \"require_approval\": \"never\",\n    }],\n    input=\"What's breaking in crypto right now? Cite the original publisher.\",\n)\nprint(resp.output_text)\n```\n\n### Anthropic Messages API\n\nThe MCP connector is a beta — pass the header below until it goes GA:\n\n```python\nimport anthropic\n\nclient = anthropic.Anthropic()\nmsg = client.messages.create(\n    model=\"claude-opus-4-7\",\n    max_tokens=1024,\n    mcp_servers=[{\n        \"type\": \"url\",\n        \"url\": \"https://zippfeed.com/mcp/\",\n        \"name\": \"zipp\",\n    }],\n    messages=[{\"role\": \"user\", \"content\": \"What's breaking in crypto right now?\"}],\n    extra_headers={\"anthropic-beta\": \"mcp-client-2025-04-04\"},\n)\nprint(msg.content)\n```\n\n### Smoke test\n\nVerify the server from your shell — no client needed:\n\n```bash\ncurl -s -X POST \"https://zippfeed.com/mcp/\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Accept: application/json, text/event-stream\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-06-18\",\"capabilities\":{},\"clientInfo\":{\"name\":\"smoke\",\"version\":\"1.0\"}}}'\n```\n\nExpected: a JSON-RPC `initialize` result where `serverInfo.name = \"Zipp\"`\nand the server advertises `tools`, `resources`, and `prompts` capabilities.\n\nFor an interactive UI, run the official MCP Inspector:\n\n```bash\nnpx @modelcontextprotocol/inspector\n```\n\nIn the browser tab that opens, pick **Streamable HTTP** as the\ntransport, paste `https://zippfeed.com/mcp/`, click **Connect**, then\nbrowse the **Tools / Resources / Prompts** tabs to exercise the\nserver end-to-end.\n\n## Tools\n\n| Tool              | Signature                                                  | What it returns                                  |\n|-------------------|------------------------------------------------------------|--------------------------------------------------|\n| `search`          | `(query, lang?, category?, limit?)`                        | Full-text search, recency-first                  |\n| `get_latest`      | `(lang?, category?, limit?)`                               | Stories from the last 24 hours                   |\n| `get_breaking`    | `(lang?, limit?)`                                          | Importance ≥ 75 within the last 24 hours         |\n| `get_featured`    | `(lang?, limit?)`                                          | Editor-curated highlights                        |\n| `get_post`        | `(slug_or_id, lang?)`                                      | Full post body + all categories + hashtags       |\n| `list_categories` | `(lang?)`                                                  | The 7 × 5 taxonomy (35 leaves)                   |\n\n`lang` defaults to `en-US`. See [Languages](#languages) below for the full list.\n\n### Sample response\n\n`get_latest(lang=\"en-US\", limit=1)` returns shape:\n\n```json\n{\n  \"items\": [\n    {\n      \"id\": 1234,\n      \"slug\": \"bitcoin-etf-inflows-500m\",\n      \"url\": \"https://zippfeed.com/en-US/a/bitcoin-etf-inflows-500m\",\n      \"title\": \"Bitcoin ETF inflows hit $500M\",\n      \"summary\": \"Spot Bitcoin ETFs absorbed $500M in net inflows…\",\n      \"category\": \"markets-etfs\",\n      \"sentiment\": \"BULLISH\",\n      \"importance\": 82,\n      \"published_at\": \"2026-05-13T15:08:55Z\",\n      \"language\": \"en-US\",\n      \"tags\": [\"markets-etfs\", \"btc\", \"etf\"],\n      \"source\": {\n        \"name\": \"CoinDesk\",\n        \"url\": \"https://www.coindesk.com/...\"\n      },\n      \"image_url\": \"https://cdn.zippfeed.com/images/rss/abc.jpg\"\n    }\n  ]\n}\n```\n\n`get_post` additionally returns the full `body`, `hashtags`, and an\nexpanded `categories[]` array.\n\n## Languages\n\n| Code     | Language   |\n|----------|------------|\n| `en-US`  | English    |\n| `tr-TR`  | Türkçe     |\n| `es-ES`  | Español    |\n| `ru-RU`  | Русский    |\n| `pt-PT`  | Português  |\n| `fr-FR`  | Français   |\n| `de-DE`  | Deutsch    |\n| `it-IT`  | Italiano   |\n\nEvery story is editorially summarised in every supported language;\nsentiment and importance scoring are computed once and shared across\nlanguage variants.\n\n## Attribution policy\n\nEvery Zipp story carries the original publisher in the `source` field.\nWhen you surface Zipp content in an AI response, **please credit both\nZipp and the original publisher**, e.g.:\n\n> *via Zipp — original: CoinDesk*\n\nLinking to the original `source.url` is encouraged. Zipp's own\ncanonical URL (`item.url`) is the right link when pointing to the\neditorial summary.\n\n## Editorial methodology\n\nZipp's editorial process — feed selection, AI-assisted summarisation,\nsentiment + importance scoring, human review — is documented at\n[zippfeed.com/en-US/p/methodology](https://zippfeed.com/en-US/p/methodology).\n\nSentiment is **editorial labelling**, not investment advice.\n\n## Related discovery surfaces\n\nZipp is published to the official **MCP Server Registry** as\n[`com.zippfeed/zipp`](https://registry.modelcontextprotocol.io/v0/servers?search=zipp) —\ndirectories that aggregate the registry (Smithery, Glama, mcp.so,\nPulseMCP, etc.) pick it up automatically.\n\nIf you're building tooling around Zipp, the following endpoints are\nalso public:\n\n- [`/llms.txt`](https://zippfeed.com/llms.txt) — AI-discoverable URL map\n- [`/sitemap.xml`](https://zippfeed.com/sitemap.xml), [`/news_sitemap.xml`](https://zippfeed.com/news_sitemap.xml), [`/image_sitemap.xml`](https://zippfeed.com/image_sitemap.xml)\n- [`/rss.xml`](https://zippfeed.com/rss.xml) + [`/feed.json`](https://zippfeed.com/feed.json) (per-language + per-category + per-slice variants)\n\nThe standalone developer REST API was retired on 2026-05-14 — `GET /developer/v1/*` now returns `410 Gone` with a pointer to the MCP endpoint. AI-agent integrations should use MCP; long-form content readers should use the RSS or JSON Feed surfaces above.\n\n## Legal\n\n- [Methodology](https://zippfeed.com/en-US/p/methodology)\n- [Privacy](https://zippfeed.com/en-US/p/privacy)\n- [Terms](https://zippfeed.com/en-US/p/terms)\n- Contact: `hello@zippfeed.com`\n\n## License\n\nThis repository — README, manifest, and the example client — is\nreleased under the [MIT License](LICENSE). It covers the **public\ndocumentation and listing manifest only**; the MCP server\nimplementation itself is proprietary and hosted by Zipp.\n",
  "bytes": 13181,
  "sha": "5877e318a5c398d5cf2d77467070435e4f7196f413e1200794e54e5454cc26a9",
  "repo_slug": "deficlow/zipp-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_zippfeed_zipp_3ede76f5/readme"
}