AI语音投资组合分析工具

一个结合MCP协议、本地Ollama(llama3)和Web Speech API的AI语音投资组合分析工具,支持上传JSON投资组合文件并通过语音或文本提问获取实时市场数据分析。

  • by Sanny67
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 Sanny67/voice-portfolio-mcp

使用说明

🎙️ 人工智能语音组合分析仪(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:all

3.配置环境

cd server
cp ../.env.example .env
# Edit .env if needed
OLLAMA_URL=http://localhost:11434
OLLAMA_MODEL=llama3
PORT=3001

4.启动Olama模型

使用应用程序时,请保持此终端运行。

ollama run llama3

5.运行应用程序

# From the project root directory — starts both server and client
npm run dev

如果Ollama不跑步, /ask 响应将失败。

  • 前端:http://localhost:3000
  • 后端:http://localhost:3001

💬 用法

  1. 打开 http://localhost:3000
  2. 上传 data/portfolio.example.json (或您自己的投资组合)
  3. 提出问题 通过键入或单击🎙️ 麦克风按钮:
    • “我的投资组合价值是多少?”
    • “哪只股票表现最好?”
    • “我的投资组合风险太大吗?”
    • “我最容易接触哪个行业?”
  4. 启用🔊 语音输出 听到大声朗读的回答

📁 投资组合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)