🎙️ 人工智能语音组合分析仪(MCP POC)
最低限度的生产质量概念验证演示 MCP(模型上下文协议) + 当地Ollama(电话3) + 网络语音API 用于通过语音分析股票投资组合。
______________________________________________________________________
✨ 特性
- 📁 上传JSON投资组合文件
- 🗣️ 通过语音或文字提问
- 🤖 AI代理使用MCP工具获取实时市场数据
- 📊 投资组合价值、损益、行业配置、风险分析
- 🔊 AI会回答你
______________________________________________________________________
🗂️ 项目结构
voice-portfolio-mcp/
├── client/ # Next.js 14 frontend
│ ├── app/page.tsx # Main page (upload + chat)
│ ├── components/
│ │ ├── Chat.tsx # Chat UI with text + voice
│ │ └── VoiceInput.tsx # Web Speech API integration
│
├── server/ # Node.js + Express backend
│ ├── index.js # API routes: /upload-portfolio, /ask
│ ├── mcp/
│ │ ├── server.js # Ollama agent loop (tool orchestration)
│ │ └── tools.js # MCP tool definitions + implementations
│ ├── services/
│ │ ├── portfolioService.js # In-memory portfolio store
│ │ └── marketService.js # Yahoo Finance data fetching
│
├── data/
│ └── portfolio.example.json # Sample portfolio
│
└── .env.example______________________________________________________________________
🚀 快速开始
POC注释
这个项目是 概念验证 并且完全在本地运行。 使用 Ollama+Callam3 而不是生产托管的LLM(例如OpenAI API密钥)。 你做 不 需要任何付费的API密钥来运行此演示。
1.先决条件
- Node.js 18+
- Ollama安装:https://ollama.com
2.克隆和安装
# Install all dependencies
npm run install:all3.配置环境
cd server
cp ../.env.example .env
# Edit .env if neededOLLAMA_URL=http://localhost:11434
OLLAMA_MODEL=llama3
PORT=30014.启动Olama模型
使用应用程序时,请保持此终端运行。
ollama run llama35.运行应用程序
# From the project root directory — starts both server and client
npm run dev如果Ollama不跑步, /ask 响应将失败。
- 前端:http://localhost:3000
- 后端:http://localhost:3001
______________________________________________________________________
💬 用法
- 打开 http://localhost:3000
- 上传
data/portfolio.example.json(或您自己的投资组合) - 提出问题 通过键入或单击🎙️ 麦克风按钮:
- *“我的投资组合价值是多少?”* - *“哪只股票表现最好?”* - *“我的投资组合风险太大吗?”* - *“我最容易接触哪个行业?”*
- 启用🔊 语音输出 听到大声朗读的回答
______________________________________________________________________
📁 投资组合JSON格式
[
{ "symbol": "INFY", "quantity": 10, "avg_price": 1500 },
{ "symbol": "TCS", "quantity": 5, "avg_price": 3400 },
{ "symbol": "TATAMOTORS", "quantity": 12, "avg_price": 500 }
]______________________________________________________________________
🛠️ MCP工具
| 工具 | 说明 |
|---|---|
get_portfolio_holdings | 返回上传的资产 |
get_stock_price | 获取交易品种的实时价格(雅虎财经) |
get_multiple_stock_prices | 批量取价 |
calculate_portfolio_value | 总价值、损益、每日变化 |
analyze_sector_allocation | 按百分比分列的部门 |
analyze_portfolio_risk | 低/中/高风险评估 |
______________________________________________________________________
🏗️ 建筑
Browser (Next.js)
│ voice → text (Web Speech API)
│ POST /ask
▼
Express Server
│ runAgent(message)
▼
Local Ollama llama3
│ calls MCP tools
▼
MCP Tools → Yahoo Finance / portfolio store
│ results
▼
Final response → browser → speechSynthesis______________________________________________________________________
备注
- 印度NSE股票自动结算
.NS后缀 - 所有投资组合数据都存储在内存中(服务器重启时重置)
- 语音输入需要Chrome或Edge(支持Web Speech API)
