金融分析平台

一个结合模型上下文协议(MCP)服务器与智能编排技能的综合性金融研究和分析平台,支持Claude Code和OpenCode框架。

  • by LeeXN
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 LeeXN/financial-skills

使用说明

财务技能

中文版 |英语

一个全面的金融研究和分析平台,将模型上下文协议(MCP)服务器与Claude Code和OpenCode框架的智能编排技能相结合。

目录

快速开始

5分钟后起床跑步:

先决条件

  • Node.js v18或更高版本
  • 开源代码 或 克劳德 CLI工具
  • API密钥 来自Finnhub、Alpha Vantage、TwelveData和Tiingo(提供免费套餐)

步骤1:获取API密钥

  1. Finnhub:注册地址 https://finnhub.io/ 免费API密钥
  2. 阿尔法优势:获取钥匙 https://www.alphavantage.co/support/#api-钥匙
  3. 十二条数据:获取钥匙 https://twelvedata.com/pricing
  4. 廷戈:获取钥匙 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

部署脚本将:

  1. 检查Node.js和npm
  2. 让您选择要部署到哪个CLI(opencode、claude或两者)
  3. 在中配置API密钥和登录级别 .env 文件
  4. 安装MCP服务器和技能
  5. 在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

安装流程:

  1. 检查依赖关系(Node.js、npm)
  2. 选择目标CLI(opencode、claude或两者)
  3. 配置API密钥(可选,稍后可以添加)
  4. 安装MCP服务器和技能
  5. 在CLI配置中注册MCP

设置API密钥

API密钥是 可选的 在安装过程中。你可以:

  1. 通过环境变量设置 (建议用于自动化):
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
  1. 以交互方式输入 部署期间

  2. 稍后添加 通过编辑 .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 << EOF
FINNHUB_API_KEY=your_finnhub_key
ALPHAVANTAGE_API_KEY=your_alphavantage_key
TWELVEDATA_API_KEY=your_twelvedata_key
TIINGO_API_KEY=your_tiingo_key
LOG_LEVEL=INFO
EOF

# 5. Register MCP (if using jq)
jq --arg name financial-data \
   --arg path "$PWD/dist/server.js" \
   '.mcp[$name] = {
       type: "local",
       command: ["node", $path],
       environment: { 
         FINNHUB_API_KEY: $FINNHUB_API_KEY, 
         ALPHAVANTAGE_API_KEY: $ALPHAVANTAGE_API_KEY,
         TWELVEDATA_API_KEY: $TWELVEDATA_API_KEY,
         TIINGO_API_KEY: $TIINGO_API_KEY,
         LOG_LEVEL: "INFO"
       }
   }' ~/.config/opencode/opencode.json > /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, ERROR

MCP注册

部署脚本会自动在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 失败:

  1. 确保您在MCP目录中
  2. 删除 node_modules 和 package-lock.json,然后运行 npm install
  3. 检查Node.js版本(需要v18+)

API关键问题

无效的API密钥错误:

  • 在以下位置验证您的钥匙 Finnhub 和 阿尔法优势
  • 检查中是否有多余的空间 .env 文件
  • 确保密钥没有引号

速率限制错误:

  • 使用多个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许可证-有关详细信息,请参阅许可证文件。