User Intent MCP

User Intent MCP

A multi-modal user intent collection MCP server that allows AI agents to ask users questions and receive text/image replies.

Category
访问服务器

README

User Intent MCP

一个支持多模态用户意图采集的 MCP(Model Context Protocol)服务器,让 AI Agent 能够向用户提问并获取回复。

功能特性

核心能力

  • 双传输模式 - 支持 SSE(HTTP)和 STDIO 两种传输模式
  • 多模态输入 - 接受文字和图片回复
  • 消息隔离 - 每个用户只能看到自己的消息
  • 队列管理 - 自动问题队列,支持 PENDING/COMPLETED/DISMISSED 状态

认证与多租户

  • 飞书 OAuth - 企业级认证,支持飞书(Lark)OAuth 2.0
  • 30天会话缓存 - 长期登录会话,提升用户体验
  • 多租户支持 - 用户级和企业级隔离
  • 管理后台 - 系统初始化和用户管理

通知系统

  • 飞书通知 - 新消息推送通知
  • WebSocket 监听器 - 通过飞书 WebSocket API 实时接收消息
  • 声音提醒 - 新问题的音频通知
  • 可配置提醒 - 用户可自主启用/禁用通知

现代化前端

  • React 19 + TypeScript - 类型安全的现代 React 开发
  • Redux Toolkit - 高效的状态管理
  • 响应式设计 - 基于 Tailwind CSS 的移动友好界面
  • 侧边栏导航 - 直观的任务历史浏览
  • 快捷键支持 - 快速操作支持
  • 国际化支持 - 多语言支持(中英文)

架构

后端技术栈

  • FastAPI - 现代化 Python Web 框架
  • FastMCP - MCP 协议实现
  • SQLite - 轻量级嵌入式数据库
  • Uvicorn - ASGI 服务器
  • lark-oapi - 飞书/Lark SDK

前端技术栈

  • React 19 - 最新 React,支持并发特性
  • Redux Toolkit - 可预测的状态管理
  • React Router v7 - 声明式路由
  • Tailwind CSS v4 - 原子化 CSS 框架
  • Vite - 下一代前端构建工具
  • Vitest - 单元测试框架
  • i18next - 国际化框架

项目结构

interactive-mcp/
├── src/                      # 后端源代码
│   ├── core.py              # MCP 服务器核心与配置
│   ├── server.py            # 统一入口(SSE/STDIO)
│   ├── web_multi_tenant.py  # FastAPI 多租户应用
│   ├── auth.py              # 管理员认证
│   ├── users.py             # 用户管理
│   ├── oauth.py             # 飞书 OAuth
│   ├── feishu.py            # 飞书通知服务
│   ├── feishu_ws_listener.py # WebSocket 消息监听器
│   └── static/              # 静态资源(Service Worker)
├── frontend/                # React 前端
│   ├── src/
│   │   ├── features/        # 功能模块
│   │   │   ├── auth/        # 认证(登录/重定向)
│   │   │   ├── admin/       # 管理后台
│   │   │   ├── tasks/       # 任务/问题管理
│   │   │   └── user/        # 用户资料
│   │   ├── components/ui/   # 可复用 UI 组件
│   │   ├── store/           # Redux Store
│   │   ├── services/        # API 服务
│   │   ├── hooks/           # 自定义 Hooks
│   │   └── i18n/            # 国际化
│   └── package.json
├── docs/                    # 文档
├── data/                    # SQLite 数据库(运行时创建)
└── pyproject.toml           # Python 包配置

快速开始

环境要求

  • Python 3.10 或更高版本
  • Node.js 18 或更高版本(前端开发需要)

安装依赖

# 安装后端依赖
pip install -e .

# 安装飞书 SDK(可选,用于通知功能)
pip install lark_oapi

# 安装前端依赖(可选,用于开发)
cd frontend && npm install

启动服务

生产模式(使用预构建前端):

# 启动服务器,包含 MCP SSE 端点和内置前端
python -m uvicorn src.web_multi_tenant:app --host 0.0.0.0 --port 8000

开发模式:

# 终端 1:后端服务(SSE 传输模式)
cd src && PYTHONPATH=. uvicorn web_multi_tenant:app --host 0.0.0.0 --port 8000

# 终端 2:前端开发服务器
cd frontend && npm run dev
# 访问 http://localhost:5173

STDIO 模式(用于 MCP 客户端):

# MCP 前台运行,Web 服务器后台运行
python -m src.server --mode stdio

首次使用

  1. 访问 http://localhost:8000
  2. 按照初始化向导操作:
    • 设置管理员账号密码
    • 配置飞书应用(可稍后配置)
  3. 通过飞书 OAuth 登录
  4. 在用户中心获取 API Key

MCP 客户端配置

获取 API Key

  1. 访问 http://localhost:8000
  2. 点击「使用飞书登录」
  3. 授权后在用户中心复制 API Key(格式:uk_xxxxxxxx

STDIO 模式

{
  "mcpServers": {
    "user-intent": {
      "command": "uv",
      "args": ["run", "python", "/path/to/src/server.py", "--mode", "stdio"],
      "env": {
        "USERINTENT_API_KEY": "uk_your_api_key"
      }
    }
  }
}

SSE 模式

{
  "mcpServers": {
    "user-intent": {
      "transport": "sse",
      "url": "http://localhost:8000/mcp/sse",
      "headers": {
        "Authorization": "Bearer uk_your_api_key"
      }
    }
  }
}

环境变量

变量 说明 默认值
USERINTENT_API_KEY 用户 API Key(用于认证) -
USERINTENT_DB_PATH SQLite 数据库路径 data/intent.db
USERINTENT_WEB_PORT Web 服务器端口 8000
USERINTENT_WEB_HOST Web 服务器主机 0.0.0.0
USERINTENT_TIMEOUT 请求超时时间(秒) 3000

管理后台

访问 http://localhost:8000/admin 进入系统管理:

功能 说明
系统概览 查看用户数量和请求统计
用户管理 查看/禁用/启用已注册用户
飞书配置 配置飞书应用凭据
系统设置 修改管理员密码
WebSocket 状态 监控/重启飞书 WebSocket 监听器

飞书应用配置

创建飞书应用

  1. 飞书开放平台创建应用
  2. 配置 OAuth 回调地址:https://your-domain.com/auth/feishu/callback
  3. 开通权限:
    • contact:user.base:readonly - 获取用户基本信息
    • im:message:send_as_bot - 发送消息
  4. 配置事件订阅:
    • 使用 WebSocket 长连接
    • 订阅 im.message.receive_v1 事件

环境配置

通过管理后台:

  1. 登录管理后台
  2. 进入「飞书配置」页面
  3. 输入 app_idapp_secretredirect_uri
  4. 保存(WebSocket 监听器将自动重启)

通过数据库:

INSERT INTO admin_config (key, value) VALUES
  ('feishu_app_id', 'cli_xxxxxxxxx'),
  ('feishu_app_secret', 'your_secret'),
  ('feishu_redirect_uri', 'http://localhost:8000/auth/feishu/callback');

前端开发

技术栈详情

  • React 19 支持并发特性
  • TypeScript 类型安全
  • Redux Toolkit 状态管理
  • React Router v7 路由管理
  • Tailwind CSS v4@tailwindcss/typography
  • i18next + react-i18next 国际化
  • Vite 快速 HMR
  • Vitest 单元测试

开发命令

cd frontend

# 启动开发服务器
npm run dev

# 构建生产版本
npm run build

# 运行测试
npm run test

# 运行测试(含覆盖率)
npm run test:coverage

# 代码检查
npm run lint

功能模块

  • auth/ - 登录页面、OAuth 重定向处理
  • admin/ - 管理员登录、仪表板、系统初始化
  • tasks/ - 问题/回复管理、历史记录、侧边栏
  • user/ - 用户资料、API Key 管理

生产部署

使用 systemd(Linux)

创建 /etc/systemd/system/user-intent-mcp.service

[Unit]
Description=User Intent MCP Server
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/user-intent-mcp
Environment="PYTHONPATH=/opt/user-intent-mcp/src"
ExecStart=/usr/bin/python3 -m uvicorn web_multi_tenant:app --host 0.0.0.0 --port 8000
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

启用并启动:

sudo systemctl enable user-intent-mcp
sudo systemctl start user-intent-mcp

使用 Docker

FROM python:3.12-slim

WORKDIR /app
COPY . .
RUN pip install -e . && pip install lark_oapi

# 构建前端(可选,也可使用预构建镜像)
# RUN cd frontend && npm install && npm run build

ENV PYTHONPATH=/app/src
EXPOSE 8000

CMD ["python", "-m", "uvicorn", "web_multi_tenant:app", "--host", "0.0.0.0", "--port", "8000"]

构建并运行:

docker build -t user-intent-mcp .
docker run -d -p 8000:8000 -v $(pwd)/data:/app/data user-intent-mcp

Nginx 反向代理

server {
    listen 80;
    server_name intent.example.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # SSE 和 WebSocket 支持
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # SSE 超时设置
        proxy_buffering off;
        proxy_read_timeout 86400;
    }
}

测试

# 后端单元测试
PYTHONPATH=src pytest tests/test_multi_tenant.py -v

# 后端集成测试
PYTHONPATH=src pytest tests/test_integration.py -v

# 前端测试
cd frontend && npm run test

文档

版本历史

v1.0.0(当前版本)

  • 完整的 React + Redux 前端重构
  • 飞书 WebSocket 监听器,实时接收消息
  • 通知声音提醒
  • 侧边栏导航与任务历史
  • 图片上传支持
  • 快捷键支持
  • 多语言支持(i18n)
  • 30天会话缓存
  • 生产部署支持

v0.1.0

  • SQLite 多用户支持
  • 飞书 OAuth 集成
  • 基础消息队列
  • SSE 和 STDIO 传输模式
  • 管理后台

许可证

MIT License

贡献

欢迎贡献!请随时提交 Pull Request。


English Version

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选