返回市场
mattermost-mcp主机服务器

mattermost-mcp主机服务器

作者:jagan-shanmugam27 星标更新:2025-04-08

项目介绍

Mattermost MCP 主机

与模型上下文协议(MCP)服务器集成的Mattermost插件,利用基于LangGraph的人工智能代理提供智能接口,以便在Mattermost中与用户交互并执行工具。

版本 Python 许可证 包管理器

演示

1. 支持频道中的Github代理 - 搜索现有问题和PR,并创建新问题(如果未找到)

GIF描述

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

GIF描述

向下滚动查看YouTube上的完整演示

功能

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

概览

集成工作流程如下:

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

设置

  1. 克隆仓库:

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

    • 使用uv(推荐):
      # 如果还没有安装uv,请先安装
      # curl -LsSf https://astral.sh/uv/install.sh | sh 
      
      # 激活虚拟环境
      source .venv/bin/activate
      
      # 使用uv安装包
      uv sync
      
      # 安装开发依赖
      uv sync --dev --all-extras
      
  3. 配置环境(.env文件): 复制.env.example并填写值或 在项目根目录创建一个.env文件(或设置环境变量):

    # Mattermost详情
    MATTERMOST_URL=http://your-mattermost-url
    MATTERMOST_TOKEN=your-bot-token # 需要权限以发布、读取频道等
    MATTERMOST_TEAM_NAME=your-team-name
    MATTERMOST_CHANNEL_NAME=your-channel-name # 机器人监听的频道
    # MATTERMOST_CHANNEL_ID= # 可选:如果提供了名称则自动检测
    
    # LLM配置(Azure OpenAI是默认)
    DEFAULT_PROVIDER=azure
    AZURE_OPENAI_ENDPOINT=your-azure-endpoint
    AZURE_OPEN_ API_KEY=your-azure-api-key
    AZURE_OPENAI_DEPLOYMENT=your-deployment-name # 例如,gpt-4o
    # AZURE_OPENAI_API_VERSION= # 可选,默认值已提供
    
    # 可选:其他提供商(使用`[all]`额外安装)
    # OPENAI_API_KEY=...
    # ANTHROPIC_API_KEY=...
    # GOOGLE_API_KEY=...
    
    # 命令前缀
    COMMAND_PREFIX=# 
    

    查看.env.example获取更多选项。

  4. 配置MCP服务器: 编辑src/mattermost_mcp_host/mcp-servers.json以定义您想要连接的MCP服务器。参见src/mattermost_mcp_host/mcp-servers-example.json。 根据服务器配置,您可能需要在系统中安装并添加路径的npxuvxdocker

  5. 启动集成:

    mattermost-mcp-host
    

先决条件

  • Python 3.13.1+
  • uv包管理器
  • Mattermost服务器实例
  • Mattermost机器人账户及API令牌
  • 访问LLM API(Azure OpenAI)

可选

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

在Mattermost中的使用

一旦集成运行并连接:

  1. 直接聊天:只需在配置的频道或与机器人聊天即可。AI代理会根据需要使用工具进行回应。它会在消息线程中维护上下文。
  2. 直接命令:使用命令前缀(默认#)进行特定操作:
    • #help - 显示帮助信息。
    • #servers - 列出配置并连接的MCP服务器。
    • #<server_name> tools - 列出<server_name>的可用工具。
    • #<server_name> call <tool_name> <json_arguments> - 调用<server_name>上的<tool_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. 创建机器人账户
  • 转到集成 > 机器人账户 > 添加机器人账户
  • 给它起个名字和描述
  • 将访问令牌保存在.env文件中
  1. 所需机器人权限
  • post_all
  • create_post
  • read_channel
  • create_direct_channel
  • read_user
  1. 将机器人添加到团队/频道
  • 邀请机器人加入您的团队
  • 将机器人添加到所需的频道

故障排除

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

演示

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

GIF描述

(在YouTube上)

Mattermost中的AI代理演示

贡献

请随时提交PR。

许可证

本项目采用MIT许可证 - 详情请参阅LICENSE文件。