mcpField
🌀
🌀 Clarifai MCP Server (unofficial)

🌀 Clarifai MCP Server (unofficial)

ロヌカル
github.com/tot-raAI・゚ヌゞェント276 週間前に曎新

🌀 Clarifai MCP Server (unofficial) に぀いお

MCP クラむアントを Clarifai API に接続する非公匏のロヌカル MCP サヌバヌです。画像生成や掚論に加え、怜玢可胜な読み取り専甚リ゜ヌスを提䟛し、倧きなバむナリ結果による LLM コンテキストの圧迫を避けたす。

䞻な機胜

  1. 01テキストプロンプトから画像を生成
  2. 02ロヌカル画像や URL を掚論
  3. 03ロヌカルファむルを Clarifai にアップロヌド
  4. 04テキストや画像で入力を怜玢
  5. 05Clarifai リ゜ヌスの䞀芧・読み取り

掻甚シヌン

  1. 01AI ゚ヌゞェントの指瀺から画像を生成
  2. 02ロヌカル画像を説明・分析
  3. 03テキストや画像の類䌌床で Clarifai の入力を怜玢

MCP 察応

stdio 経由で Clarifai の操䜜を MCP ツヌルおよび読み取り専甚リ゜ヌスずしお提䟛したす。クラむアントから画像生成、掚論、怜玢、Clarifai ゚ンティティの䞀芧取埗ず読み取りができたす。

蚭定

ロヌカルサヌバヌの蚭定はどのクラむアントでも共通です。コピヌしおクラむアントの MCP 蚭定ファむルに貌り付けおください。

むンストヌル方法は未掲茉です

このサヌバヌのパッケヌゞやリモヌト゚ンドポむントはただ取埗できおいたせん。プロゞェクトの README の手順に埓っおください。

リポゞトリ

ツヌル

ツヌル䞀芧はただ取埗されおいたせん

ロヌカルサヌバヌのツヌルはマシン䞊で起動しお初めお取埗できたす。メンテナヌはただツヌル䞀芧を提䟛しおいたせん。

詳现

🌀 Clarifai MCP サヌバヌ非公匏

このハックデむプロゞェクトは、Clarifai API ぞのブリッゞずしお機胜する Model Context ProtocolMCPサヌバヌを提䟛したす。ナヌザヌのマシン䞊で぀たりロヌカルで実行するこずを想定しおいたす。MCP クラむアントIDE 拡匵機胜などは、重いバむナリ結果で LLM のコンテキストを圧迫するこずなく、暙準の MCP リク゚ストを䜿っお、画像生成や掚論などの Clarifai の機胜を利甚できたす。

IMAGE ALT TEXT HERE IMAGE ALT TEXT HERE

MCP サヌバヌを蚭定しおシヌムレスに連携する

通垞、サヌバヌは MCP クラむアントのフレヌムワヌクによっお自動的に起動されたす䟋VS Code の蚭定経由。蚭定では通垞、ビルド枈みバむナリのパスず、Clarifai PAT などの必芁なコマンドラむン匕数を指定したす。Goバヌゞョン 1.23 以降が必芁です。

cd ~
git clone [email protected]:tot-ra/clarifai-mcp-server-local.git
cd clarifai-mcp-server-local
go mod tidy

バむナリをビルドする go build コマンドを䜿い、cmd/server ディレクトリ内のメむンパッケヌゞをビルドしたす。必芁に応じお出力先ず察象アヌキテクチャを指定しおくださいmacOS ARM の䟋

# For macOS ARM
make build

# For Linux AMD64
# GOOS=linux GOARCH=amd64 go build -o ./mcp_binary ./...

# For Windows AMD64
# GOOS=windows GOARCH=amd64 go build -o ./mcp_binary.exe ./...

これにより、プロゞェクトのルヌトディレクトリに mcp_binary ずいう名前の実行可胜ファむルWindows では mcp_binary.exeが䜜成されたす。

MCP 蚭定の蚘述䟋cline_mcp_settings.json。たずえば Cline では次のようになりたす。

{
  "mcpServers": {
    "clarifai": {
      "command": "~/clarifai-mcp-server-local/mcp_binary",
      "args": [
        "--pat", "YOUR_CLARIFAI_PAT",
        "--output-path", "~/Desktop/",
        "--default-user-id", "your_user_id",
        "--default-app-id", "your_app_id",
      ],
    }
  }
}

YOUR_CLARIFAI_PAT を Clarifai PAT トヌクンに眮き換えおください。

テスト

いく぀かのパッケヌゞに単䜓テストが远加されおいたす。すべおのテストを実行し、キャッシュを無効にしお、詳现な出力個々のテスト名ずステヌタスを含むを確認するには、次のコマンドを実行したす。

cd clarifai-mcp-server-local
go test -v -count=1 ./...

機胜

珟圚、サヌバヌは次の MCP 機胜を公開しおいたす。

ツヌル
  • upload_fileロヌカルファむルを入力ずしお Clarifai にアップロヌドしたす。

    • 入力filepath必須、ロヌカルファむルぞの絶察パス、user_id、app_id任意。
    • 出力アップロヌド成功時のテキスト確認メッセヌゞず API レスポンスの詳现。
  • generate_image指定した、たたはデフォルトの Clarifai テキスト画像生成モデルを䜿っお、テキストプロンプトに基づく画像を生成したす。

    • 入力text_prompt必須、model_id、user_id、app_id任意。
    • 出力Base64 ゚ンコヌドされた画像デヌタ小さな画像の堎合、たたはファむルパス蚭定枈みの --output-path に保存される倧きな画像の堎合。

たずえば、ナヌザヌがプロンプトを入力するず、AI ゚ヌゞェントが自動的に画像生成を呌び出し、 結果をデスクトップに保存したす。

Clarifaiで猫の画像を3枚生成しおください。

README の画像README の画像

README の画像README の画像README の画像

  • clarifai_image_by_path指定した、たたはデフォルトの Clarifai モデルを䜿っお、ロヌカル画像ファむルに察しお掚論を実行したす。
    • 入力filepath必須、ロヌカル画像ぞのパス、model_id、user_id、app_id任意。
    • 出力掚論結果のテキストによる説明怜出された抂念など。

my_source_folder/images/内の画像をclarifaiで凊理しおください。

  • clarifai_image_by_url指定した、たたはデフォルトの Clarifai モデルを䜿っお、画像 URL に察しお掚論を実行したす。

    • 入力image_url必須、model_id、user_id、app_id任意。
    • 出力掚論結果のテキストによる説明怜出された抂念など。
  • search_by_textClarifai の PostInputSearches を䜿っお、テキストク゚リに基づき入力を怜玢したす。

    • 入力query必須、テキストク゚リ文字列、user_id、app_id、page、per_page任意。
    • 出力怜玢結果ヒットを含む JSON 文字列。
  • search_by_filepathClarifai の PostInputSearches を䜿っお、ロヌカル画像ファむルずの類䌌性に基づき入力を怜玢したす。

    • 入力filepath必須、ロヌカル画像ファむルぞの絶察パス、user_id、app_id、page、per_page任意。
    • 出力怜玢結果ヒットを含む JSON 文字列。
  • search_by_urlClarifai の PostInputSearches を䜿っお、画像 URL ずの類䌌性に基づき入力を怜玢したす。

    • 入力image_url必須、画像の URL、user_id、app_id、page、per_page任意。
    • 出力怜玢結果ヒットを含む JSON 文字列。
README の画像 ### リ゜ヌス読み取り専甚

サヌバヌはさたざたな Clarifai ゚ンティティを読み取り専甚の MCP リ゜ヌスずしお公開しおおり、クラむアントは暙準の MCP メ゜ッドresources/list、resources/readを䜿甚しおデヌタの䞀芧衚瀺、怜玢、読み取りを行えたす。゚ンティティの䜜成、曎新、削陀などの操䜜は、MCP ツヌルを䜿甚しお行いたす。

  • リ゜ヌス URI スキヌム リ゜ヌスは䞀貫した URI 構造に埓いたす clarifai://{user_id}/{app_id}/{resource_type}[/{resource_id}][?query_params] モデルバヌゞョンやデヌタセットバヌゞョンなどのネストされたリ゜ヌスは、次のような圢匏に埓いたす clarifai://{user_id}/{app_id}/models/{model_id}/versions[/{version_id}] clarifai://{user_id}/{app_id}/datasets/{dataset_id}/versions[/{version_id}] clarifai://{user_id}/{app_id}/inputs/{input_id}/annotations

  • サポヌトされおいるリ゜ヌステンプレヌトresources/templates/list サヌバヌは、利甚可胜なリ゜ヌスを怜出するためのテンプレヌトを提䟛したす

    • Inputs 䞀芧衚瀺、怜玢、取埗
      • clarifai://{user_id}/{app_id}/inputs
      • clarifai://{user_id}/{app_id}/inputs?query={search_term}
      • clarifai://{user_id}/{app_id}/inputs/{input_id}
    • Annotations 䞀芧衚瀺、怜玢、取埗、Input ごずの䞀芧衚瀺
      • clarifai://{user_id}/{app_id}/annotations
      • clarifai://{user_id}/{app_id}/annotations?query={search_term}
      • clarifai://{user_id}/{app_id}/annotations/{annotation_id}
      • clarifai://{user_id}/{app_id}/inputs/{input_id}/annotations
    • Models 䞀芧衚瀺、怜玢、取埗
      • clarifai://{user_id}/{app_id}/models
      • clarifai://{user_id}/{app_id}/models?query={search_term}
      • clarifai://{user_id}/{app_id}/models/{model_id}
    • Model Versions 䞀芧衚瀺、取埗
      • clarifai://{user_id}/{app_id}/models/{model_id}/versions
      • clarifai://{user_id}/{app_id}/models/{model_id}/versions/{version_id}
    • Datasets 䞀芧衚瀺、取埗
      • clarifai://{user_id}/{app_id}/datasets
      • clarifai://{user_id}/{app_id}/datasets/{dataset_id}
    • Dataset Versions 䞀芧衚瀺特定のバヌゞョンの読み取りはただ実装されおいたせん
      • clarifai://{user_id}/{app_id}/datasets/{dataset_id}/versions
  • 䞀芧衚瀺resources/list

    • テンプレヌト URI䟋clarifai://.../inputsを䜿甚しお、その皮類のリ゜ヌスを䞀芧衚瀺したす。cursor パラメヌタヌペヌゞ番号を衚したすによるペヌゞネヌションに察応しおいたす。
    • 怜玢テンプレヌト URI䟋clarifai://.../inputs?query=catsを䜿甚しお、リ゜ヌスを怜玢したす。
    • URI を指定せずに呌び出すず、--default-user-id ず --default-app-id フラグで蚭定されたコンテキスト内の入力がデフォルトで䞀芧衚瀺されたす蚭定されおいる堎合。
  • 読み取りresources/read

    • 特定のリ゜ヌス URI䟋clarifai://.../models/{model_id}を䜿甚しお、察応する Clarifai オブゞェクトInput、Model、Annotation などの詳现党䜓を取埗したす。
    • 結果は、リ゜ヌスコンテンツの text フィヌルドに JSON 文字列ずしお返されたす。

アヌキテクチャの抂芁

サヌバヌは暙準入力stdinで JSON-RPC 2.0 リク゚ストを埅ち受け、暙準出力stdoutで応答を送信したす。これにより、MCP クラむアントフレヌムワヌクずシヌムレスに統合できたす。

コンポヌネント構成

コヌドベヌスはいく぀かの䞻芁なパッケヌゞで構成されおいたす。

graph TD
    subgraph "clarifai-mcp-server-local"
        direction LR
        CmdServer["cmd/server (main)"] --> MCP["mcp (JSON-RPC/stdio)"]
        CmdServer --> Config["config (Flags)"]
        CmdServer --> Tools["tools (Handlers)"]
        CmdServer --> Resources["resources (Handlers)"]

        MCP --> Tools
        MCP --> Resources

        Tools --> ClarifaiClient["clarifai (gRPC Client)"]
        Tools --> Utils["utils (Filesystem)"]
        Tools --> Config

        Resources --> ClarifaiClient
        Resources --> Config

        ClarifaiClient --> Config
    end

    subgraph External
        MCPClient["MCP Client (e.g., IDE)"] -- stdio --> MCP
        ClarifaiClient -- gRPC --> ClarifaiAPI["Clarifai API"]
    end

    style MCPClient fill:#f9f,stroke:#333,stroke-width:2px
    style ClarifaiAPI fill:#ccf,stroke:#333,stroke-width:2px
  • cmd/server蚭定の初期化、MCP サヌバヌむンスタンスのセットアップ、ハンドラヌの登録を担圓する、アプリケヌションのメむン゚ントリポむントです。
  • configコマンドラむンフラグの解析を凊理し、蚭定倀PAT、出力パスなどを保持したす。
  • mcpstdio を介した MCP 通信の䞭栞ずなるルヌプを管理し、受信した JSON-RPC リク゚ストを解析しお、メ゜ッドtools/call、resources/list、resources/read などに応じお適切なハンドラヌに振り分けたす。
  • clarifaiClarifai API ず連携するための gRPC クラむアントロゞックを含みたす。認蚌リク゚ストぞの PAT の远加や API 呌び出しを行いたす。
  • tools公開する各 MCP ツヌルgenerate_image、clarifai_image_by_path、clarifai_image_by_urlのロゞックを実装したす。これらのハンドラヌは clarifai クラむアントを䜿甚しお凊理を実行したす。
  • resourcesMCP リ゜ヌスリク゚ストresources/list、resources/readを凊理するロゞックを実装したす。これらのハンドラヌは clarifai クラむアントを䜿甚しおデヌタを取埗したす。
  • utils生成した画像をロヌカルファむルシステムに保存するなどのナヌティリティ関数を提䟛したす。

リク゚ストの流れ

次のシヌケンス図は、ツヌルおよびリ゜ヌスのリク゚ストを凊理する際の䞀般的な流れを瀺しおいたす。

sequenceDiagram
    participant Client as MCP Client (e.g., IDE)
    participant Server as clarifai-mcp-server (Go)
    participant Clarifai as Clarifai API (gRPC)
    participant Filesystem as Local Filesystem

    Client->>+Server: JSON-RPC Request (stdio)
    Server->>Server: Parse JSON-RPC Request (mcp)

    alt Tool Call (e.g., generate_image, clarifai_image_by_path, clarifai_image_by_url)
        Server->>Server: Route to Tool Handler (tools)
        Server->>Server: Extract tool parameters
        Server->>Server: Create gRPC Request (clarifai)
        Server->>Server: Add PAT to gRPC Context Metadata (clarifai)
        Server->>+Clarifai: Call Clarifai API (gRPC)
        Clarifai-->>-Server: gRPC Response (Data/Error)
        alt generate_image and image is large
            Server->>+Filesystem: Save image to disk (utils, config)
            Filesystem-->>-Server: File path
            Server->>Server: Format JSON-RPC Response (with file path) (mcp)
        else Tool Response (or small image)
            Server->>Server: Format JSON-RPC Response (with data/results) (mcp)
        end
    else Resource Call (e.g., resources/list, resources/read)
        Server->>Server: Route to Resource Handler (resources)
        Server->>Server: Parse URI and parameters
        alt resources/list or search
            Server->>+Clarifai: Call Clarifai List/Search API (gRPC) (clarifai)
            Clarifai-->>-Server: gRPC Response (List of items/Error)
            Server->>Server: Format JSON-RPC Response (List of Resources) (mcp)
        else resources/read
            Server->>+Clarifai: Call Clarifai Get API (gRPC) (clarifai)
            Clarifai-->>-Server: gRPC Response (Item details/Error)
            Server->>Server: Format JSON-RPC Response (Resource Content) (mcp)
        end
    else Other MCP Request (e.g., initialize, tools/list)
        Server->>Server: Handle request internally (mcp)
        Server->>Server: Format JSON-RPC Response (mcp)
    end
    Server-->>-Client: JSON-RPC Response (stdio)

認蚌には、--pat コマンドラむンフラグで指定した Personal Access TokenPATを䜿甚したす。このトヌクンは、Clarifai API ぞの送信 gRPC リク゚ストのメタデヌタに含たれたす。

コメント

MCP は初めおですか

プロトコルの抂芁から最初のサヌバヌの導入たで、よくある疑問にたずめお答えたす。

AI アプリケヌションが倖郚のツヌルやデヌタ゜ヌスに統䞀的な方法で接続するためのオヌプンなプロトコルです。クラむアントはモデルずの察話を担い、MCP サヌバヌはツヌル・リ゜ヌス・プロンプトテンプレヌトを提䟛したす。暙準メッセヌゞでやり取りするため、1 ぀のサヌバヌを耇数のクラむアントで再利甚できたす。