Skip to main content

Zipp MCP — multi-language crypto news for AI assistants. Sentiment + importance + source attribution across 8 languages.

Project description

Zipp MCP

Multi-language crypto news for AI assistants — editorial summaries, sentiment labels (BULLISH / NEUTRAL / BEARISH), importance scores (0–100), and every story credited to its original publisher.

MCP Endpoint MCP Registry Smithery Transport Auth Languages License

This repository hosts the public listing manifest and the zipp-mcp Python package. The canonical Zipp MCP server is hosted at https://zippfeed.com/mcp/ — most clients should connect to that URL directly. The PyPI / Docker package is for the cases where they can't: stdio-only desktop clients, locked-down networks, or anywhere you want a self-contained install.

  • 🌐 Website: zippfeed.com
  • 🔌 MCP endpoint: https://zippfeed.com/mcp/
  • 📡 Transport: Streamable HTTP (MCP spec 2025-06-18)
  • 🔓 Auth: none — public, rate-limited at the Cloudflare edge
  • 📰 Coverage: crypto / blockchain / Web3 across 8 languages
  • ✍️ Editorial: every item carries sentiment + importance + source attribution
  • 📦 PyPI: uvx zipp-mcp · Docker: ghcr.io/deficlow/zipp-mcp (Day 3 follow-up)

Self-host

Three install paths. All three speak the same protocol and call the same upstream API; the right choice depends on the client.

uvx — no install, one command

For stdio MCP clients (Claude Desktop, Cursor's stdio mode, Cline, Zed, etc.) that prefer launching a local subprocess:

uvx zipp-mcp

Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "zipp": {
      "command": "uvx",
      "args": ["zipp-mcp"]
    }
  }
}

pip install — for embedded use

pip install zipp-mcp
zipp-mcp --transport stdio

Or import the client directly in your own code:

from zipp_mcp import ZippClient

async with ZippClient() as zipp:
    payload = await zipp.search(query="bitcoin etf", lang="en-US", limit=5)
    for item in payload["items"]:
        print(item["title"], item["sentiment"], item["importance"])

Docker — for hosted / sandboxed environments

docker run -i --rm ghcr.io/deficlow/zipp-mcp

For Streamable HTTP transport on a server (Railway, Fly, Render):

docker run -p 8080:8080 -e MCP_HOST=0.0.0.0 \
  ghcr.io/deficlow/zipp-mcp \
  zipp-mcp --transport http

Configuration

All flags read from env vars too; everything is optional.

Env var Default What it does
ZIPP_API_BASE https://zippfeed.com Upstream Zipp deployment (staging, mirror, etc.)
ZIPP_API_TIMEOUT_S 30 HTTP client timeout (1–120s)
MCP_HOST 127.0.0.1 Bind host for HTTP/SSE transports (set 0.0.0.0 in containers)
MCP_PORT 8080 Bind port; also aliased as PORT for Railway/Fly/Render/Heroku

The package is read-only — there is nothing to authenticate; the upstream API is public and rate-limited at the Cloudflare edge.

Why Zipp?

Most news connectors are pure aggregators that hand the model a raw headline list. Zipp adds an editorial layer on top of the firehose:

Signal What it does
Sentiment Each story labelled BULLISH / NEUTRAL / BEARISH (editorial, not advice)
Importance 0–100 score; ≥ 75 is the breaking threshold
Multi-language 8 languages, native-quality summaries (not auto-translate)
Attribution Original publisher name + URL on every item, always
Taxonomy 7 categories × 5 sub-leaves = 35 leaves, stable slugs

Quick start

Zipp speaks Streamable HTTP at https://zippfeed.com/mcp/ — no auth, no install. Below are copy-paste configs for the major MCP-capable clients, plus two ways to smoke-test the endpoint.

Claude Desktop

Add to your claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "zipp": {
      "type": "http",
      "url": "https://zippfeed.com/mcp/"
    }
  }
}

Restart Claude Desktop. You should see Zipp in the tool list and be able to ask things like "What's breaking in crypto right now?" or "Search Zipp for Bitcoin ETF inflows in Turkish."

Claude Code (CLI)

One-liner — registers Zipp at user scope so every project sees it:

claude mcp add --scope user --transport http zipp https://zippfeed.com/mcp/

Verify with claude mcp list.

Claude.ai web (Connectors)

Settings → Connectors → Add custom connector → URL: https://zippfeed.com/mcp/ → no authentication.

ChatGPT (Custom Connectors)

Settings → Connectors → Add → Custom connector → URL: https://zippfeed.com/mcp/ → Authentication: None.

Cursor

~/.cursor/mcp.json:

{
  "mcpServers": {
    "zipp": {
      "url": "https://zippfeed.com/mcp/"
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "zipp": {
      "serverUrl": "https://zippfeed.com/mcp/"
    }
  }
}

Cline (VS Code extension)

Open the Cline panel → MCP ServersEdit Configuration, then add Zipp to cline_mcp_settings.json:

{
  "mcpServers": {
    "zipp": {
      "url": "https://zippfeed.com/mcp/",
      "type": "streamableHttp"
    }
  }
}

Zed

~/.config/zed/settings.json — Zed's context_servers interface is stdio-only today, so use the mcp-remote bridge:

{
  "context_servers": {
    "zipp": {
      "command": {
        "path": "npx",
        "args": ["-y", "mcp-remote", "https://zippfeed.com/mcp/"]
      }
    }
  }
}

Gemini CLI

~/.gemini/settings.json:

{
  "mcpServers": {
    "zipp": {
      "httpUrl": "https://zippfeed.com/mcp/"
    }
  }
}

OpenAI Responses API

from openai import OpenAI

client = OpenAI()
resp = client.responses.create(
    model="gpt-5",
    tools=[{
        "type": "mcp",
        "server_label": "zipp",
        "server_url": "https://zippfeed.com/mcp/",
        "require_approval": "never",
    }],
    input="What's breaking in crypto right now? Cite the original publisher.",
)
print(resp.output_text)

Anthropic Messages API

The MCP connector is a beta — pass the header below until it goes GA:

import anthropic

client = anthropic.Anthropic()
msg = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    mcp_servers=[{
        "type": "url",
        "url": "https://zippfeed.com/mcp/",
        "name": "zipp",
    }],
    messages=[{"role": "user", "content": "What's breaking in crypto right now?"}],
    extra_headers={"anthropic-beta": "mcp-client-2025-04-04"},
)
print(msg.content)

Smoke test

Verify the server from your shell — no client needed:

curl -s -X POST "https://zippfeed.com/mcp/" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"smoke","version":"1.0"}}}'

Expected: a JSON-RPC initialize result where serverInfo.name = "Zipp" and the server advertises tools, resources, and prompts capabilities.

For an interactive UI, run the official MCP Inspector:

npx @modelcontextprotocol/inspector

In the browser tab that opens, pick Streamable HTTP as the transport, paste https://zippfeed.com/mcp/, click Connect, then browse the Tools / Resources / Prompts tabs to exercise the server end-to-end.

Tools

Tool Signature What it returns
search (query, lang?, category?, limit?) Full-text search, recency-first
get_latest (lang?, category?, limit?) Stories from the last 24 hours
get_breaking (lang?, limit?) Importance ≥ 75 within the last 24 hours
get_featured (lang?, limit?) Editor-curated highlights
get_post (slug_or_id, lang?) Full post body + all categories + hashtags
list_categories (lang?) The 7 × 5 taxonomy (35 leaves)

lang defaults to en-US. See Languages below for the full list.

Sample response

get_latest(lang="en-US", limit=1) returns shape:

{
  "items": [
    {
      "id": 1234,
      "slug": "bitcoin-etf-inflows-500m",
      "url": "https://zippfeed.com/en-US/a/bitcoin-etf-inflows-500m",
      "title": "Bitcoin ETF inflows hit $500M",
      "summary": "Spot Bitcoin ETFs absorbed $500M in net inflows…",
      "category": "markets-etfs",
      "sentiment": "BULLISH",
      "importance": 82,
      "published_at": "2026-05-13T15:08:55Z",
      "language": "en-US",
      "tags": ["markets-etfs", "btc", "etf"],
      "source": {
        "name": "CoinDesk",
        "url": "https://www.coindesk.com/..."
      },
      "image_url": "https://cdn.zippfeed.com/images/rss/abc.jpg"
    }
  ]
}

get_post additionally returns the full body, hashtags, and an expanded categories[] array.

Languages

Code Language
en-US English
tr-TR Türkçe
es-ES Español
ru-RU Русский
pt-PT Português
fr-FR Français
de-DE Deutsch
it-IT Italiano

Every story is editorially summarised in every supported language; sentiment and importance scoring are computed once and shared across language variants.

Attribution policy

Every Zipp story carries the original publisher in the source field. When you surface Zipp content in an AI response, please credit both Zipp and the original publisher, e.g.:

via Zipp — original: CoinDesk

Linking to the original source.url is encouraged. Zipp's own canonical URL (item.url) is the right link when pointing to the editorial summary.

Editorial methodology

Zipp's editorial process — feed selection, AI-assisted summarisation, sentiment + importance scoring, human review — is documented at zippfeed.com/en-US/p/methodology.

Sentiment is editorial labelling, not investment advice.

Related discovery surfaces

Zipp is published to the official MCP Server Registry as com.zippfeed/zipp — directories that aggregate the registry (Smithery, Glama, mcp.so, PulseMCP, etc.) pick it up automatically.

If you're building tooling around Zipp, the following endpoints are also public:

The 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.

Legal

License

This repository — README, manifest, and the example client — is released under the MIT License. It covers the public documentation and listing manifest only; the MCP server implementation itself is proprietary and hosted by Zipp.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zipp_mcp-0.1.0.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zipp_mcp-0.1.0-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file zipp_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: zipp_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 15.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for zipp_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 928695b87d5f481b4cbe7e79e5db4d6baf5b9fd5e382d634d984d5940b728055
MD5 d339c97041f0279ae20be4a23887ab23
BLAKE2b-256 920658f204ee0ef4a09e0790b89ba6d5867bee4f64ef4150efdeabb14068824e

See more details on using hashes here.

Provenance

The following attestation bundles were made for zipp_mcp-0.1.0.tar.gz:

Publisher: publish-pypi.yml on deficlow/zipp-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zipp_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: zipp_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for zipp_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aa7d160a7fcfab83c4b7d2295a9f13d1bd9cbc248f027430792e26c2e30322c5
MD5 2e911a6ce52615222c2beb7f975f7572
BLAKE2b-256 207cd5531b0603f8225aeb64698df0124a740fb56a914f8d6ef485552613282b

See more details on using hashes here.

Provenance

The following attestation bundles were made for zipp_mcp-0.1.0-py3-none-any.whl:

Publisher: publish-pypi.yml on deficlow/zipp-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page