交易视图筛选器数据服务

通过Supabase动态配置获取TradingView筛选器数据的MCP服务器,利用持久化浏览器会话实现2-3秒快速响应。

  • by sandywhat2eat
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 sandywhat2eat/tradingview-screener-mcp

使用说明

TradingView筛选器MCP服务器

MCP服务器,用于从Supabase获取动态配置的TradingView筛选器数据。使用持久浏览器会话提供2-3秒的快速响应时间。

特性

  • 动态配置:从Supabase加载筛选器 controls 桌子
  • 快速响应:使用持久浏览器获取2-3秒
  • 索引过滤:按九个索引(NIFTYBANK、NIFTYIT等)过滤结果
  • 自动配置:添加/删除筛选器不需要更改代码
  • 持续会话:维护浏览器会话以获得最佳性能

安装

# Install Node.js dependencies
npm install

# Install Python dependencies (using existing venv)
source /Users/jaykrish/agents/project_output/venv/bin/activate
pip install -r requirements.txt

配置

环境变量(.env)

SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_anon_key

TradingView Cookie

复制 cookies.json 将TradingView身份验证Cookie添加到根目录。

用法

启动持久服务

持久浏览器服务必须运行才能获得最佳性能:

./start_screener_service.sh

启动MCP服务器

npm start

停止持久服务

./stop_screener_service.sh

MCP配置

添加到您的 .mcp.json:

{
  "mcpServers": {
    "tradingview-screener": {
      "command": "node",
      "args": [
        "/Users/jaykrish/Documents/digitalocean/tradingview-screener-mcp/src/tradingview_screener_mcp.js"
      ]
    }
  }
}

可用工具

1.列表_筛选器_类型

列出数据库中所有可用的筛选器类型。

2.fetch_screener_data

获取特定类型的筛选器数据。

参数:

  • screener_type (必填):控制表中的策略名称
  • index_filter (可选):九元、九元、五十元等。

例子:

{
  "screener_type": "momentum_breakout_with_volume",
  "index_filter": "NIFTYBANK"
}

3.获取_筛选_会话_健康

检查持久浏览器会话运行状况。

4.刷新_筛选_会话

重新启动浏览器会话。

5.刷新_筛选_配置

从数据库重新加载筛选器配置。

6.get_screen_config

查看当前筛选器配置。

数据库模式

筛选器在Supabase中配置 controls 表:

SELECT strategy, url, description, holding_period, tradetype
FROM controls
WHERE on_off = 'ON'
  AND url LIKE '%tradingview.com%';

必填栏:

  • strategy:唯一筛选器标识符
  • url:TradingView筛选器URL
  • on_off:“ON”启用
  • description:筛选器描述
  • holding_period:BTST、摆动、位置等。
  • tradetype:长,短,两者都有

建筑

MCP Server (Node.js)
    ↓
Python Handler
    ↓
Persistent Browser Service (localhost:8765)
    ↓
TradingView Website (Selenium)

演出

  • 首次请求:~8-10秒(浏览器初始化)
  • 后续请求:2-3秒(使用持久会话)
  • 缓存TTL:配置时间为5分钟
  • 会话生存期:直到手动重启或崩溃

故障排除

服务无法启动

# Check if port 8765 is in use
lsof -i :8765

# View service logs
tail -f logs/screener_service.log

未返回数据

  1. 检查cookies.json是否存在且有效
  2. 验证数据库中的TradingView URL
  3. 检查服务运行状况: curl http://localhost:8765/health

数据库连接问题

  1. 验证.env文件是否具有正确的Supabase凭据
  2. 检查控制表是否有带 on_off = 'ON'
  3. 确保列名匹配: description (不是 desc)

许可证

麻省理工学院