Mattermost智能代理集成

一个连接Mattermost与MCP服务器的集成服务,通过LangGraph智能代理提供用户交互和工具执行功能。

  • by jagan-shanmugam
  • Python
  • 本地部署
  • 34 星标
  • 更新于
在 GitHub 查看 jagan-shanmugam/mattermost-mcp-host

使用说明

Mattermost MCP主机

Mattermost集成,连接到模型上下文协议(MCP)服务器,利用基于LangGraph的AI代理提供智能界面,直接在Mattermost中与用户交互和执行工具。

演示

1.Github Agent在支持通道中-搜索现有问题和PR,如果找不到,则创建新问题

2.使用Mattermost MCP服务器搜索互联网并发布到频道

在YouTube上滚动查看完整演示

特性

  • 🤖 Langgraph代理集成:使用LangGraph代理来理解用户请求并编排响应。
  • 🔌 MCP服务器集成:连接到中定义的多个MCP服务器 mcp-servers.json.
  • 🛠️ 动态工具加载:自动从连接的MCP服务器中发现工具,并将其提供给AI代理。将MCP工具转换为langchain结构化工具。
  • 💬 线程感知对话:在Mattermost线程中保持对话上下文,以实现连贯的交互。
  • 🔄 智能工具使用:AI代理可以决定何时使用可用工具(包括链接多个调用)来满足用户请求。
  • 🔍 MCP能力发现:允许用户通过直接命令列出可用的服务器、工具、资源和提示。
  • #️⃣ 直接命令界面:使用命令前缀直接与MCP服务器交互(默认值: #).

概述

集成工作如下:

  1. Mattermost连接(mattermost_client.py):通过API和WebSocket连接到Mattermost服务器,以侦听指定通道中的消息。
  2. MCP连接(mcp_client.py):建立联系(主要是 stdio)到中定义的每个MCP服务器 src/mattermost_mcp_host/mcp-servers.json。它发现每台服务器上的可用工具。
  3. **代理初始化(agent/llm_agent.py)**A. LangGraphAgent 创建、配置有所选LLM提供程序和来自所有连接的MCP服务器的动态加载工具。
  4. 消息处理(main.py):
    • 如果消息以命令前缀开头(#),它被解析为一个直接命令,用于列出服务器/工具或通过相应的 MCPClient.
    • 否则,消息(连同线程历史记录)将传递给 LangGraphAgent.
  5. 代理执行:代理处理请求,可能通过调用一个或多个MCP工具 MCPClient 并生成响应。
  6. 响应交付:代理或命令执行的最终响应被发布回相应的Mattermost通道/线程。

设置

  1. 克隆存储库:

    git clone <repository-url>
    cd mattermost-mcp-host
    
  2. 安装:

    • 使用紫外线(推荐):
      # Install uv if you don't have it yet
      # curl -LsSf https://astral.sh/uv/install.sh | sh 
      
      # Activate venv
      source .venv/bin/activate
      
      # Install the package with uv
      uv sync
      
      # To install dev dependencies
      uv sync --dev --all-extras
      
  3. 配置环境(.env 文件): 复制 .env.example 并填写数值或 创建一个 .env 项目根目录中的文件(或设置环境变量):

    # Mattermost Details
    MATTERMOST_URL=http://your-mattermost-url
    MATTERMOST_TOKEN=your-bot-token # Needs permissions to post, read channel, etc.
    MATTERMOST_TEAM_NAME=your-team-name
    MATTERMOST_CHANNEL_NAME=your-channel-name # Channel for the bot to listen in
    # MATTERMOST_CHANNEL_ID= # Optional: Auto-detected if name is provided
    
    # LLM Configuration (Azure OpenAI is default)
    DEFAULT_PROVIDER=azure
    AZURE_OPENAI_ENDPOINT=your-azure-endpoint
    AZURE_OPENAI_API_KEY=your-azure-api-key
    AZURE_OPENAI_DEPLOYMENT=your-deployment-name # e.g., gpt-4o
    # AZURE_OPENAI_API_VERSION= # Optional, defaults provided
    
    # Optional: Other providers (install with `[all]` extra)
    # OPENAI_API_KEY=...
    # ANTHROPIC_API_KEY=...
    # GOOGLE_API_KEY=...
    
    # Command Prefix
    COMMAND_PREFIX=# 
    

    看 .env.example 更多选择。

  4. 配置MCP服务器: 编辑 src/mattermost_mcp_host/mcp-servers.json 要定义要连接的MCP服务器,请参阅 src/mattermost_mcp_host/mcp-servers-example.json. 根据服务器配置,您可能 npx, uvx, docker 安装在您的系统和路径中。

  5. 启动集成:

    mattermost-mcp-host
    

先决条件

  • Python 3.13.1+
  • uv包管理器
  • Mattermost服务器实例
  • 使用API代币的Mattermost Bot帐户
  • 访问LLM API(Azure OpenAI)

可选的

  • 在中配置了一个或多个MCP服务器 mcp-servers.json
  • Tavily网络搜索需要 TAVILY_API_KEY 在……里面 .env 文件

在Mattermost中的使用

集成运行并连接后:

  1. 直接聊天: 只需在配置的频道或与机器人聊天。人工智能代理将根据需要使用工具进行响应。它在消息线程中维护上下文。
  2. 直接命令: 使用命令前缀(默认 #)具体行动:
    • #help -显示帮助信息。
    • #servers -列出已配置和连接的MCP服务器。
    • #<server_name> tools -列出可用工具 <server_name>.
    • #<server_name> call <tool_name> <json_arguments> -呼叫 <tool_name> 在…上 <server_name> 参数以JSON字符串形式提供。
      • 例子: #my-server call echo '{"message": "Hello MCP!"}'
    • #<server_name> resources -列出可用资源 <server_name>.
    • #<server_name> prompts -列出可用的提示 <server_name>.

后续步骤

  • ⚙️ 可配置的LLM后端:通过环境变量支持多个AI提供商(Azure OpenAI默认、OpenAI、Anthropic Claude、Google Gemini)。

Mattermost设置

  1. 创建Bot帐户
  • 转到集成>Bot帐户>添加Bot帐户
  • 给它起个名字和描述
  • 将访问令牌保存在.env文件中
  1. 所需的Bot权限
  • post_all
  • create_post
  • read_channel
  • create_direct_channel
  • read_user
  1. 将机器人添加到团队/频道
  • 邀请机器人加入您的团队
  • 将机器人添加到所需频道

故障排除

  1. 连接问题
  • 验证Mattermost服务器是否正在运行
  • 检查机器人令牌权限
  • 确保正确的团队/频道名称
  1. AI提供商问题
  • 验证API密钥
  • 检查API配额和限制
  • 验证对API端点的网络访问
  1. MCP服务器问题
  • 检查服务器日志
  • 验证服务器配置
  • 确保安装了所需的依赖项并定义了环境变量

德莫斯

使用Github MCP服务器通过聊天创建问题

(在YouTube上)

贡献

请随时打开PR。

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。