工具调用AI聊天机器人

一个基于React和Node.js的开源AI聊天机器人,支持多种免费LLM提供商和工具调用功能,适用于开发者和AI爱好者。

  • by Mayank00480
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 mayank00480/mcp-server

使用说明

MCP聊天机器人-带工具调用的免费AI聊天机器人

一个使用React和Node.js构建的免费开源聊天机器人,实现了用于工具调用功能的模型上下文协议(MCP)。这个聊天机器人可以在没有任何付费API密钥的情况下工作,并包括多个免费LLM提供商。

特性

  • 🤖 多个免费LLM提供商:

    • 模拟LLM(不需要API密钥)
    • 拥抱面部推理API(免费等级)
    • Ollama(当地模特)
  • 🛠️ MCP工具调用:

    • 使用DuckDuckGo API进行网络搜索
    • 使用OpenWeatherMap的天气信息
    • 数学计算
  • 🎨 现代React用户界面:

    • 实时服务器状态
    • 提供商选择
    • 工具可用性显示
    • 响应式设计
  • 🔧 轻松设置:

    • 无需付费API密钥即可启动
    • 简单配置
    • Docker支持(即将推出)

快速开始

先决条件

  • Node.js(v16或更高版本)
  • npm或纱线

安装

  1. 克隆并安装依赖项:

    git clone <your-repo-url>
    cd mcp-chatbot
    npm install
    
  2. 启动开发服务器:

    # Start both React app and MCP server
    npm run dev
    
    # Or start them separately:
    npm start          # React app (port 3000)
    npm run server     # MCP server (port 3001)
    
  3. 打开浏览器: 引导到 http://localhost:3000

配置

环境变量(可选)

创建一个 .env 根目录中的文件以增强功能:

# Hugging Face API (free tier)
HUGGINGFACE_API_KEY=your_huggingface_token

# OpenWeatherMap API (free tier)
OPENWEATHER_API_KEY=your_openweather_token

获取免费API密钥

  1. 拥抱脸:

    • 首选 拥抱脸
    • 创建免费帐户
    • 生成新令牌
    • 免费套餐每月包含30000个请求
  2. OpenWeatherMap:

    • 首选 OpenWeatherMap
    • 注册一个免费帐户
    • 获取API密钥
    • 免费套餐包括1000次通话/天

用法

基本聊天

聊天机器人与Mock LLM提供商开箱即用,无需API密钥:

  1. 从提供者下拉列表中选择“模拟LLM(免费)”
  2. 开始聊天-机器人将回复有用的信息

使用工具

聊天机器人可以自动检测您何时想要使用工具:

  • 网页搜索:“搜索有关AI的最新消息”
  • 天气“伦敦的天气怎么样?”
  • 计算:“计算15*23+7”

切换提供商

  1. 模拟法学硕士:立即工作,无需设置
  2. 拥抱脸:将API密钥添加到 .env 文件
  3. 没有:在本地安装Olama并运行模型

建筑

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   React Frontend│    │   MCP Server    │    │  External APIs  │
│   (Port 3000)   │◄──►│   (Port 3001)   │◄──►│  (Free Tiers)   │
└─────────────────┘    └─────────────────┘    └─────────────────┘
                              │
                              ▼
                       ┌─────────────────┐
                       │   MCP Tools     │
                       │  - Web Search   │
                       │  - Weather      │
                       │  - Calculator   │
                       └─────────────────┘

MCP工具

可用工具

  1. 搜索web

    • 说明:在网络上搜索当前信息
    • 参数: query (字符串)
    • 用途:DuckDuckGo即时应答API
  2. get_weather

    • 说明:获取当前天气信息
    • 参数: location (字符串)
    • 用途:OpenWeatherMap API
  3. 计算

    • 说明:执行数学计算
    • 参数: expression (字符串)
    • 用途:安全的JavaScript评估

添加新工具

要添加新的MCP工具:

  1. 定义工具 在……里面 server/mcp-server.js:

    const mcpTools = {
      your_tool: {
        name: "your_tool",
        description: "Description of your tool",
        inputSchema: {
          type: "object",
          properties: {
            param1: { type: "string", description: "Parameter description" }
          },
          required: ["param1"]
        }
      }
    };
    
  2. 实施该工具:

    const toolImplementations = {
      your_tool: async (params) => {
        // Your tool implementation
        return { success: true, result: "Tool result" };
      }
    };
    

发展

项目结构

mcp-chatbot/
├── src/
│   ├── components/
│   │   └── ChatBot.jsx          # Main chatbot component
│   ├── assets/
│   │   └── Manifest.json        # MCP configuration
│   └── App.js                   # React app entry
├── server/
│   └── mcp-server.js            # MCP server implementation
├── package.json                 # Dependencies and scripts
└── README.md                    # This file

可用脚本

  • npm start -启动React开发服务器
  • npm run server -启动MCP服务器
  • npm run dev -同时启动两台服务器
  • npm run build -为生产而建
  • npm test -运行测试

故障排除

常见问题

  1. 服务器未连接:

    • 确保MCP服务器在端口3001上运行
    • 检查端口3001是否可用
    • 使用以下命令重新启动两台服务器 npm run dev
  2. API错误:

    • 验证API密钥是否正确
    • 检查您是否已超过免费等级限制
    • 使用模拟LLM提供程序进行测试
  3. 工具不工作:

    • 检查浏览器控制台是否有错误
    • 验证工具是否正确实施
    • 直接测试工具端点

调试模式

通过设置环境变量启用调试日志记录:

DEBUG=true npm run dev

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件

致谢

路线图

  • []Docker容器化
  • []更多法学硕士提供者(Anthropic、Cohere)
  • []其他MCP工具(文件操作、数据库查询)
  • []WebSocket支持实时聊天
  • []用户身份验证和聊天记录
  • []移动应用程序(React Native)