财务技能
中文版 |英语
一个全面的金融研究和分析平台,将模型上下文协议(MCP)服务器与Claude Code和OpenCode框架的智能编排技能相结合。
目录
快速开始
5分钟后起床跑步:
先决条件
- Node.js v18或更高版本
- 开源代码 或 克劳德 CLI工具
- API密钥 来自Finnhub、Alpha Vantage、TwelveData和Tiingo(提供免费套餐)
步骤1:获取API密钥
- Finnhub:注册地址 https://finnhub.io/ 免费API密钥
- 阿尔法优势:获取钥匙 https://www.alphavantage.co/support/#api-钥匙
- 十二条数据:获取钥匙 https://twelvedata.com/pricing
- 廷戈:获取钥匙 https://www.tiingo.com/account/api/token
第二步:培养财务技能
# Clone the repository
git clone https://github.com/your-org/financial-skills.git
cd financial-skills
# Set API keys (optional - will prompt if not set)
# For multiple keys, use comma-separated format: key1,key2,key3
export FINNHUB_API_KEY=your_finnhub_key
export ALPHAVANTAGE_API_KEY=your_alphavantage_key
export TWELVEDATA_API_KEY=your_twelvedata_key
export TIINGO_API_KEY=your_tiingo_key
export LOG_LEVEL=INFO
# Run the deployment script
./scripts/deploy.sh部署脚本将:
- 检查Node.js和npm
- 让您选择要部署到哪个CLI(opencode、claude或两者)
- 在中配置API密钥和登录级别
.env文件 - 安装MCP服务器和技能
- 在CLI配置中注册MCP
步骤3:验证安装
# Check registered MCP servers
opencode mcp list
# or
claude mcp list你应该看看 financial-data 在列表中。
重新启动IDE-所有MCP服务器和技能现在都准备好了!
步骤4:测试设置
尝试以下查询以验证一切正常:
基本市场数据:
"What's the current price of Apple stock?"
"Compare AAPL and MSFT market cap"
"Show me Tesla's revenue for the last 4 quarters"使用网络搜索(需要额外的MCP):
"Analyze Tesla's recent performance and find news explaining price movements"
"Research NVIDIA's latest earnings and summarize analyst reactions"安装
自动化安装
部署脚本(./scripts/deploy.sh)提供交互式安装体验:
./scripts/deploy.sh安装流程:
- 检查依赖关系(Node.js、npm)
- 选择目标CLI(opencode、claude或两者)
- 配置API密钥(可选,稍后可以添加)
- 安装MCP服务器和技能
- 在CLI配置中注册MCP
设置API密钥
API密钥是 可选的 在安装过程中。你可以:
- 通过环境变量设置 (建议用于自动化):
export FINNHUB_API_KEY=your_key
export ALPHAVANTAGE_API_KEY=your_key
export TWELVEDATA_API_KEY=your_key
export TIINGO_API_KEY=your_key
./scripts/deploy.sh- 以交互方式输入 部署期间
- 稍后添加 通过编辑
.env文件:
# For opencode
~/.opencode/mcp-servers/financial-data/.env
# For claude
~/.claude/mcp-servers/financial-data/.env多个API键(旋转)
为了更好地处理速率限制,您可以配置多个API密钥:
通过环境变量:
# Comma-separated keys
export FINNHUB_API_KEY=key1,key2,key3
export ALPHAVANTAGE_API_KEY=keyA,keyB,keyC
./scripts/deploy.sh或者通过编辑.env文件:
FINNHUB_API_KEY=key1,key2,key3
ALPHAVANTAGE_API_KEY=keyA,keyB,keyC
TWELVEDATA_API_KEY=keyX,keyY
TIINGO_API_KEY=keyM,keyN当检测到多个按键时,系统会自动:
- 启用按键旋转
- 跨密钥分发请求
- 达到速率限制时旋转到下一个键
或者使用交互式提示 在部署期间-当被问及多个密钥时,选择“是”。
手动安装
如果您更喜欢手动设置:
# 1. Copy skills (for opencode)
mkdir -p ~/.opencode/skills/
cp -r skills/financial-research ~/.opencode/skills/
# 2. Copy MCP source
mkdir -p ~/.opencode/mcp-servers/financial-data/
cp -r financial-data-mcp/* ~/.opencode/mcp-servers/financial-data/
# 3. Build and install dependencies
cd ~/.opencode/mcp-servers/financial-data/
npm install
npm run build
# 4. Create .env file with your API keys
cat > .env /tmp/config.json && mv /tmp/config.json ~/.config/opencode/opencode.json安装位置
| CLI | MCP服务器 | 技能 |
|---|---|---|
| 开放代码 | ~/.opencode/mcp-servers/financial-data/ | ~/.opencode/skills/financial-research/ |
| 克劳德 | ~/.claude/mcp-servers/financial-data/ | ~/.claude/skills/financial-research/ |
配置
API密钥配置
MCP服务器从 .env 安装目录中的文件:
单键:
FINNHUB_API_KEY=your_api_key
ALPHAVANTAGE_API_KEY=your_api_key
TWELVEDATA_API_KEY=your_api_key
TIINGO_API_KEY=your_api_key
LOG_LEVEL=INFO多个键(逗号分隔,允许旋转):
FINNHUB_API_KEY=key1,key2,key3
ALPHANTAGE_API_KEY=keyA,keyB,keyC当提供多个按键时,系统会自动启用按键旋转。
高级配置
这 .env 文件还支持以下选项:
# API Failover
API_FAILOVER_ENABLED=true
PRIMARY_API_SOURCE=finnhub
SECONDARY_API_SOURCE=alphavantage
# Retry
RETRY_ENABLED=true
RETRY_MAX_ATTEMPTS=3
# Timeout
API_TIMEOUT_MS=30000
# Circuit Breaker
CIRCUIT_BREAKER_ENABLED=true
CIRCUIT_BREAKER_FAILURE_THRESHOLD=5
# Key Rotation (automatically enabled when multiple keys detected)
KEY_ROTATION_ENABLED=true
KEY_ROTATION_RESET_WINDOW_MS=3600000
# Logging
LOG_LEVEL=INFO # DEBUG, INFO, WARN, ERRORMCP注册
部署脚本会自动在CLI配置中注册MCP服务器。
对于opencode: ~/.config/opencode/opencode.json 致克劳德: ~/.claude/settings.json
用法
基本查询
安装后,您可以查询财务数据:
"What's Apple's current stock price?"
"Show me the revenue trend for Microsoft over the last 4 quarters"
"Compare P/E ratios of FAANG stocks"工具使用示例
获取实时股票报价
{
"name": "get_stock_quote",
"arguments": {
"symbol": "AAPL"
}
}获取历史价格数据
{
"name": "get_stock_candles",
"arguments": {
"symbol": "MSFT",
"resolution": "D",
"from": "2024-01-01",
"to": "2024-12-31"
}
}获取公司信息
{
"name": "get_company_overview",
"arguments": {
"symbol": "GOOGL"
}
}获取财务报表
{
"name": "get_company_metrics",
"arguments": {
"symbol": "TSLA",
"metricType": "all"
}
}获取技术指标
{
"name": "get_technical_indicator",
"arguments": {
"symbol": "NVDA",
"indicator": "RSI",
"interval": "daily",
"time_period": "14"
}
}获取公司新闻
{
"name": "get_news",
"arguments": {
"symbol": "AAPL",
"category": "general"
}
}高级功能
MCP服务器提供以下工具:
实时和历史数据
get_stock_quote:获取实时股票报价(无源参数,自动选择)get_quote:具有可选源选择的get_stock_quote的别名get_stock_candles:获取具有时间分辨率的历史蜡烛/OHLCV数据
财务信息
get_company_basic_financials:获取公司财务指标get_company_metrics:获取公司指标(收入报表、资产负债表、现金流量报表)get_company_overview:获取公司信息(名称、行业、部门、市值)get_income_statement:获取损益表get_balance_sheet:获取资产负债表get_cash_flow:获取现金流量表get_daily_prices:获取每日价格历史记录
新闻与分析
get_news:获取公司新闻和头条get_technical_indicator:获取技术指标(SMA、EMA、RSI、MACD等50+)
附加功能
- 智能源选择:每个工具的自动优化API选择
- 级联故障切换:错误时自动回退到其他来源
- 关键点旋转:在多个API密钥之间分发请求
- 调试日志:可配置的日志级别(调试、信息、警告、错误)
数据源
该服务器支持6个数据源,覆盖美国和中国市场:
| 来源 | 市场 | 功能 | 免费层 | API密钥 |
|---|---|---|---|---|
| Finnhub | 美国、全球 | 实时报价、财务、新闻、美国证券交易委员会文件 | 60个电话/分钟 | Finhub.io |
| 阿尔法优势 | 美国 | 历史价格、技术指标、公司概述 | 25次通话/天 | alphavantage.co |
| 十二条数据 | 美国、全球 | 实时报价、历史数据、技术指标 | 800次通话/天 | twelveda.com |
| 廷戈 | 美国 | IEX报价、EOD价格、新闻、基本面 | 500需求/小时 | tiingo.com |
| 新浪财经 | 中国A股 | 实时报价、K线数据、批量报价 | 无限制 | 无需 |
| 东方财富 | 中国A股 | 实时报价,历史K线 | 无限制 | 无需 |
平台能力
| 能力 | Finnhub | 阿尔法Vantage | TwelveData | Tiingo | 新浪 | 东方理财 |
|---|---|---|---|---|---|---|
| 实时报价 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 历史价格 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 技术指标 | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
| 公司概况 | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ |
| 财务报表 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| 新闻 | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ |
| 批量报价 | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ |
| 美国股票 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| 中国A股 | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ |
市场感知路由
服务器会自动从交易品种中检测市场,并将其路由到适当的来源:
| 符号格式 | 市场 | 使用的来源 |
|---|---|---|
AAPL, MSFT | 美国 | Finnhub、TwelveData、Tiingo、Alpha Vantage |
601899.SH, 600519.SS | 上海 | 新浪、东方财经 |
000001.SZ, 300750.SZ | 深圳 | 新浪、东方理财 |
430047.BJ | 北京 | 新浪、东方财经 |
示例-查询中国股票:
{
"name": "get_stock_quote",
"arguments": {
"symbol": "601899.SH"
}
}智能源选择
服务器根据每个平台的优势自动为每个工具选择最佳数据源。当一个源发生故障(速率限制、超时或错误)时,服务器会按优先级顺序级联到下一个源。
按工具的默认优先级顺序:
| 工具 | 优先级顺序 |
|---|---|
get_stock_quote | Finnhub、TwelveData、Tiingo、AlphaVantage(美国)/新浪、东方理财(中国) |
get_stock_candles | TwelveData、Finnhub、Tiingo(美国)/新浪、东方理财(中国) |
get_technical_indicator | TwelveData,阿尔法Vantage |
get_daily_prices | Tiingo、Alpha Vantage、TwelveData(美国)/新浪、东方理财(中国) |
get_news Finnhub的提戈。 | |
get_quote | TwelveData、Tiingo、AlphaVantage(美国)/新浪、东方理财(中国) |
get_company_overview 英文名称:Alpha Vantage |
自定义优先级覆盖:
您可以使用环境变量覆盖任何工具的默认优先级:
# Example: prioritize Alpha Vantage for stock quotes
SOURCE_PRIORITY_GET_STOCK_QUOTE=alphavantage,finnhub,twelvedata
# Example: use only Finnhub for news
SOURCE_PRIORITY_GET_NEWS=finnhub可用技能
金融研究技能提供:
- 比较分析:比较多家公司
- 趋势分析:分析历史趋势
- 新闻情绪:分析新闻对股价的影响
- 投资报告:生成全面的投资摘要
故障排除
MCP服务器未出现
检查MCP是否已注册:
opencode mcp list
# or
claude mcp list检查.env文件:
cat ~/.opencode/mcp-servers/financial-data/.env检查dist文件夹是否存在:
ls -la ~/.opencode/mcp-servers/financial-data/dist/server.js构建错误
如果 npm run build 失败:
- 确保您在MCP目录中
- 删除
node_modules和package-lock.json,然后运行npm install - 检查Node.js版本(需要v18+)
API关键问题
无效的API密钥错误:
速率限制错误:
- 使用多个API密钥(comm-aseparated)
- 启用重试和断路器选项
- 考虑升级到付费API层
常见问题
| 问题 | 解决方案 |
|---|---|
| MCP未连接 | 重新启动IDE |
| “找不到命令” | 安装Node.js v18+ |
| 构建失败 | 运行 npm install 在MCP目录中 |
| 技能未加载 | 检查技能目录是否存在 |
项目结构
financial-skills/
├── financial-data-mcp/ # MCP server source
│ ├── src/ # TypeScript source
│ ├── dist/ # Compiled JavaScript (pre-built)
│ ├── .env.example # Environment template
│ └── package.json
├── skills/ # Skills packages
│ └── financial-research/ # Main financial research skill
├── scripts/ # Deployment scripts
│ └── deploy.sh # Main deployment script
└── README.md # This file发展
构建MCP服务器
cd financial-data-mcp
npm install
npm run build测试MCP服务器
cd financial-data-mcp
node dist/server.js然后通过stdin发送JSON-RPC请求。
贡献
欢迎投稿!请随时提交问题或拉取请求。
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
