股票分析MCP服务器

一个用于实时股票市场分析的模型上下文协议(MCP)服务器,支持10多种免费股票市场API,包括Yahoo Finance、Alpha Vantage等,适用于印度股票(NSE/BSE)和全球市场分析。

  • by dineshratn
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 dineshratn/angel-one-stock-analysis

使用说明

股票分析MCP服务器

使用Claude Desktop进行实时股票市场分析的模型上下文协议(MCP)服务器。支持 10+免费股市API 包括雅虎财经、阿尔法Vantage、Twelve Data、Finnhub等。非常适合分析印度股市(NSE/BSE)和全球市场。

🌟 特性

  • 多个免费API:从10多家免费股票市场数据提供商中选择
  • 不需要API密钥:与雅虎财经一起开箱即用(默认)
  • 实时市场数据:实时股票价格、报价和市场数据
  • 历史数据:访问历史蜡烛数据进行技术分析
  • 印度ETF追踪:追踪17只以上受欢迎的印度ETF的实时价格⭐ 新
  • PostgreSQL存储:通过Supabase实现持久数据库存储
  • 投资组合分析:基于市盈率和股息收益率的人工智能投资组合分配
  • MCP集成:与Claude Desktop无缝集成
  • Docker支持:容器化部署以实现一致性
  • API回退:如果主API失败,则自动回退到替代API

📊 支持的API

API 免费层 API密钥 最适合
雅虎财经 ⭐ 无限制 ❌ 否 通用(默认)
阿尔法Vantage 每天25次 ✅ 是 技术指标
十二个数据 800/天 ✅ 是 实时数据
Finnhub 60/分钟 ✅ 是 新闻和情绪
NSE印度 各不相同 ❌ 否 印度股票(NSE)
IEX云 50k/月 ✅ 是 美国基本面
Polygon.io 5/分钟 ✅ 是 高质量的美国数据
市场堆栈 每月100个 ✅ 是 全球覆盖

看 FREE_STOC_APIS.md 查看完整列表和详细信息

📋 先决条件

  1. 数据库:Supabase帐户(可用免费层)或PostgreSQL
  2. 码头工人 (可选):用于容器化部署
  3. 克劳德桌面:已安装最新版本
  4. API密钥 (可选):仅当您想使用雅虎财经以外的API时

🚀 快速启动(不需要API密钥!)

步骤1:获取数据库(Supabase)

  1. 注册Supabase (免费):https://supabase.com/
  2. 创建新项目
  3. 获取您的DATABASE_URL:
    • 转到项目设置>数据库
    • 复制“连接字符串”(URI格式)

步骤2:配置环境

  1. 复制示例环境文件:
cp .env.example .env
  1. 编辑 .env 并添加您的数据库URL:
# Required: Database
DATABASE_URL=postgresql://postgres:yourpassword@db.xxx.supabase.co:5432/postgres

# Optional: Choose API provider (default: yfinance - no key needed)
STOCK_API_PROVIDER=yfinance

就是这样!雅虎金融(默认提供商)不需要API密钥

步骤3:安装依赖项(如果在本地运行)

pip install -r requirements.txt

步骤4:测试设置

# Test API providers
python test_api_providers.py

# Analyze stocks
python analyze_all_stocks.py

🔑 使用其他API(可选)

想要使用不同的API吗?方法如下:

选项1:Alpha Vantage(每天25次通话)

# 1. Get free API key: https://www.alphavantage.co/support/#api-key
# 2. Add to .env:
ALPHAVANTAGE_API_KEY=your_key_here
STOCK_API_PROVIDER=alphavantage

选项2:12次数据(800次通话/天)

# 1. Get free API key: https://twelvedata.com/pricing
# 2. Add to .env:
TWELVEDATA_API_KEY=your_key_here
STOCK_API_PROVIDER=twelvedata

选项3:Finnhub(60次通话/分钟)

# 1. Get free API key: https://finnhub.io/register
# 2. Add to .env:
FINNHUB_API_KEY=your_key_here
STOCK_API_PROVIDER=finnhub

看 FREE_STOC_APIS.md 适用于所有10+API选项!


📊 印度ETF追踪

追踪17种以上受欢迎的印度ETF(交易所交易基金)的价格:

# Run ETF tracker
python indian_etfs.py

# Output: Live prices, category analysis, top performers, value picks
# Exports to CSV automatically

追踪的ETF:

  • 股票ETF: Nifty 50,Nifty Next 50,Nift 100,Sensex
  • 行业ETF: 银行、IT、PSU银行
  • 黄金ETF: 多个黄金追踪基金
  • 流动性ETF: 现金管理和应急基金
  • 国际: 恒生(香港市场)
  • 符合伊斯兰教法: 虔诚的伊斯兰教法

特征:

  • ✅ 实时资产净值价格
  • ✅ 52周高/低跟踪
  • ✅ 交易量和资产管理规模数据
  • ✅ 费用比率比较
  • ✅ 分类分析
  • ✅ CSV导出以供进一步分析

看 印度_ETFS.md 获取完整的ETF列表和投资策略!


🐳 Docker设置

步骤3:构建Docker镜像

# Build the image
docker build -t angel-one-stock-analysis .

# Verify the build
docker images | grep angel-one

步骤4:配置Claude桌面

  1. 查找您的Claude Desktop配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 窗户: %APPDATA%\Claude\claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  2. 添加MCP服务器配置:

{
  "mcpServers": {
    "angel-one-stocks": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "/absolute/path/to/project/src/database:/app/src/database",
        "--env-file",
        "/absolute/path/to/project/.env",
        "angel-one-stock-analysis"
      ]
    }
  }
}

重要:替换 /absolute/path/to/project 带有此项目目录的实际路径!

步骤5:测试设置

  1. 重新启动克劳德桌面

  2. 检查MCP工具:您应该在Claude的工具菜单中看到Angel One工具:

    • get_table_overview
    • query_database
    • refresh_market_data
    • get_historical_data

🎮 用法示例

配置后,您可以向Claude提出以下问题:

基本查询

"Show me the schema of the stock database"
"Refresh the market data"
"Show me all available stocks"

市场分析

"Which stocks have volume greater than 1 million today?"
"Show me the top 10 stocks by price"
"Find stocks with price between 100 and 500"

历史数据

"Get me 5-minute candle data for SBIN-EQ for today"
"Fetch historical data for Reliance from last week"

高级分析

"Analyze the market trends and show me high-volume stocks"
"Compare the performance of banking stocks"
"Find stocks that hit upper circuit today"

📁 项目结构

angel-one-stock-analysis/
├── Dockerfile                          # Docker configuration
├── pyproject.toml                      # Python dependencies
├── .env.example                        # Example environment variables
├── README.md                           # This file
└── src/
    ├── stock_analysis/
    │   ├── __init__.py
    │   ├── main.py                     # MCP server implementation
    │   └── constant_parameters.py      # Configuration constants
    └── database/
        └── YYYY-MM-DD.db              # Daily SQLite databases

🔧 可用的MCP工具

1. get_table_overview()

返回数据库架构和示例数据。

2. query_database(sql_query: str)

在股票数据库上执行SELECT查询。

示例:

SELECT trading_symbol, last_price, volume 
FROM stock_data 
WHERE volume > 1000000 
ORDER BY volume DESC 
LIMIT 10;

3. refresh_market_data()

强制刷新Angel One API的市场数据。

4. get_historical_data(symbol_token, exchange, interval, from_date, to_date)

获取历史蜡烛数据。

参数:

  • symbol_token:来自凭证主控的令牌ID
  • exchange:“NSE”、“BSE”、“NFO”等。
  • interval:“一分钟”、“五分钟”和“一天”等。
  • from_date: "2024-01-01 09:15"
  • to_date: "2024-01-01 15:30"

🔒 安全说明

  1. 永远不要承诺你的 .env 文件 到版本控制
  2. 确保API密钥的安全 -不要分享
  3. 使用卷装载 将数据库持久化到容器外
  4. 定期按键轮换 建议用于生产

🐛 故障排除

常见问题

1.身份验证失败

  • 在中验证您的凭据 .env
  • 检查TOTP令牌是否正确
  • 确保您的Angel One帐户处于活动状态

2.找不到数据库

  • 数据库是在首次数据提取时创建的
  • 使用 refresh_market_data() 强制数据提取
  • 检查Docker配置中的卷挂载路径

3.速率限制错误

  • Angel One对API呼叫有费率限制
  • 该代码包括处理此问题的延迟
  • 尝试减少代码中的批处理大小

4.Docker批量问题

  • 确保数据库路径存在
  • 检查Docker是否有权限写入该目录
  • 在Docker配置中使用绝对路径

调试模式

通过修改启用调试日志记录 main.py:

logging.basicConfig(level=logging.DEBUG)

📊 数据库模式

CREATE TABLE stock_data (
    symbol_token TEXT PRIMARY KEY,
    trading_symbol TEXT,
    name TEXT,
    exchange TEXT,
    instrument_type TEXT,
    last_price REAL,
    open_price REAL,
    high_price REAL,
    low_price REAL,
    close_price REAL,
    volume INTEGER,
    week_high_52 REAL,
    week_low_52 REAL,
    upper_circuit REAL,
    lower_circuit REAL,
    expiry DATE,
    strike_price REAL,
    lot_size INTEGER,
    tick_size REAL,
    last_updated TIMESTAMP
)

🔄 定制

筛选不同股票

编辑 constant_parameters.py:

# Change STOCK_FILTER to:
STOCK_FILTER = "NIFTY 100"  # For Nifty 100 stocks
STOCK_FILTER = "NIFTY 500"  # For Nifty 500 stocks
STOCK_FILTER = None          # For all NSE stocks

添加技术指标

您可以扩展 scrape_data() 使用以下库计算和存储技术指标的功能 ta-lib 或 pandas-ta.

修改间隔

在中更改默认蜡烛间隔 constant_parameters.py.

📚 参考文献

📝 许可证

这个项目是为了教育目的。请查看Angel One的API商业使用服务条款。

🤝 贡献

请随时打开问题或提交改进请求!

⚠️ 免责声明

此工具仅供参考。股票交易涉及风险。在做出投资决策之前,请进行自己的研究并咨询财务顾问。开发商不对任何交易损失负责。

📧 支持

对于Angel One API问题: SmartAPI支持论坛

对于MCP问题:请查看MCP文档或Claude Desktop支持


交易愉快! 📈💚