MCP Waifu Queue

MCP Waifu Queue

一个 MCP 服务器,它使用文本生成服务实现了一个对话式 AI “老婆” 角色,并采用 Redis 队列和 GPU 加速。 (Alternatively, a slightly more literal translation:) 一个 MCP 服务器,它实现了一个会话式 AI “老婆” 角色,该角色使用文本生成服务,并结合了 Redis 队列和 GPU 加速。

Category
访问服务器

README

MCP Waifu 队列

本项目实现了一个用于对话式 AI “waifu” 角色的 MCP (模型上下文协议) 服务器,利用带有 Redis 队列和 GPU 加速的文本生成服务。它使用 FastMCP 库来简化服务器设置和管理。

目录

特性

  • 使用 distilgpt2 语言模型进行文本生成。
  • 使用 Redis 进行请求排队,以处理并发请求。
  • GPU 支持,实现更快的推理。
  • 使用 FastMCP 的 MCP 兼容 API。
  • 作业状态跟踪。

架构

该项目由几个关键组件组成:

  • main.py: 主入口点,初始化 FastMCP 应用程序。
  • respond.py: 核心文本生成服务,加载 distilgpt2 模型并生成响应。
  • queue.py: 处理与 Redis 队列的交互,将请求入队并管理作业 ID。
  • worker.py: 一个 Redis 工作进程,从队列中处理作业,利用 respond.py 进行文本生成。
  • config.py: 通过环境变量管理配置。
  • models.py: 定义用于请求和响应验证的 Pydantic 模型。

请求的流程如下:

  1. 客户端向 generate_text MCP 工具(在 main.py 中定义)发送请求。
  2. 该工具将请求排队到 Redis 队列(由 queue.py 处理)。
  3. worker.py 进程从队列中获取请求。
  4. 工作进程调用 call_predict_response 函数(在 utils.py 中),该函数与 respond.py 交互以生成文本。
  5. 生成的文本被存储,并且作业状态被更新。
  6. 客户端可以使用 get_job_status 资源(在 main.py 中定义)检索结果。

前提条件

  • Python 3.7+
  • pip
  • Redis 服务器(已安装并运行)
  • 支持 CUDA 的 GPU(可选,但建议使用以获得更好的性能)

您可以在官方 Redis 网站上找到有关在您的系统上安装 Redis 的说明:https://redis.io/docs/getting-started/

安装

  1. 克隆存储库:

    git clone <YOUR_REPOSITORY_URL>
    cd mcp-waifu-queue
    
  2. 创建并激活虚拟环境:

    python3 -m venv venv
    source venv/bin/activate  # 在 Linux/macOS 上
    venv\Scripts\activate  # 在 Windows 上
    
  3. 安装依赖项:

     pip install --user -r requirements.txt #如果 requirements.txt 存在
    

    或者,如果使用 pyproject.toml

    pip install --user -e .
    

配置

  1. .env.example 文件复制到 .env

    cp .env.example .env
    
  2. 修改 .env 文件,为您的环境设置适当的值。 以下环境变量可用:

    • MODEL_PATH: 预训练语言模型的路径(默认值:distilgpt2)。
    • GPU_SERVICE_URL: GPU 服务的 URL(默认值:http://localhost:5001)。 这由 worker 内部使用。
    • REDIS_URL: Redis 服务器的 URL(默认值:redis://localhost:6379)。
    • QUEUE_PORT: 队列服务的端口(默认值:5000)。 由于我们正在使用 MCP,因此不再直接用于外部访问。
    • RESPOND_PORT: 响应服务的端口(默认值:5001)。 这由 worker 内部使用。
    • MAX_NEW_TOKENS: 要生成的最大新 token 数(默认值:20)。

    注意: 出于安全原因,不应将 .env 文件提交到存储库。

运行服务

使用 scripts/start-services.sh 脚本启动服务:

./scripts/start-services.sh

此脚本将启动 Redis 服务器(如果尚未运行)、worker、队列服务和响应服务。 这些服务将在后台运行。

MCP API

服务器提供以下 MCP 兼容的端点:

工具

  • generate_text (prompt: str): 发送文本生成请求并返回作业 ID。

资源

  • job://{job_id}: 检索作业的状态。 响应将包括一个 status 字段(例如,“queued”、“processing”、“completed”、“failed”),如果已完成,则包括一个包含生成的文本的 result 字段。

测试

该项目包含测试。 您可以使用 pytest 运行所有测试:

pytest tests

故障排除

  • 错误:“缺少 'prompt' 参数”:确保您正在向 generate_text 工具发送提示字符串。
  • 错误:“调用 GPU 服务时出错”:确保 respond.py 服务正在运行并且可以在配置的 GPU_SERVICE_URL 上访问。
  • 错误:“服务不可用”:检查 Redis 服务器、worker、队列和响应服务是否正在运行。
  • 如果遇到 CUDA 错误: 确保您的 CUDA 驱动程序和工具包已正确安装并且与您的 PyTorch 版本兼容。

贡献

  1. Fork 存储库。
  2. 为您的功能或错误修复创建一个新分支。
  3. 提交您的更改。
  4. 将您的分支推送到您 fork 的存储库。
  5. 创建一个 pull request。

请遵守项目的行为准则。

许可证

该项目已获得 MIT-0 许可证的许可 - 有关详细信息,请参阅 LICENSE 文件。

推荐服务器

Baidu Map

Baidu Map

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

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

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

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

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

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

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

官方
精选
本地
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 模型以安全和受控的方式获取实时的网络信息。

官方
精选