政治交易数据分析助手

一个全栈聊天应用,通过静态前端和Node.js + Express后端集成Hugging Face LLM API和MCP Capitol Trades服务器,用于处理和分析政治交易数据。

  • by anguslin
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 anguslin/llm-mcp-bridge

使用说明

政治家交易数据助理

一个完整的聊天应用程序,将静态前端(GitHub Pages)连接到Node.js+Express后端,该应用程序与Hugging Face LLM API和 MCP国会大厦交易 服务器。该系统通过对话式UI处理用户消息,维护对话历史,通过协议自动选择MCP工具,并返回LLM生成的汇总响应。

项目结构

politician-trading-data-assistant/
├── backend/          # Node.js + Express backend server
│   ├── config/       # Configuration and constants
│   ├── middleware/   # Express middleware (auth, CORS, rate limiting)
│   ├── routes/       # API routes
│   ├── services/     # Business logic (LLM, MCP, history, prompts)
│   ├── scripts/      # Test scripts
│   ├── server.js     # Main server entry point
│   └── package.json  # Backend dependencies
│
└── ui/               # Static frontend for GitHub Pages
    ├── index.html    # Main HTML file
    ├── styles.css    # Styling
    ├── app.js        # Frontend JavaScript
    └── README.md     # Frontend setup instructions

快速开始

后端设置

  1. 导航到后端目录:

    cd backend
    
  2. 安装依赖项:

    npm install
    
  3. 创建一个 .env 文件基于 .env.example:

    cp .env.example .env
    
  4. 在中配置环境变量 .env:

    • HF_API_KEY:您的拥抱脸API代币(必需)
    • API_KEY:用于身份验证的自定义API密钥(必需)
    • HF_MODEL_TYPE:要使用的拥抱面部模型标识符(必填,例如。 mistralai/Mistral-7B-Instruct-v0.3)
    • PORT:服务器端口(可选,默认为3000)
    • GITHUB_PAGES_DOMAIN:(可选)CORS允许的来源
    • TRUST_PROXY:(可选)快速代理信任设置;使用 1 渲染上
  5. 运行服务器:

    npm run dev:local
    

看 后端/README.md 查看详细的后端文档。

前端设置

  1. 导航到ui目录:

    cd ui
    
  2. 更新 app.js 使用API密钥(基本URL是自动检测的):

    const API_KEY = 'your-api-key-here'; // Must match your backend API_KEY
    

    自动检测: API_BASE_URL 自动路由到 http://localhost:3000 当UI打开时 localhost/127.0.0.1,并返回到中定义的生产渲染URL app.js。如果部署到其他地方,请更新该生产URL。

  3. 部署到GitHub页面:

    • 推一下 ui/ 文件夹到您的GitHub存储库
    • 前往“设置”>“页面”
    • 将源设置为包含以下内容的分支 ui/
    • 将根目录设置为 /ui

看 ui/README.md 查看详细的前端文档。

特性

  • 后端:

    • 带有RESTful API的Express服务器
    • 安全性:CORS、API密钥验证、速率限制
    • LLM集成:通过 @huggingface/inference 软件开发工具包
    • MCP集成: MCP国会大厦交易 通过模型上下文协议进行数据访问
    • 两阶段LLM工作流程:MCP工具选择和数据分析
    • 每个用户会话的会话历史管理
  • 前端:

    • 现代、响应式聊天界面
    • 与后端API实时通信
    • 以markdown格式显示LLM响应和MCP数据
    • 使用动画进度条处理错误和加载状态(最多45秒)
    • “它是如何工作的”按钮,带有解释系统的架构模式
    • 自动检测本地与生产后端URL

本地运行(全栈)

要在本地运行后端和前端进行开发:

步骤1:启动后端

打开终端并运行:

cd backend
npm install          # If you haven't already
npm run dev:local    # Starts backend on http://localhost:3000

后端将在 http://localhost:3000。保持此终端运行。

步骤2:启动前端

打开A 新终端 并运行:

cd ui

# Choose one of these methods:
# Option 1: Python (if installed)
python -m http.server 8080

# Option 2: Node.js http-server
npx http-server -p 8080

# Option 3: PHP (if installed)
php -S localhost:8080

步骤3:配置前端

UI会自动检测本地开发,并将使用 http://localhost:3000 作为在上运行时的后端URL localhost.

重要提示: 确保更新 API_KEY 在 ui/app.js 以匹配后端 API_KEY 从 backend/.env:

const API_KEY = 'your-api-key-here'; // Must match backend/.env API_KEY

步骤4:在浏览器中打开

打开浏览器并导航到:

  • 前端用户界面: http://localhost:8080
  • 后端API: http://localhost:3000/health(验证它是否正在运行)

运作原理

这 ui/app.js 自动检测您是否在本地运行:

  • 地方发展 (本地主机):使用 http://localhost:3000
  • 生产 (已部署):使用已部署的后端URL

您可以通过检查浏览器控制台来验证正在使用哪个URL。

发展

后端开发

cd backend
npm run dev:local    # Development with auto-reload
npm test            # Run tests
npm run test:llm    # Test LLM service

前端开发

在上运行时,前端会自动连接到本地后端 localhost请确保:

  1. 您的后端正在端口3000上运行(或更新内部的本地URL ui/app.js)
  2. 你的 API_KEY 在 ui/app.js 与后端匹配 API_KEY

部署

后端(渲染)

  1. 在Render上创建新的Web服务
  2. 连接您的GitHub存储库
  3. 将根目录设置为 backend
  4. 配置环境变量(请参阅后端README)
  5. 部署

前端(GitHub页面)

  1. 推 ui/ 文件夹到GitHub
  2. 配置GitHub页面以提供服务 ui/ 目录
  3. 确保内部有生产后端URL ui/app.js 匹配您的部署

API文档

发布 /api/chat

处理用户消息并返回LLM和MCP的组合响应。

标题:

  • x-api-key:您的API密钥(必需)
  • x-user-id:对话历史记录的用户标识符(必填)

请求正文:

{
  "message": "What are the top traded assets by politicians?"
}

答复:

{
  "reply": "Summary of the MCP data with markdown formatting...",
  "mcpDataUsed": true
}

获取 /health

健康检查端点。

答复:

{
  "status": "ok"
}

安全

  • CORS仅限于配置的GitHub Pages域
  • API密钥验证通过 x-api-key 头球
  • 速率限制:每个IP地址每15分钟100个请求
  • 对话历史记录按用户存储在本地(通过 x-user-id 头球
  • 用户ID保存在浏览器本地存储中,以保持会话连续性

技术栈

  • 前端:普通JavaScript、HTML5、CSS3(部署在GitHub Pages上)
  • 后端:Node.js、Express.js
  • LLM:拥抱面部推理API
  • 主控程序: @安格斯林/mcp国会交易 -政治家交易数据的模型上下文协议服务器

许可证

麻省理工学院