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-mcp4. Tool 清单
get_capabilities(只读)
用途:返回工具能力、固定默认行为、可用 filter、示例参数和错误码,建议 AI 在首次调用前先执行该 tool。
输出核心字段:
server_nametool_namedefaultssupported_filtersinput_exampleserror_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_pageitems:面向 AI 的精简新闻条目(标题、链接、币种、投票摘要等)raw_page:上游原始分页结构(results已按limit截断)
5. 错误语义
INVALID_PARAMS:参数格式/范围错误AUTH_FAILED:缺失或无效 tokenRATE_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