mcpField
M
Mattermost MCP Client

Mattermost MCP Client

github.com/jagan-shanmugamフレームワーク・SDK3481 週間前に更新

Mattermost MCP Client について

Mattermost MCP Clientは、LangGraphエージェントをMCPサーバーに接続し、Mattermost内の依頼への応答やツール実行を可能にします。チャンネルやスレッドでMCPの機能を使いたいチーム向けです。

主な機能

  1. 01複数のMCPサーバーへの接続
  2. 02ツールの動的な検出と読み込み
  3. 03メッセージスレッドでの文脈維持
  4. 04サーバー機能の直接表示と呼び出し

活用シーン

  1. 01サポートチャンネルでGitHubの課題を検索し、新規作成
  2. 02MCPサーバーでウェブ検索し、結果をチャンネルに投稿
  3. 03Mattermostの会話内で設定済みツールを呼び出し

MCP 対応

mcp-servers.jsonの設定を読み込み、主にstdioで複数のMCPサーバーに接続してツールを検出します。直接コマンドでサーバー、ツール、リソース、プロンプトを一覧表示したり、ツールを呼び出したりできます。

詳細

Mattermost MCP Host

Model Context Protocol (MCP) サーバーに接続する Mattermost インテグレーションです。LangGraph ベースの AI エージェントを活用して、Mattermost 内でユーザーと対話し、ツールを直接実行するためのインテリジェントなインターフェースを提供します。

Version Python License Package Manager

デモ

1. サポートチャネルの Github エージェント - 既存の Issue と PR を検索し、見つからない場合は新しい Issue を作成します

Description of your GIF

2. インターネットを検索して Mattermost-MCP-server を使用してチャネルに投稿します

Description of your 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): 選択した LLM プロバイダーと、接続されたすべての MCP サーバーから動的に読み込まれたツールで構成された LangGraphAgent が作成されます。
  4. メッセージ処理(main.py):
    • メッセージがコマンドプレフィックス(#)で始まる場合、それはサーバー/ツールをリストアップするか、対応する MCPClient を通じて特定のツールを呼び出すためのダイレクトコマンドとして解析されます。
    • それ以外の場合、メッセージ(スレッド履歴を含む)は LangGraphAgent に渡されます。
  5. エージェント実行: エージェントがリクエストを処理し、MCPClient インスタンスを通じて 1 つ以上の MCP ツールを呼び出す可能性があり、レスポンスを生成します。
  6. レスポンス配信: エージェントまたはコマンド実行からの最終レスポンスが、適切な Mattermost チャネル/スレッドに投稿されます。

セットアップ

  1. リポジトリをクローンする:

    git clone <repository-url>
    cd mattermost-mcp-host
    
  2. インストール:

    • uv を使用する場合(推奨):
      # まだ uv をインストールしていない場合はインストールしてください
      # curl -LsSf https://astral.sh/uv/install.sh | sh 
      
      # venv をアクティブにする
      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_OPENAI_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 を参照してください。 サーバーの設定によっては、システムのパスに npx、uvx、docker をインストールする必要があります。

  5. 統合を開始する:

    mattermost-mcp-host
    

前提条件

  • Python 3.13.1 以上
  • uv パッケージマネージャー
  • Mattermost サーバーインスタンス
  • API トークン付き Mattermost ボットアカウント
  • LLM API へのアクセス(Azure OpenAI)
オプション
  • mcp-servers.json に設定された 1 つ以上の 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 サーバーを使用してチャットで issue を作成

Description of your GIF

(YouTube)

AI Agent in Action in Mattermost

貢献

PR をお気軽に開いてください。

ライセンス

このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。