Token导航 LogoToken导航TokenDH.com
Chart MCP logo
金融服务未说明官方级别未说明来源级核验

Chart MCP

MCP Server

一个集成了FastAPI后端、MCP服务器、Next.js前端和SearxNG搜索引擎的加密货币分析助手,提供实时技术分析、市场数据聚合和AI驱动的总结功能。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
技术分析TypeScript市场数据

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

AvacynLab

提供方

AvacynLab

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

图表mcp(alpha)

CI

chart-mcp 组装非后端FastAPI、非服务MCP(模型上下文协议), 基于模板的Next.js前端 Vercel人工智能聊天机器人 和一个实例 SearxNG 自动托管以生成加密分析副驾驶。项目 通过SSE传播技术分析步骤,并提出两个工件 具体的。所有测试(后端和前端)都分组在 /tests 为了便于导航和交叉覆盖:

  • finance -实时管道(OHLCV、指标、水平、模式和

标记化摘要)。

  • search -SearXNG发布的新闻稿和文件的汇总。

⚠️ 阿尔法:返回的分析是教育性的。没有建议 不提供投资。

建筑

组件主要角色
快速API(src/chart_mcp)由令牌保护的REST路由(/api/v1/*上海证券交易所 /stream/analysis,展览MCP标准。
Python服务CCXT连接器、指示器计算、介质/电阻器检测、图表模式、标记LLM摘要、SearXNG客户端。
SSE 工具chart_mcp/utils/sse.py 管理财务事件的标题、心跳、取消和序列化。
SearxNG(docker/SearxNG)路由器使用的Dockerisé服务 /api/v1/search 等工具MCP web_search.
前端(frontend/ai-chatbot)严格复制带有工件的扩展Vercel AI聊天机器人模板 financesearch,重用内部图表组件。
CI GitHub操作顺序管道 lint → typecheck → tests → build → e2e 涵盖Python和Node。

快速启动

  1. 后端FastAPI+MCP
   make setup && make dev
   # → API accessible sur http://localhost:8000

> 备选方案: docker compose -f docker/docker-compose.yml up api 用于集装箱化运行。

  1. SearxNG (聚合搜索引擎)
   docker compose -f docker/docker-compose.yml up searxng
   # → Interface sur http://localhost:8080
  1. 前端Next.js/Vercel人工智能聊天机器人
   cd frontend/ai-chatbot
   pnpm install
   pnpm dev
   # → UI sur http://localhost:3000 (consomme l’API locale)
  1. 变量公社

复制 .env.example (根)和 frontend/ai-chatbot/.env.example 朝向 本地文件(.env, .env.local)然后调整MCP/SEARXNG代币。

发展环境

先决条件

  • Python 3.11或3.12
  • Node.js 20+ pnpm
  • Docker/Docker Compose(用于SearXng和容器化执行)

环境变量

复制文件 .env.example (根和 frontend/ai-chatbot/)然后 调整值。后端的关键变量:

变量描述
API_TOKEN所有受保护路由和SSE流都需要承载令牌。
ALLOWED_ORIGINS授权CORS来源(分离器 ,)的。在生产中是强制性的。
MCP_API_BASE后端的基本URL(例如。 http://localhost:8000).
MCP_API_TOKENMCP CLI和前端用于查询API的令牌。
MCP_SESSION_USER用于在后端记录当前用户的标识。
EXCHANGE 用于OHLCV的Exchange CCXT(binance 默认情况下)。
OHLC_CACHE_TTL_SECONDS / OHLC_CACHE_MAX_ENTRIES内存中OHLCV缓存的设置。
FEATURE_FINANCE启用/禁用可选的财务路线。
SEARXNG_BASE_URLSearXng实例的内部URL(例如。 http://searxng:8080).
SEARXNG_TIMEOUTsearxng请求的超时(秒)。
RATE_LIMIT_PER_MINUTE速率限制中间件应用的配额。

前端侧(frontend/ai-chatbot/.env.example)同一对夫妇 MCP_* 是 需要从浏览器联系MCP API。还添加您的 关键分析/可观察性(如有)。变量 PLAYWRIGHTPLAYWRIGHT_TEST_BASE_URL 继续评论以加速E2E运行: 以前导出它们 pnpm exec playwright test 而离开 OPENAI_API_KEY 未定义以使用提供者模型。

有用的API调用

REST路由通过Swagger记录(/docs).索降 curl :

# OHLCV
curl -H "Authorization: Bearer $API_TOKEN" \
     -H "X-Session-User: regular" \
     "http://localhost:8000/api/v1/market/ohlcv?symbol=BTCUSDT&timeframe=1h&limit=500"

# Indicateurs
curl -X POST -H "Authorization: Bearer $API_TOKEN" \
     -H "X-Session-User: regular" \
     -H "Content-Type: application/json" \
     -d '{"symbol":"BTCUSDT","timeframe":"1h","indicator":{"name":"ema","params":{"window":21}},"limit":200}' \
     http://localhost:8000/api/v1/indicators/compute

# Supports/Résistances
curl -H "Authorization: Bearer $API_TOKEN" \
     -H "X-Session-User: regular" \
     "http://localhost:8000/api/v1/levels?symbol=BTCUSDT&timeframe=4h&limit=500&max=5"

# Patterns chartistes
curl -H "Authorization: Bearer $API_TOKEN" \
     -H "X-Session-User: regular" \
     "http://localhost:8000/api/v1/patterns?symbol=BTC/USDT&timeframe=1h&limit=500"

# Synthèse agrégée
curl -X POST -H "Authorization: Bearer $API_TOKEN" \
     -H "X-Session-User: regular" \
     -H "Content-Type: application/json" \
     -d '{"symbol":"BTCUSDT","timeframe":"1h","include_levels":true,"include_patterns":true}' \
     http://localhost:8000/api/v1/analysis/summary

# Recherche SearxNG
curl -H "Authorization: Bearer $API_TOKEN" \
     -H "X-Session-User: regular" \
     "http://localhost:8000/api/v1/search?q=bitcoin%20etf&categories=news,science"

# Metrics Prometheus
curl http://localhost:8000/metrics

消费SSE金融流

import { fetchEventSource } from "@microsoft/fetch-event-source";

/** Exemple Node.js/TypeScript pour analyser le flux SSE finance. */
async function streamFinanceAnalysis() {
  const controller = new AbortController();

  await fetchEventSource(
    "http://localhost:8000/stream/analysis?symbol=BTCUSDT&timeframe=1h",
    {
      headers: {
        Authorization: `Bearer ${process.env.MCP_API_TOKEN}`,
        "X-Session-User": process.env.MCP_SESSION_USER ?? "regular",
      },
      signal: controller.signal,
      async onmessage(message) {
        if (!message.event || !message.data) {
          return;
        }
        const payload = JSON.parse(message.data);
        switch (message.event) {
          case "token":
            console.log("Résumé partiel:", payload.payload?.text ?? payload.text);
            break;
          case "metric":
            console.log("Métrique:", payload.payload);
            break;
          case "done":
            controller.abort();
            break;
          default:
            console.log(`[${message.event}]`, payload.payload ?? payload);
        }
      },
    },
  );
}

streamFinanceAnalysis().catch((error) => {
  console.error("Stream interrompu", error);
});

后端发送的报头保证没有缓冲:

Content-Type: text/event-stream
Cache-Control: no-cache
Connection: keep-alive
X-Accel-Buffering: no

测试和CI

所有工作都在中声明 .github/workflows/ci.yml 并在 管道严格。

步骤本地命令
Lint Pythonruff check ., black --check src tests, isort --check-only src tests
Python类型mypy src
测试后端pytest -q (覆盖范围生成于 coverage.xml)
构建Dockerdocker build -f docker/Dockerfile . (集成HealthCheck)
前部类型检查cd frontend/ai-chatbot && pnpm exec tsc --noEmit
测试前端pnpm --filter ai-chatbot exec vitest run + pnpm exec playwright test

JUnit/Couverture工件由IC发布,以便于跟踪。

剧作家/E2E

在运行Playwright之前,请导出:

export PLAYWRIGHT=1
export PLAYWRIGHT_TEST_BASE_URL=http://127.0.0.1:3000
export MCP_API_BASE=http://127.0.0.1:8000
export MCP_API_TOKEN=playwright-token
export MCP_SESSION_USER=regular

莱赛斯 OPENAI_API_KEY 未为这些测试定义,以强制使用 提供者模拟(不需要向OpenAI发出实际请求)。为了跑步 生产,定义环境秘密中的关键。

安全和最佳实践

  • 永远不要提交 .env 或秘密-仅文件 .env.example

它们被版本化。

  • 配置器 ALLOWED_ORIGINS 明确在生产中;应用程序

如果列表在PlayWright模式下为空,则拒绝启动。

  • 莱斯路线批评迫在眉睫 Authorization: Bearer

X-Session-User.

  • MCP服务器(python -m chart_mcp.mcp_main)保存工具

create_finance_artifact, create_search_artifact, web_search, market 等,用于与前端对称集成。

  • 服务记录度量和结构化日志(/metrics).

包装和部署

docker compose -f docker/docker-compose.yml up --build
# -> lance l’API FastAPI (port 8000) et SearxNG (port 8080)

Dockerfile包括 HEALTHCHECK 呼叫者 docker/healthcheck.py,ce qui 允许Kubernetes、Docker Compose或CI验证 API。要部署Next.js前端,请按照Vercel(或 在标准Node.js模式下部署应用程序) MCP_API_BASE 到你的 安全API。

配置 NEXT_PUBLIC_API_BASE_URLNEXT_PUBLIC_API_TOKEN 指向FastAPI实例(默认情况下:与本地令牌来源相同)。VITEST测试包括: components/chart 当Playwright检查时 /chart 通过模拟道路。

ℹ️ Playwright配置将自动启动 pnpm dev 并在每次测试活动之前生成会话状态(Cookie)。无需手动启动前端。

前端有用的附加脚本:

# Analyse statique Next.js (ESLint)
pnpm lint

# Vérifie les types TypeScript sans émettre de fichiers
pnpm typecheck

# Lance les tests Vitest en mode surveillance
pnpm test:watch

# Démarre la suite e2e Playwright locale (le serveur Next.js est lancé automatiquement)
pnpm test:e2e

后端FastAPI

make setup
ALLOWED_ORIGINS=http://localhost:3000 make dev
  • make setup 安装Python依赖项并以可编辑模式注册项目。
  • ALLOWED_ORIGINS 必须至少包含一个授权来源;在本地

可以重用next.js前端URL(http://localhost:3000).

  • 服务器正在运行 具有自动充电。

MCP服务器

  • 安装 : pip install -r requirements.txt 安装 fastmcp.
  • 发射 : python -m chart_mcp.mcp_main 启动MCP服务器(stdio)。
  • 文档 :中描述的输入/输出方案 chart_mcp/schemas/mcp.py 和规格 .

展示的工具

工具主要输入输出
get_crypto_datasymbol, timeframe, limit, start, endHLCV排行榜 {ts,o,h,l,c,v} 由Pydantic验证
compute_indicatorsymbol, timeframe, indicator, params, limit列表 {ts, valeurs...}NaN
identify_support_resistancesymbol, timeframe, limit, params水平 {price, kind, strength, strength_label, ts_range}
detect_chart_patternssymbol, timeframe, limit, params数字 {name, score, confidence, points, metadata}
generate_analysis_summarypayload (symbol, timeframe,选项)教学文本+ disclaimer
web_searchquery, categories, time_rangeSearXNG结果 {title, url, snippet, source, score}

示例调用(FastMCP客户端)

fastmcp call python -m chart_mcp.mcp_main compute_indicator \
  '{"symbol": "BTCUSDT", "timeframe": "1h", "indicator": "ema", "limit": 100}'

SearxNG

存款包括现成的SearXNG服务:

  • 文件: docker/docker-compose.yml, docker/docker-compose.dev.yml, docker/searxng/settings.yml.
  • 环境变量: SEARXNG_BASE_URL, SEARXNG_SECRET (未提交), SEARXNG_TIMEOUT (可选)。
  • 开始:
docker compose -f docker/docker-compose.dev.yml up --build searxng

L’API FastAPI展会 /api/v1/search 一旦 SEARXNG_BASE_URL 将指向 http://searxng:8080.Le工具MCP web_search 基于相同的配置。

Docker和Compose

make docker-build
make docker-run
  • 图像包含一个 HEALTHCHECK 执行者 docker/healthcheck.py (请求 GET /health).
  • docker-compose.dev.yml 长矛 apisearxng 用于完整的堆栈。

测试和CI

本地订单:

make lint        # ruff
make typecheck   # mypy
make test        # pytest (unitaires + intégration + SSE)

CI管道(定义于 .github/workflows/ci.yml,待创建): ruffmypypytest → 构建镜像Docker→ 前端测试(Vitest/Playwright)→ 文物。

安全

  • 强制认证: Authorization: Bearer + X-Session-User: regular.
  • CORS严格:通过定义来源 ALLOWED_ORIGINS.生产中没有回退。
  • 秘密: .env 通过Environment/Docker Secrets注入的非承诺敏感变量。

版本列表

语言支持的版本
Python3.11,3.12
Node.js(前端即将推出)20.x

限制alpha

  • 仅加密数据(目前不支持股票或外汇)。
  • 基于教学启发式的人工智能合成,从不规定。
  • 基本模式检测(通道、三角形、简单烛台)。

许可证

麻省理工学院

目录标签

目录标签

技术分析TypeScript市场数据加密货币分析本地部署实时数据处理AI总结

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP