加密新闻API服务

一个封装CryptoPanic Developer API的只读服务,提供AI友好的结构化加密新闻数据。

  • by TeaBambooNGU
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 TeaBambooNGU/cryptorNewsMCP

使用说明

crypto-news-mcp

面向加密市场 Agent 的 MCP Server(Python + FastMCP)。
服务仅封装 CryptoPanic Developer API 的 GET /posts/,并提供 AI 友好的结构化结果。

1. 能力边界

  • 只读服务,不包含任何写操作
  • 当前传输方式:stdio
  • 上游端点:/api/developer/v2/posts/
  • 固定行为:public=true、kind=news、region=en

2. 前置依赖

  • Python >=3.11
  • uv
  • 有效的 CRYPTOPANIC_AUTH_TOKEN

3. 快速开始

uv venv
uv sync
cp .env.example .env
export CRYPTOPANIC_AUTH_TOKEN="your_token"
uv run crypto-news-mcp

4. Tool 清单

get_capabilities(只读)

用途:返回工具能力、固定默认行为、可用 filter、示例参数和错误码,建议 AI 在首次调用前先执行该 tool。

输出核心字段:

  • server_name
  • tool_name
  • defaults
  • supported_filters
  • input_examples
  • error_codes

get_posts(只读)

用途:获取加密新闻,并返回结构化摘要 + 裁剪后的上游原始分页数据。

输入参数:

  • currencies?: string[]
    2-10 位字母/数字,自动去重并转大写(如 ["btc", "ETH"] -> ["BTC","ETH"])
  • news_filter?: "rising" | "hot" | "bullish" | "bearish" | "important" | "saved" | "lol"
  • limit?: number(1-50,默认 10)

输出核心字段:

  • query:实际生效参数(归一化后)
  • summary:upstream_count、returned_count、has_next_page
  • items:面向 AI 的精简新闻条目(标题、链接、币种、投票摘要等)
  • raw_page:上游原始分页结构(results 已按 limit 截断)

5. 错误语义

  • INVALID_PARAMS:参数格式/范围错误
  • AUTH_FAILED:缺失或无效 token
  • RATE_LIMITED:上游限流
  • UPSTREAM_ERROR:上游异常或网络错误

6. 认证与安全

  • 使用环境变量 CRYPTOPANIC_AUTH_TOKEN,不要硬编码到仓库
  • 建议通过本地 .env 或客户端进程环境注入 token
  • 服务仅透传最小必要信息,不做持久化

7. 客户端接入示例

Codex

[mcp_servers.crypto-news-mcp]
command = "uv"
args = ["run", "crypto-news-mcp"]
cwd = "/Users/teabamboo/Documents/AIplusLLM/cryptorNewsMCP"

[mcp_servers.crypto-news-mcp.env]
CRYPTOPANIC_AUTH_TOKEN = "your_token"

Claude Code

{
  "mcpServers": {
    "crypto-news-mcp": {
      "command": "uv",
      "args": ["run", "crypto-news-mcp"],
      "cwd": "/Users/teabamboo/Documents/AIplusLLM/cryptorNewsMCP",
      "env": {
        "CRYPTOPANIC_AUTH_TOKEN": "your_token"
      }
    }
  }
}

8. 常见故障排查

  • 启动报 AUTH_FAILED:确认 CRYPTOPANIC_AUTH_TOKEN 已注入进 MCP 进程环境
  • 调用报 INVALID_PARAMS:检查 currencies 是否仅含 2-10 位字母/数字,limit 是否在 1-50
  • 调用报 RATE_LIMITED:降低请求频率,或稍后重试
  • 调用报 UPSTREAM_ERROR:检查网络连通性、token 权限和上游服务状态

9. 开发与测试

uv run python -m unittest discover -s tests -p "test_*.py" -v
uv run python scripts/check_native_posts_tool.py