使用说明

项目简介

本项目是一个基于Langchain框架和Chainlit用户界面的AI应用示例,核心在于集成了 Model Context Protocol (MCP),作为客户端与多个独立工具服务器之间的标准通信协议。通过MCP,Langchain Agent可以安全、可扩展地调用外部工具,实现更强大的功能。本项目包含天气查询、SQL数据库查询和PPT文件翻译三个独立的MCP工具服务器,以及一个Chainlit客户端应用,展示了MCP客户端-服务器架构的实际应用。

主要功能点

  • MCP协议集成: 使用MCP作为客户端和工具服务器之间的通信标准,实现了解耦和可扩展的架构。
  • 工具服务: 提供三个独立的MCP工具服务器,分别实现:
    • 天气查询: 查询指定城市的天气信息。
    • SQL数据库查询: 执行SQL SELECT语句查询预配置的销售数据库。
    • PPT文件翻译: 将PowerPoint文件翻译成目标语言,并尽可能保留原格式。
  • Chainlit用户界面: 提供友好的Web界面,方便用户与AI应用进行交互。
  • Langchain Agent: 使用Langchain Agent作为核心,通过MCP客户端调用工具服务器提供的功能。
  • 灵活的启动和管理脚本: 提供 'run.py', 'run_server.py', 'run_client.py' 脚本,简化服务器和客户端的启动和管理过程。

安装步骤

  1. 环境准备: 确保已安装 Python 3.10 或更高版本。
  2. 下载代码: 克隆 GitHub 仓库到本地。
  3. 安装依赖: 在项目根目录下打开终端,运行命令安装所有依赖:
    pip install -r requirements.txt
  4. 配置环境变量:
    • 复制项目根目录下的 '.env_example' 文件,并重命名为 '.env'。
    • 编辑 '.env' 文件,根据需要填写以下 API 密钥和数据库连接信息:
      • 'OPENAI_API_KEY': OpenAI API 密钥 (用于 PPT 翻译)。
      • 'OPENWEATHER_API_KEY': OpenWeatherMap API 密钥 (用于天气查询)。
      • 'CLEARDB_DATABASE_URL': MySQL 数据库连接 URL (用于数据库查询),格式为 'mysql://user:password@host:port/dbname'。
      • 'USER_AGENT': (可选) User-Agent 字符串,某些天气API可能需要。

服务器配置

MCP客户端 ('app.py') 通过以下 JSON 格式的配置信息连接到 MCP 服务器。此配置已预置在 'app.py' 的 'SERVER_CONFIGS' 变量中,无需用户手动配置,此处仅为说明配置格式:

{
  "weather": {
    "command": "python",
    "args": ["MCP_Servers/weather_server.py", "--port", "8001"],
    "transport": "sse"
  },
  "sql_query": {
    "command": "python",
    "args": ["MCP_Servers/sql_query_server.py", "--port", "8002"],
    "transport": "sse"
  },
  "ppt_translator": {
    "command": "python",
    "args": ["MCP_Servers/ppt_translator_server.py", "--port", "8003"],
    "transport": "sse"
  }
}

配置说明:

  • server name: MCP 服务器的名称,例如 "weather", "sql_query", "ppt_translator"。
  • command: 启动 MCP 服务器的命令,通常为 Python 解释器。
  • args: 启动命令的参数列表,包括服务器脚本路径和端口号等。
  • transport: 客户端与服务器之间的通信方式,本项目中使用 'sse' (Server-Sent Events)。

基本使用方法

  1. 启动 MCP 服务器:
    • 在项目根目录下打开终端,运行命令:
      python run.py
    • 在菜单中选择 '1' (Start servers only) 或 '3' (Start servers and client) 并按 Enter 键。
    • 服务器将在后台启动,默认监听端口分别为 8001 (天气), 8002 (SQL), 8003 (PPT 翻译)。
    • 可以通过运行 'run_server.py' 单独启动服务器。
  2. 启动 Chainlit 客户端:
    • 确保 MCP 服务器已启动。
    • 在项目根目录下打开另一个终端,运行命令:
      python run.py
    • 在菜单中选择 '2' (Start client only) 或 '3' (Start servers and client) 并按 Enter 键。
    • 客户端将自动启动,并在终端中显示访问 URL (通常为 'http://localhost:8000'),在浏览器中打开该 URL 即可使用。
    • 可以通过运行 'run_client.py' 单独启动客户端。
  3. 与 AI 助手对话: 在 Chainlit 界面中,可以与 AI 助手进行对话,例如:
    • 询问天气: "How is the weather in Tokyo today?"
    • 查询数据库: "Query recent sales data"
    • 翻译 PPT: "Help me translate the ppt from English to Chinese" (此时会提示上传 PPT 文件)

注意:

  • 服务器启动后会在后台持续运行,关闭启动终端不会停止服务器。
  • 客户端可以多次启动和关闭,不影响服务器运行。
  • 使用 'run.py' 菜单或 'Ctrl+C' (在运行 'run_server.py' 的终端中) 可以停止所有服务器。

信息

分类

开发者工具