项目简介

本项目实现了一个结合大语言模型 Agent、工具调用能力以及 Slack 聊天机器人和 Streamlit Web 界面的应用。其中包含一个基于 Model Context Protocol (MCP) 实现的服务器组件,用于向兼容 MCP 协议的 LLM 客户端提供 Agent 的特定工具调用能力。

主要功能点

  • LLM Agent 实现: 构建了基于 LangChain 和 LangGraph 的大型语言模型 Agent,能够理解用户意图并执行多步操作。
  • 工具调用: 集成了多种工具供 Agent 调用,例如 Google 搜索、网页内容抓取 (Markitdown Crawler) 以及 Slack 历史消息和回复的获取。
  • Slack 集成: 实现了一个 Slack 机器人,能够监听频道消息和提及,将用户输入传递给 Agent 处理,并将 Agent 的回复(包括引用)发送回 Slack。支持会话管理和用户反馈收集(通过 Emoji)。
  • Streamlit Web 界面: 提供一个 Web UI,用于演示和测试 Google 搜索、网页抓取工具以及 Agentic Chatbot 功能。
  • MCP 服务器: 提供一个独立的 MCP 服务器组件,通过 JSON-RPC 协议暴露特定的 Agent 工具(例如网页抓取)给外部 MCP 客户端使用。
  • 配置管理: 使用 '.env' 文件集中管理各种 API 密钥和配置参数。
  • 追踪与监控: 支持集成 Langsmith 和 Langfuse 进行 Agent 交互过程的追踪和监控。

安装步骤

  1. 克隆 GitHub 仓库到本地。
  2. 安装所需的 Python 依赖库。通常您需要在项目根目录找到 'requirements.txt' 文件(本项目代码片段中未直接展示,但这是标准实践),然后运行命令 'pip install -r requirements.txt'。
  3. 在项目根目录创建一个名为 '.env' 的文件,并根据 README.md 中提供的示例填充必要的环境变量,如 Slack API 密钥、Google API 密钥等。根据您需要运行的服务(slack-bot, web, mcp-server)填充相应的变量。

服务器配置 (面向 MCP 客户端)

如果您希望通过一个独立的 MCP 客户端连接到本项目实现的 MCP 服务器并调用其工具,您需要在客户端进行相应的配置。MCP 客户端通常需要以下信息来启动和连接到 MCP 服务器进程:

  • Server Name: 服务器在 MCP 协议中声明的名称。根据代码,该服务器名称为 "MarkItDown"。
  • Command: 用于启动 MCP 服务器进程的可执行文件或脚本的绝对路径。例如,如果您将仓库克隆到 '/home/user/agentic-slack-bot',并且使用 'run.sh' 脚本启动服务器,那么 Command 可能是 '/home/user/agentic-slack-bot/run.sh'。
  • Arguments: 需要传递给启动 Command 的参数列表。根据 README.md,启动 MCP 服务器模式的参数是 'mcp-server',因此 Arguments 列表应为 '["mcp-server"]'。
  • Protocol: 服务器使用的传输协议。根据代码,服务器使用 "sse" (Server-Sent Events) 作为传输协议。

MCP 客户端会使用上述信息来启动服务器进程,并通过 JSON-RPC 协议 over SSE 与服务器进行通信,发送请求(例如调用工具)并接收响应。

基本使用方法

本项目提供了多种运行模式,您可以通过 './run.sh <mode>' 命令启动:

  • './run.sh slack-bot': 启动 Slack 机器人。确保 '.env' 文件中的 Slack 相关配置正确。
  • './run.sh web': 启动 Streamlit Web 界面。您可以在浏览器中访问该界面,体验 Agentic Chatbot、Google 搜索和网页抓取工具的演示。
  • './run.sh mcp-server': 启动 MCP 服务器。该服务器会在后台运行,等待 MCP 客户端连接并发送 JSON-RPC 请求来调用暴露的工具(例如 'scrape_url' 工具)。您需要一个兼容 MCP 协议的客户端程序才能与其交互。

信息

分类

AI与计算