使用说明

项目简介

本项目展示了一个基于Amazon Bedrock的聊天机器人应用,它通过集成Model Context Protocol (MCP) 服务器,实现了调用外部工具和访问知识库的功能,从而扩展了聊天机器人的能力。项目包含后端MCP服务器 ('src/main.py')、前端聊天机器人客户端 ('chatbot.py'),以及一个示例MCP工具服务器 ('docs/aws-kb-retrieval-server/index.ts'),用于演示从AWS知识库检索信息。

主要功能点

  • 集成Amazon Bedrock模型: 使用Amazon Bedrock的强大语言模型进行对话。
  • MCP协议支持: 通过MCP协议连接和管理外部工具服务器,扩展模型的功能。
  • 动态添加MCP服务器: 允许用户在运行时添加和配置新的MCP工具服务器。
  • 知识库检索示例: 提供了一个从AWS Knowledge Base检索信息的MCP工具服务器示例。
  • 流式响应: 支持流式返回聊天机器人的响应,提升用户体验。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/xiehust/mcp_server_demo
    cd mcp_server_demo
  2. 安装Python依赖:

    pip install streamlit requests python-dotenv fastapi uvicorn boto3 model-context-protocol-sdk

    (请确保已安装Python环境)

  3. 安装Node.js依赖 (如果使用示例工具服务器):

    cd docs/aws-kb-retrieval-server
    npm install
    cd ../..

    (请确保已安装Node.js和npm)

  4. 配置环境变量: 在项目根目录下创建 '.env' 文件,并根据需要配置以下环境变量:

    • API_KEY: 用于API请求鉴权的密钥 (用于 'chatbot.py' 和 'src/main.py')
    • MCP_BASE_URL: MCP服务器的API基础URL (用于 'chatbot.py',指向 'src/main.py' 运行地址)
    • AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION: AWS 访问密钥和区域 (用于 'docs/aws-kb-retrieval-server/index.ts',以及 'src/chat_client*.py', 'src/mcp_client.py')
    • knowledgeBaseId: AWS Knowledge Base 的ID (用于 'docs/aws-kb-retrieval-server/index.ts')

服务器配置

本项目的MCP服务器架构由两部分组成:

  1. 后端MCP服务器 ('src/main.py'): 作为中心服务器,负责接收客户端请求,并与Bedrock模型和MCP工具服务器交互。
  2. MCP工具服务器 (例如 'docs/aws-kb-retrieval-server/index.ts'): 提供特定工具功能的独立服务器,例如知识库检索。

配置示例MCP工具服务器 (aws-kb-retrieval-server):

在 'chatbot.py' 客户端界面,点击 "添加 MCP Server" 按钮,填写以下配置信息:

{
  "mcpServers": {
    "aws_kb_server": {
      "command": "node",
      "args": ["docs/aws-kb-retrieval-server/index.js"],
      "env": {
        "AWS_REGION": "your_aws_region",  // 替换为您的AWS区域,例如 "us-east-1"
        "AWS_ACCESS_KEY_ID": "your_aws_access_key_id", // 替换为您的AWS访问密钥ID
        "AWS_SECRET_ACCESS_KEY": "your_aws_secret_access_key", // 替换为您的AWS秘密访问密钥
        "knowledgeBaseId": "your_knowledge_base_id" // 替换为您的知识库ID
      }
    }
  }
}

配置说明:

  • '"server name"' (界面填写): 'aws kb retrieval server' (服务器名称,用户自定义,用于界面显示)
  • '"Server ID"' (界面填写): 'aws_kb_server' (服务器ID,用户自定义,用于程序内部标识)
  • '"使用JSON配置"' (界面填写): 粘贴上述JSON配置代码
  • '"运行命令"' (界面下拉选择): 'node' (启动工具服务器的命令)
  • '"运行参数"' (界面填写): 'docs/aws-kb-retrieval-server/index.js' (工具服务器脚本路径)
  • '"环境变量"' (界面填写): '{"AWS_REGION": "your_aws_region", "AWS_ACCESS_KEY_ID": "your_aws_access_key_id", "AWS_SECRET_ACCESS_KEY": "your_aws_secret_access_key", "knowledgeBaseId": "your_knowledge_base_id"}' (工具服务器所需的环境变量,请替换为您的实际AWS凭证和知识库ID)

基本使用方法

  1. 启动后端MCP服务器 ('src/main.py'):

    python src/main.py --host 0.0.0.0 --port 7002

    或者使用配置文件启动:

    python src/main.py --host 0.0.0.0 --port 7002 --mcp-conf mcp_config.json

    (如果使用 'mcp_config.json',请先根据需要配置该文件)

  2. 启动示例MCP工具服务器 ('docs/aws-kb-retrieval-server/index.js'):

    cd docs/aws-kb-retrieval-server
    node index.js
    cd ../..

    (请确保在 '.env' 文件中配置了工具服务器所需的AWS环境变量和 'knowledgeBaseId')

  3. 运行Streamlit聊天机器人客户端 ('chatbot.py'):

    streamlit run chatbot.py

    (请确保在 '.env' 文件中配置了 'API_KEY' 和 'MCP_BASE_URL','MCP_BASE_URL' 指向步骤1中 'src/main.py' 的运行地址,例如 'http://localhost:7002')

  4. 在聊天机器人界面操作:

    • 在左侧边栏选择Bedrock模型。
    • 根据需要调整上下文长度限制和temperature参数。
    • 在 "系统提示词" 处设置系统提示。
    • 开启或关闭 "流式输出" 选项。
    • 点击 "添加 MCP Server" 按钮,添加并配置MCP工具服务器 (例如 aws_kb_server)。
    • 在 "已有 MCP Servers" 下勾选需要启用的工具服务器。
    • 在聊天输入框中输入问题,开始与聊天机器人对话,体验工具集成功能。

关键词: 聊天机器人, Bedrock, MCP, 工具集成, 知识库检索

信息

分类

AI与计算