金融数据查询服务器

一个基于Supabase PostgreSQL数据库的金融数据工具服务器,提供公司概况、财务报告、股票价格、分析师评级等查询功能,适用于金融分析和投资决策。

  • by AshC2004
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 AshC2004/mcp-financial-server

使用说明

MCP金融服务器

一种模型上下文协议(MCP)服务器,通过Supabase PostgreSQL数据库公开财务数据工具。查询公司简介、财务报告、股票价格、分析师评级等,所有这些都可以从任何兼容MCP的客户端(如Claude Desktop或Cursor)访问。

建筑

graph LR
    A[MCP Client] -->|stdio / SSE| B[MCP Server]
    B --> C[Tool Handlers]
    C --> D[Input Validation]
    C --> E[Query Layer]
    E --> F[(Supabase PostgreSQL)]
    B --> G[Resources]
    B --> H[Prompt Templates]

关键部件:

  • 传输层 --stdio(默认)用于本地使用,SSE用于远程/web访问
  • 8金融工具 --使用Pydantic验证的参数化查询
  • MCP资源 --直接浏览公司数据
  • 提示模板 --预先构建的分析和比较提示
  • 速率限制 --SSE运输上的滑动窗口限制器(60个要求/分钟)

工具

工具 说明
get_company_profile 按股票代码或名称查找公司
search_companies 按部门、行业、市值、国家搜索
get_financial_report 季度/年度财务报告
compare_companies 2-5家公司的并排比较
get_stock_price_history 历史OHLCV价格数据
get_analyst_ratings 分析师评级和共识摘要
screen_stocks 按收入、每股收益、利润率、负债率筛选
get_sector_overview 部门级汇总指标

设置

先决条件

  • Python 3.10+
  • A. 速贝 项目(自由层作品)

1.克隆并安装

git clone https://github.com/<your-user>/mcp-financial-server.git
cd mcp-financial-server
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

2.配置环境

cp .env.example .env
# Edit .env with your Supabase credentials

3.建立数据库

在Supabase SQL编辑器中运行模式:

# Copy contents of database/schema.sql into Supabase SQL Editor and run
# Then run database/seed.sql to populate with sample data

或者使用种子脚本:

python database/seed_script.py

4.运行服务器

stdio模式 (适用于克劳德桌面/光标):

python -m src.server

SSE模式 (适用于远程/web客户端):

python -m src.server --sse
# Server starts on http://127.0.0.1:8000

环境变量

变量 必填 描述
SUPABASE_URL 是 您的Supabase项目URL
SUPABASE_ANON_KEY 是 支持匿名/公钥
SUPABASE_SERVICE_ROLE_KEY 是 支持服务角色密钥(完全数据库访问)
DATABASE_URL 否 PostgreSQL直接连接字符串
SERVER_PORT 无 SSE服务器端口(默认:8080)

工具调用示例

获取公司简介

{
  "tool": "get_company_profile",
  "arguments": { "identifier": "AAPL" }
}

答复:

{
  "status": "success",
  "data": {
    "ticker": "AAPL",
    "name": "Apple Inc.",
    "sector": "Technology",
    "market_cap": 3200000000000,
    "ceo": "Tim Cook",
    "employees": 164000
  }
}

比较公司

{
  "tool": "compare_companies",
  "arguments": {
    "tickers": ["AAPL", "MSFT", "GOOGL"],
    "metrics": ["revenue", "eps", "gross_margin"]
  }
}

屏幕库存

{
  "tool": "screen_stocks",
  "arguments": {
    "min_eps": 3.0,
    "sector": "Technology"
  }
}

与MCP客户端连接

克劳德桌面

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "financial-data": {
      "command": "python",
      "args": ["-m", "src.server"],
      "cwd": "/path/to/mcp-financial-server",
      "env": {
        "SUPABASE_URL": "your-url",
        "SUPABASE_ANON_KEY": "your-key",
        "SUPABASE_SERVICE_ROLE_KEY": "your-key"
      }
    }
  }
}

光标

添加到光标MCP设置中:

{
  "financial-data": {
    "command": "python",
    "args": ["-m", "src.server"],
    "cwd": "/path/to/mcp-financial-server"
  }
}

MCP资源

  • financial://companies --列出所有公司,包括股票代码、名称、行业、市值
  • financial://company/{ticker} --完整的公司简介和最新的财务报告

提示模板

  • 分析公司 --为任何股票生成全面的分析提示
  • 比较公司 --为两个自动收报机生成并排比较提示

运行测试

pytest tests/ -v

项目结构

mcp-financial-server/
├── database/
│   ├── schema.sql          # PostgreSQL table definitions
│   ├── seed.sql            # Sample data (20 companies, 240 reports, etc.)
│   └── seed_script.py      # Python seed data generator
├── src/
│   ├── config/
│   │   └── env.py          # Environment validation
│   ├── db/
│   │   ├── client.py       # Supabase client singleton
│   │   └── queries.py      # Parameterized query functions
│   ├── middleware/
│   │   └── rate_limiter.py  # Sliding window rate limiter
│   ├── tools/               # Tool module (handlers in server.py)
│   ├── utils/
│   │   ├── errors.py       # Custom error classes
│   │   └── formatters.py   # Response formatting
│   ├── validators/
│   │   └── input_validator.py  # Pydantic schemas for all tools
│   └── server.py           # MCP server entry point
├── tests/
│   └── test_tools.py       # Unit tests (32 tests)
├── .env.example
└── pyproject.toml

数据

该数据库包含20家真实公司的样本数据:

AAPL、MSFT、GOOGL、AMZN、NVDA、META、TSLA、JPM、JNJ、V、PG、UNH、HD、MA、DIS、NFLX、ADBE、CRM、INTC、AMD

有:

  • 240份财务报告 (2022-2024年季度)
  • 约1260条股价记录 (每家公司90个交易日)
  • 40-60分析师评分 (每家公司2-3人)