mcpField
M
MCP-ChatBot

MCP-ChatBot

本地服务
github.com/arkCyberAI 与智能体377 周前更新

关于 MCP-ChatBot

MCP-ChatBot 是用 Rust 构建的聊天机器人框架,面向需要交互式命令行和工具集成的用户。它支持在 Ollama 与 OpenAI 间切换,并可运行多个专用 MCP 服务及 RAG、语音输入功能。

主要功能

  1. 01切换 Ollama 与 OpenAI
  2. 02运行多个专用 MCP 服务
  3. 03集成记忆、SQLite 和文件工具
  4. 04Qdrant 文档检索增强生成
  5. 05Whisper 语音转文字
  6. 06交互式命令行与可配置提示词

适用场景

  1. 01在本地 Ollama 与 OpenAI 之间切换聊天
  2. 02通过内置工具操作记忆、SQLite 和文件
  3. 03使用 Qdrant 搜索文档内容
  4. 04录入语音并将转写文本作为消息处理

MCP 相关

该框架支持多个 MCP 服务,提供工具发现、注册与执行,并通过命令列出服务、工具和资源。MCP 客户端可使用其工具集成能力。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"MCP-ChatBot": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"\\"
]
}
}
}
启动命令docker run -i --rm '\'

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
oci\

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP-ChatBot

一个功能强大的基于 Rust 的聊天机器人 MCP(Model Context Protocol)框架,支持多服务和工具集成。

Rust License CI

功能

  • 🤖 多 AI 支持:可在 Ollama(本地)和 OpenAI 之间无缝切换
  • 🛠️ 工具集成:内置对记忆、SQLite 和文件操作的支持
  • 🔄 多服务架构:同时运行多个专用服务
  • 💬 交互式命令行界面:易于使用的命令行界面,支持历史记录
  • 📝 可自定义提示词:通过 YAML 配置为不同服务设置专属系统提示词
  • 🔒 安全:基于环境变量管理 API 密钥
  • 📚 RAG 支持:使用 Qdrant 向量数据库实现检索增强生成
  • 🎤 语音输入:使用 Whisper 实现语音转文本
  • 🤖 高级 NLP:借助 rust-bert 实现文本嵌入和语言模型
  • 🧠 深度学习:通过 tch 集成 PyTorch,支持高级模型操作
  • 📝 文本处理:使用 Hugging Face tokenizers 高效进行分词

Model Context Protocol(MCP)

MCP(Model Context Protocol)是一种灵活的协议,旨在通过提供结构化上下文和工具集成功能,增强 AI 模型的交互能力。该协议支持:

核心组件
  1. 上下文管理

    • 在不同 AI 模型之间动态切换上下文
    • 在不同会话间持久化上下文
    • 为不同服务配置专属上下文
  2. 工具集成

    • 为 AI 模型提供标准化的工具接口
    • 自动发现和注册工具
    • 支持带重试机制的工具执行
    • 处理并格式化工具响应
  3. 服务架构

    • 面向专用操作的模块化服务设计
    • 服务间通信协议
    • 资源管理与清理
    • 服务专属提示词配置
  4. 协议特性

    • 基于 JSON 的消息格式
    • 支持异步操作
    • 错误处理与恢复
    • 资源清理与管理
    • 工具执行监控
协议流程
  1. 初始化

    • 注册并配置服务
    • 发现并注册工具
    • 初始化上下文
  2. 运行

    • 执行上下文感知型工具
    • 处理并格式化响应
    • 错误处理与恢复
    • 资源管理
  3. 清理

    • 释放资源
    • 关闭服务
    • 持久化上下文
使用场景
  • 多模型协作:协调多个 AI 模型来处理复杂任务
  • 工具集成:无缝集成外部工具和服务
  • 上下文管理:在不同操作间保持上下文一致
  • 资源管理:高效管理系统资源并执行清理

前置条件

  • Rust 1.70 或更高版本
  • Ollama(用于本地 AI 支持)
  • OpenAI API 密钥(可选,用于支持 OpenAI)
  • Qdrant 向量数据库(用于 RAG 支持)
  • Whisper 模型(用于语音输入)

AI 模型和工具

本项目使用了多种强大的 AI 和 NLP 工具:

文本处理与嵌入
  • rust-bert:Hugging Face transformers 库的 Rust 实现
    • 提供先进的文本嵌入
    • 支持多种语言模型
    • 实现高效的文本处理与理解
深度学习
  • tch(PyTorch):PyTorch 的 Rust 绑定
    • 支持深度学习模型操作
    • 支持模型推理和训练
    • 在可用时提供 GPU 加速
文本分词
  • tokenizers:Hugging Face 的 tokenizers 库
    • 高效进行文本分词
    • 支持多种分词算法
    • 确保不同模型间的文本处理一致

安装

  1. 克隆仓库:
git clone https://github.com/arksong/mcp-chatbot.git
cd mcp-chatbot
  1. 构建项目:
cargo build --release

配置

  1. 在项目根目录中创建 .env 文件:
LLM_API_KEY=your_ollama_key
OPENAI_API_KEY=your_openai_key  # Optional
  1. 在 src/servers_config.json 中配置服务

  2. 在 mcp_prompts.yaml 中自定义提示词

使用方法

使用 Ollama(本地 AI)
  1. 安装 Ollama:
# macOS
brew install ollama

# Linux
curl -fsSL https://ollama.ai/install.sh | sh
  1. 拉取所需模型:
ollama pull llama3.2:latest
  1. 启动 Ollama 服务:
ollama serve
  1. 运行聊天机器人:
cargo run
使用 OpenAI
  1. 设置 OpenAI API 密钥:
export OPENAI_API_KEY=your_api_key
  1. 运行聊天机器人:
cargo run
  1. 使用 /ai 命令切换到 OpenAI
使用 RAG(检索增强生成)
  1. 使用 Docker 启动 Qdrant 向量数据库:
# Using the provided setup script
./scripts/setup_qdrant.sh

# Or manually using Docker
docker run -d \
    --name qdrant \
    -p 6333:6333 \
    -p 6334:6334 \
    -v "$(pwd)/qdrant_storage:/qdrant/storage" \
    qdrant/qdrant:latest
  1. 向 RAG 数据库添加文档:
# Use the /rag-add command in the chatbot
/rag-add
# Then enter your document text
  1. 搜索相似文档:
# Use the /rag-search command
/rag-search
# Enter your search query
  1. 查看 RAG 数据库信息:
/rag-info
  1. Docker 管理命令:
# Stop Qdrant container
docker stop qdrant

# Start Qdrant container
docker start qdrant

# View Qdrant logs
docker logs qdrant

# Remove Qdrant container (data will be preserved in qdrant_storage)
docker rm qdrant

注意:Qdrant 数据会持久化存储在 ./qdrant_storage 目录中,该目录作为卷挂载到 Docker 容器中。这样即使容器被移除,向量数据仍会保留。

使用语音输入
  1. 开始录音:
/voice
  1. 说出消息(按 Enter 停止录音)

  2. 转录后的文本将作为普通消息进行处理

可用命令

  • /help - 显示帮助菜单
  • /clear - 清空终端屏幕
  • /usage - 显示使用信息
  • /exit - 退出程序
  • /servers - 列出可用的 MCP 服务
  • /tools - 列出可用工具
  • /resources - 列出可用资源
  • /debug - 切换调试日志
  • /ai - 在 AI 提供商之间切换
  • /rag-add - 向 RAG 数据库添加新文档
  • /rag-search - 搜索相似文档
  • /rag-info - 显示 RAG 数据库信息
  • /voice - 开始语音输入(按 Enter 停止录音)

工具示例

记忆操作
{"tool": "memory_set", "arguments": {"key": "name", "value": "John"}}
{"tool": "memory_get", "arguments": {"key": "name"}}
SQLite 操作
{"tool": "sqlite_create_table", "arguments": {"name": "users", "columns": [{"name": "id", "type": "INTEGER"}]}}
{"tool": "sqlite_query", "arguments": {"query": "SELECT * FROM users"}}
文件操作
{"tool": "file_write", "arguments": {"path": "test.txt", "content": "Hello"}}
{"tool": "file_read", "arguments": {"path": "test.txt"}}

项目结构

mcp-chatbot/
├── src/
│   ├── main.rs           # Main application entry
│   ├── llm_client.rs     # LLM client implementation
│   ├── mcp_server.rs     # MCP server core
│   ├── protocol.rs       # Protocol definitions
│   ├── sqlite_server.rs  # SQLite server implementation
│   ├── stdio_server.rs   # Standard I/O server
│   ├── rag_server.rs     # RAG server implementation
│   ├── whisper_server.rs # Whisper server implementation
│   └── utils.rs          # Utility functions
├── tests/
│   ├── sqlite_test.rs    # SQLite tests
│   └── rag_server_test.rs # RAG server tests
├── Cargo.toml            # Project dependencies
├── mcp_prompts.yaml      # System prompts configuration
└── README.md            # Project documentation

贡献

欢迎贡献!欢迎提交 Pull Request。

  1. Fork 此仓库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交更改(git commit -m 'Add some amazing feature')
  4. 推送到分支(git push origin feature/amazing-feature)
  5. 发起 Pull Request

许可证

本项目采用 MIT License 许可,详情请参阅 LICENSE 文件。

作者

致谢

  • 感谢 Ollama 提供本地 AI 引擎
  • 感谢 OpenAI 提供 API 服务
  • 感谢 Deepseek 提供强大的 AI 模型和 API 服务
  • 感谢 Rust 社区提供优秀的工具和库

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。