股票分析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 查看完整列表和详细信息
📋 先决条件
- 数据库:Supabase帐户(可用免费层)或PostgreSQL
- 码头工人 (可选):用于容器化部署
- 克劳德桌面:已安装最新版本
- API密钥 (可选):仅当您想使用雅虎财经以外的API时
🚀 快速启动(不需要API密钥!)
步骤1:获取数据库(Supabase)
- 注册Supabase (免费):https://supabase.com/
- 创建新项目
- 获取您的DATABASE_URL:
- 转到项目设置>数据库 - 复制“连接字符串”(URI格式)
步骤2:配置环境
- 复制示例环境文件:
cp .env.example .env- 编辑
.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桌面
- 查找您的Claude Desktop配置文件:
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - 窗户: %APPDATA%\Claude\claude_desktop_config.json - Linux: ~/.config/Claude/claude_desktop_config.json
- 添加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:测试设置
- 重新启动克劳德桌面
- 检查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:来自凭证主控的令牌IDexchange:“NSE”、“BSE”、“NFO”等。interval:“一分钟”、“五分钟”和“一天”等。from_date: "2024-01-01 09:15"to_date: "2024-01-01 15:30"
🔒 安全说明
- 永远不要承诺你的
.env文件 到版本控制 - 确保API密钥的安全 -不要分享
- 使用卷装载 将数据库持久化到容器外
- 定期按键轮换 建议用于生产
🐛 故障排除
常见问题
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支持
______________________________________________________________________
交易愉快! 📈💚
