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//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 credentials3.建立数据库
在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.py4.运行服务器
stdio模式 (适用于克劳德桌面/光标):
python -m src.serverSSE模式 (适用于远程/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人)
