市场情报MCP后端服务
一个运行在MCP(模型上下文协议)服务器上的生产级后端服务,通过保持完整上下文的对话界面提供AI驱动的市场智能。
______________________________________________________________________
概述
这项服务通过结合以下要素提供实时市场情报:
- MCP 服务器带有5种专用市场数据工具的FastMCP框架
- 人工智能集成Groq LLM(llama-3.1-8b-instant)用于自然语言理解
- 上下文管理基于会话的对话历史记录,采用持久化存储
- 数据来源Alpha Vantage(市场数据)、NewsAPI(财经新闻)
______________________________________________________________________
建筑
User Query → FastAPI Endpoint → AI Agent → MCP Server → Market Tools
↓
Alpha Vantage / NewsAPI
↓
Real-time Data核心组件
- MCP服务器 (
app/mcp/server.py)
- 实现模型上下文协议 - 管理5种市场情报工具 - 处理工具执行和上下文
- 人工智能代理 (
app/agents/market_intelligence_agent.py)
- 处理自然语言查询 - 根据上下文规划工具使用 - 生成对话回复
- 上下文管理器 (
app/services/context_manager.py)
- 每会话保持对话历史记录 - 在 SQLite 数据库中存储上下文 - 实现令牌预算管理
- API路由器 (
app/api/router.py)
- 暴露REST端点 - 管理会话和速率限制 - 提供流式和非流式响应
______________________________________________________________________
可用的MCP工具
| 工具 | 描述 | 数据来源 |
|---|---|---|
get_stock_price | 当前股价及变动百分比 | Alpha Vantage 全球报价 |
get_stock_info | 公司基本面和概况 | Alpha Vantage 概述 |
calculate_indicators | 相对强弱指数(RSI)和移动平均线(MA-20,MA-50) | Alpha Vantage 日线时间序列数据 |
get_market_news | 最新财经新闻头条 | NewsAPI |
get_market_summary | 主要指数(标准普尔500指数、道琼斯指数、纳斯达克指数、罗素指数) | Alpha Vantage(阿尔法优势,此处为假设的翻译,实际可能指某个提供金融数据或分析服务的平台名) |
______________________________________________________________________
API终端点
非流式终端(必需)
POST /api/query
接收问题并返回包含上下文的AI生成答案。
请求:
{
"message": "Give me the latest news on the stock market",
"session_id": "optional-session-id"
}回答:
{
"response": "AI-generated answer with context",
"session_id": "abc-123-def",
"metadata": {
"tool_results": [...],
"market_state": "closed",
"market_open": false
}
}流式传输终端(额外奖励)
POST /api/query/stream
用于实时响应的服务器发送事件流端点。
额外的终点(或目标)
POST /api/session/new- 创建新的对话会话GET /api/session/{id}/history- 获取对话历史记录DELETE /api/session/{id}- 删除会话GET /api/market/summary- 直接市场概要GET /api/health- 健康检查GET /metrics- Prometheus指标
______________________________________________________________________
测试
快速测试
# 1. Health Check
curl https://your-deployment-url.app/api/health
# 2. Create Session
curl -X POST https://your-deployment-url.app/api/session/new \
-H "Content-Type: application/json" \
-d '{}'
# 3. Query Endpoint (Required)
curl -X POST https://your-deployment-url.app/api/query \
-H "Content-Type: application/json" \
-d '{
"message": "Give me the latest news on the stock market",
"session_id": "SESSION_ID_FROM_STEP_2"
}'示例查询
# Stock price
curl -X POST https://your-deployment-url.app/api/query \
-H "Content-Type: application/json" \
-d '{"message": "What is the current price of AAPL?", "session_id": "SESSION_ID"}'
# Technical indicators
curl -X POST https://your-deployment-url.app/api/query \
-H "Content-Type: application/json" \
-d '{"message": "Give me RSI and moving averages for Tesla", "session_id": "SESSION_ID"}'
# Market summary
curl https://your-deployment-url.app/api/market/summary
# Streaming endpoint (bonus)
curl -N -X POST https://your-deployment-url.app/api/query/stream \
-H "Content-Type: application/json" \
-d '{"message": "Tell me about the tech sector", "session_id": "SESSION_ID"}'______________________________________________________________________
技术栈
核心框架
- Python 3.11或更高版本 - 编程语言
- FastAPI(快速API) - 异步网络框架
- FastMCP - 模型上下文协议实现
- Uvicorn(注:Uvicorn是一个用于构建ASGI应用的ASGI服务器,常用于Python的异步Web框架中,如FastAPI) - ASGI服务器
人工智能与大型语言模型
- Groq API - 大语言模型(LLM)推理(llama-3.1-8b-instant)
- 提示工程 - 上下文感知的工具规划
数据来源
- Alpha Vantage API - 实时股市数据
- NewsAPI(新闻应用程序编程接口) - 金融新闻聚合
- 雅虎财经 - 备用数据提供商
数据库与存储
- SQLAlchemy 2.0 - 异步ORM(对象关系映射)
- aiosqlite - 异步 SQLite 驱动程序
- 会话存储(或会话级存储) - 会话持久性
制作特点
- 速率限制 - SlowAPI(每个客户端每分钟30个请求)
- 缓存 - 5分钟TTL(生存时间)且线程安全
- 重试逻辑 - 带指数退避的坚持性(或:具有指数退避策略的坚持不懈)
- 监测 - Prometheus 指标
- 安全 可选的API密钥认证,CORS配置
______________________________________________________________________
上下文保持(或上下文保留)
上下文是如何被保留的
- 基于会话的存储
- 每个用户都会获得一个唯一的会话ID - 所有消息均存储在SQLite数据库中 - 跨查询维护的对话历史
- 上下文管理器
- 检索最后N条消息(默认:10条) - 包含元数据(时间戳、工具结果) - 清理旧消息以管理令牌预算
- 工具结果集成
- 每条消息中存储的工具输出 - 代理引用了之前的工具调用 - 支持后续提问,无需重复查询
示例
Query 1: "What is the price of AAPL?"
→ Agent calls get_stock_price tool
→ Stores result: $245.27
Query 2: "What about its RSI?" (no need to specify AAPL again)
→ Agent retrieves context (AAPL from previous query)
→ Calls calculate_indicators for AAPL
→ Returns RSI with full context______________________________________________________________________
配置
环境变量
# Required
GROQ_API_KEY=your_groq_api_key
ALPHA_VANTAGE_KEY=your_alpha_vantage_key
NEWS_API_KEY=your_news_api_key
# Optional
GROQ_MODEL=llama-3.1-8b-instant
DATABASE_URL=sqlite+aiosqlite:///./market_intelligence.db
MAX_CONTEXT_MESSAGES=10
ALPHA_VANTAGE_CACHE_TTL=300
CORS_ALLOW_ALL=true
# Production (optional)
REQUIRE_API_KEY=true
API_KEYS=key1,key2,key3______________________________________________________________________
MCP服务器配置
服务器初始化
使用FastMCP框架对MCP服务器进行初始化:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP(
name="Market Intelligence MCP",
instructions=(
"Provide actionable market intelligence leveraging live market data, "
"curated news, and technical indicators. Maintain conversational context "
"to personalize responses."
),
log_level="INFO",
)工具注册
每种市场情报工具都已在MCP服务器上注册:
mcp.add_tool(get_stock_price, name="get_stock_price", description="...")
mcp.add_tool(get_stock_info, name="get_stock_info", description="...")
mcp.add_tool(calculate_indicators, name="calculate_indicators", description="...")
mcp.add_tool(get_market_news, name="get_market_news", description="...")
mcp.add_tool(get_market_summary, name="get_market_summary", description="...")MCP端点
/mcp- MCP HTTP 端点/mcp/sse- MCP Server-Sent Events 端点
______________________________________________________________________
部署
本地开发
# Install dependencies
pip install -r requirements.txt
# Set environment variables
cp .env.example .env
# Edit .env with your API keys
# Run server
uvicorn app.main:app --reload --port 8000Docker 部署
# Build image
docker build -t market-intelligence-api .
# Run container
docker run -p 8000:8000 \
-e GROQ_API_KEY=$GROQ_API_KEY \
-e ALPHA_VANTAGE_KEY=$ALPHA_VANTAGE_KEY \
-e NEWS_API_KEY=$NEWS_API_KEY \
market-intelligence-api铁路部署
- 将代码推送到GitHub
- 将存储库连接到铁路系统
- 在设置 → 变量 中添加环境变量
- 通过Dockerfile自动部署
______________________________________________________________________
生产特性
速率限制
- 客户端:每个IP每分钟30个请求
- Alpha Vantage:使用令牌桶算法,每分钟5次请求
- 超过限制时自动返回429响应
缓存
- 股票价格的5分钟TTL(时间到期限制)
- 线程安全的缓存实现
- 预热后90%的缓存命中率
数据血缘(或数据来源追踪)
每个回复都包括:
source数据提供商(alpha_vantage,newsapi)as_of数据的时间戳cached是否来自缓存market_state开放/关闭/非办公时间delayed数据是否延迟
监测
- Prometheus指标位于
/metrics - 请求次数、持续时间、错误率
- 缓存命中/未命中率
- Alpha Vantage API调用追踪
______________________________________________________________________
项目结构
Backend_MCP/
├── app/
│ ├── main.py # FastAPI application entry point
│ ├── agents/
│ │ └── market_intelligence_agent.py # AI agent with tool planning
│ ├── api/
│ │ └── router.py # REST API endpoints
│ ├── core/
│ │ └── config.py # Configuration management
│ ├── mcp/
│ │ └── server.py # MCP server implementation
│ ├── models/
│ │ ├── database.py # SQLAlchemy models
│ │ └── market_data.py # Data models with provenance
│ ├── services/
│ │ └── context_manager.py # Session & context management
│ └── utils/
│ ├── auth.py # API key authentication
│ └── rate_limiter.py # Rate limiting & caching
├── tests/ # Test suite
├── Dockerfile # Container configuration
├── requirements.txt # Python dependencies
└── README.md # This file______________________________________________________________________
安全
- API密钥认证 (可选):X-API-Key头部验证
- CORS 配置可配置的允许来源
- 速率限制防止滥用和拒绝服务(DOS)攻击
- 输入验证所有请求的Pydantic模型
- 密钥管理环境变量,不使用硬编码密钥
______________________________________________________________________
许可证
麻省理工学院许可证
______________________________________________________________________
链接
- GitHub 仓库https://github.com/BalajiMittapalli/market-intelligence-mcp(中文可表述为:GitHub上的市场情报MCP项目链接,由BalajiMittapalli维护)
- API 文档:
/docs(Swagger UI) - 指标仪表板:
/metrics(Prometheus 格式)
______________________________________________________________________
使用FastAPI、FastMCP、Groq LLM和Alpha Vantage API构建
