使用说明

项目简介

本项目 'demo_mcp_on_amazon_bedrock' 是一个演示如何将 Model Context Protocol (MCP) 集成到基于 Amazon Bedrock 大模型的 ChatBot 应用中的示例。它旨在展示如何通过 MCP 协议增强 ChatBot 的能力,使其能够访问外部资源和工具,从而扩展其应用场景。该项目兼容 Anthropic 官方 MCP 标准,并提供了服务端 API 封装,方便集成到各种 Chat 客户端。

主要功能点

  • Bedrock 大模型集成: 支持 Amazon Nova Pro 和 Claude Sonnet 3.5 模型。
  • MCP 协议支持: 完全兼容 Anthropic 官方 MCP 标准,可直接使用社区丰富的 MCP 服务器。
  • 服务端 MCP 能力: 将 MCP 能力封装在服务端 API 中,实现 MCP 能力与客户端的解耦,方便集成到各种 Chat 客户端。
  • ChatBot UI 演示: 提供 Web UI 界面,方便用户体验和管理 MCP 服务器。
  • 预置 MCP 服务器: 内置本地文件系统、SQLite 数据库等 MCP 服务器,开箱即用。
  • 灵活添加 MCP 服务器: 支持通过配置文件或 Web UI 动态添加和配置 MCP 服务器,例如 Web Search (Exa) 和 Browser Automation 等。
  • 多种 Demo 场景: 提供 Browser 浏览器操作、Deep Research 深度研究、Amazon Knowledge Base 知识库等多种 Demo 场景,展示 MCP 的强大能力。

安装步骤

  1. 安装 NodeJS: 访问 NodeJS 官网 下载并安装 NodeJS (推荐 v22.12.0 版本)。
  2. 安装 Python: 访问 Python 官网 下载并安装 Python。
  3. 安装 uv: 参考 uv 官方指南 安装 uv 包管理工具 (推荐 v0.5.11 版本)。
  4. 下载仓库代码: 使用 'git clone https://github.com/aws-samples/demo_mcp_on_amazon_bedrock' 命令克隆仓库到本地。
  5. 创建并激活虚拟环境: 进入项目目录,运行 'uv sync' 创建 Python 虚拟环境,然后运行 'source .venv/bin/activate' 激活虚拟环境。

服务器配置

  1. 配置 .env 文件: 复制 'env_dev' 文件并重命名为 '.env',根据注释修改以下配置项:

    • 'AWS_ACCESS_KEY_ID': 您的 AWS Access Key ID。
    • 'AWS_SECRET_ACCESS_KEY': 您的 AWS Secret Access Key。
    • 'AWS_REGION': 您的 AWS 区域 (例如 'us-east-1')。
    • 'LOG_DIR': 日志文件目录 (例如 './logs')。
    • 'CHATBOT_SERVICE_PORT': ChatBot UI 服务端口 (例如 '8502')。
    • 'MCP_SERVICE_HOST': MCP 服务 Host (通常为 '127.0.0.1')。
    • 'MCP_SERVICE_PORT': Bedrock MCP 服务端口 (例如 '7002')。
    • 'API_KEY': API 访问密钥 (用于 Chat API 鉴权)。
  2. 配置 conf/config.json 文件: 该文件用于配置要启动的 MCP 服务器。您可以根据需要添加或修改 MCP 服务器的参数。

    MCP 服务器配置参数说明 (JSON 格式):

    {
      "mcpServers": {
        "<server_id>": {  // 服务器 ID (例如 db_sqlite, exa, mcp-browser 等,用于唯一标识和引用)
          "command": "<command>",  // 启动服务器的命令 (例如 "uvx", "npx", "node", "python", "docker")
          "args": ["<arg1>", "<arg2>", ...], // 命令参数 (例如 ["mcp-server-sqlite", "--db-path", "./tmp/test.db"])
          "env": {  // 环境变量 (可选)
            "<env_key>": "<env_value>",
            ...
          },
          "description": "<description>", // 服务器描述 (可选,用于 UI 显示)
          "status": <status> // 服务器状态 (1 表示启用,0 表示禁用,可选)
        },
        ... // 可以配置多个 MCP 服务器
      }
    }

    预置 MCP 服务器配置示例 (conf/config.json):

    {
      "mcpServers": {
        "db_sqlite": {
          "command": "uvx",
          "args": ["mcp-server-sqlite", "--db-path", "./tmp/test.db"],
          "env": {},
          "description": "DB Sqlite CRUD - MCP Server",
          "status": 1
        },
        "local_file_system": {
          "command": "uvx",
          "args": ["mcp-server-fs", "--allow-path", "./"],
          "env": {},
          "description": "Local File System CRUD - MCP Server",
          "status": 1
        },
        "cot": {
          "command": "uvx",
          "args": ["mcp-server-sequentialthinking"],
          "env": {},
          "description": "Sequential Thinking - MCP Server",
          "status": 1
        }
      }
    }

    添加 Exa Web Search MCP Server 配置示例 (conf/config.json):

    {
      "mcpServers": {
        "exa": {
          "command": "npx",
          "args": ["-y", "exa-mcp-server"],
          "env": {
            "EXA_API_KEY": "<your-exa-api-key>" // 替换为您的 Exa API Key
          },
          "description": "Exa Web Search - MCP Server",
          "status": 1
        }
      }
    }

    注意: 请将 '<your-exa-api-key>' 替换为您在 Exa 官网注册并获取的 API Key。

基本使用方法

  1. 启动服务: 运行 'bash start_all.sh' 命令启动 Chat 接口服务和 ChatBot UI 服务。
  2. 查看日志: 通过 'logs/start_mcp.log' 和 'logs/start_chatbot.log' 文件查看服务启动日志,确保没有报错。
  3. 访问 Chat API: 访问 'http://127.0.0.1:7002/docs#/' 查看 Chat API 接口文档,可以使用 curl 命令或任何 HTTP 客户端进行测试。 例如:
    curl http://127.0.0.1:7002/v1/chat/completions \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer <your-api-key>"  # 替换为您的 API_KEY
      -d '{
        "model": "amazon.nova-lite-v1:0",
        "messages": [
          {
            "role": "user",
            "content": "show all of tables in db"
          }
        ]
      }'
  4. 访问 ChatBot UI: 在浏览器中打开 http://localhost:8502/,即可体验 MCP 增强的 Bedrock 大模型 ChatBot 功能。
  5. 体验 Demo 场景: 在 ChatBot UI 中,您可以尝试以下问题,体验预置的 MCP Server 功能:
    show all of tables in the db
    how many rows in that table
    show all of rows in that table
    save those rows record into a file, filename is rows.txt
    list all of files in the allowed directory
    read the content of rows.txt file
  6. 添加更多 MCP Server: 您可以通过编辑 'conf/config.json' 文件或在 ChatBot UI 界面中添加更多 MCP Server,例如 Web Search, Browser Automation 等,以扩展 ChatBot 的能力。
  7. 停止服务: 运行 'bash stop_all.sh' 命令停止所有服务。

信息

分类

AI与计算