Skip to main content
Glama

MCP Server Box

MCP サーバーボックス

説明

MCP Server Boxは、Box APIと統合してファイル検索、テキスト抽出、AIベースのクエリ、データ抽出といった様々な操作を実行するPythonプロジェクトです。box box-sdk-genライブラリを活用し、Boxのファイルやフォルダを操作するためのツールセットを提供します。

モデルコンテキストプロトコル(MCP)は、モデルが様々なデータソースやサービスと連携する方法を標準化するために設計されたフレームワークです。このプロジェクトでは、MCPを用いてBox APIとのシームレスな統合を促進し、Boxのファイルやフォルダに対する効率的でスケーラブルな操作を実現します。MCP Server Boxプロジェクトは、高度なAIと機械学習技術を用いてBoxデータを管理・処理するための堅牢で柔軟なソリューションを提供することを目指しています。

実装されたツール

Box APIツール

box_who_am_i

現在のユーザー情報を取得し、接続状態を確認します。

  • **戻り値:**ユーザー情報文字列
box_authorize_app_tool

Box アプリケーションの承認プロセスを開始します。

  • **戻り値:**承認ステータスメッセージ
box_search_tool

Box内のファイルを検索します。

  • パラメータ:
    • query (str): 検索するクエリ。
    • file_extensions (List[str], オプション): 結果をフィルタリングするファイル拡張子。
    • where_to_look_for_query (List[str], オプション): 検索する場所 (例: NAME、DESCRIPTION、FILE_CONTENT、COMMENTS、TAG)。
    • ancestor_folder_ids (List[str], オプション): 検索するフォルダー ID のリスト。
  • **返り値:**検索結果は改行で区切られたファイル名と ID のリストとして返されます。
box_read_tool

Box ファイルのテキスト コンテンツを読み取ります。

パラメータ:

  • file_id (str): 読み取るファイルのID

**戻り値:**ファイルの内容

box_ask_ai_tool

Box AI にファイルについて質問します。

パラメータ:

  • file_id (str): ファイルのID
  • prompt (str): AIへの質問

戻り値: AI応答

box_hubs_ask_ai_tool

Box AIにハブについて問い合わせてください。現在、API経由でハブIDを取得する方法はないため、このツールを使用するにはIDが必要です。この問題は今後修正される予定です。

パラメータ:

  • hubs_id (str): ハブのID
  • prompt (str): AIへの質問

戻り値: AI応答

box_search_folder_by_name

名前でフォルダーを検索します。

パラメータ:

  • folder_name (str): フォルダ名

**戻り値:**フォルダID

box_ai_extract_data

AI を使用してファイルからデータを抽出します。

パラメータ:

  • file_id (str): ファイルのID
  • fields (str): 抽出するフィールド

戻り値: JSON形式で抽出されたデータ

box_list_folder_content_by_folder_id

フォルダーの内容を一覧表示します。

パラメータ:

  • folder_id (str): フォルダのID
  • is_recursive (bool): 再帰的にリストするかどうか

戻り値: ID、名前、タイプ、説明を含む JSON 形式のフォルダーの内容

box_manage_folder_tool

Box 内のフォルダーを作成、更新、または削除します。

パラメータ:

  • action (str): 実行するアクション: "create"、"delete"、または "update"
  • folder_id (str, オプション): フォルダのID (削除/更新に必須)
  • name (str, オプション): フォルダ名 (作成の場合は必須、更新の場合はオプション)
  • parent_id (str, オプション): 親フォルダID (作成の場合は必須、更新の場合はオプション)
  • description (str, オプション): フォルダの説明 (更新の場合はオプション)
  • recursive (bool, オプション): 再帰的に削除するかどうか (delete の場合はオプション)

**戻り値:**フォルダの詳細を含むステータスメッセージ

box_upload_file_tool

=======

  • パラメータ:
    • file_id (str): 読み取るファイルの ID。
  • **戻り値:**ファイルのテキスト コンテンツ。
box_ask_ai_tool

単一ファイルに関するクエリボックス AI。

  • パラメータ:
    • file_id (str): ファイル識別子。
    • prompt (str): AIに対するクエリまたは指示。
  • **戻り値:**ファイルの内容に基づいた AI 応答。
box_ask_ai_tool_multi_file

複数のファイルを使用して Box AI をクエリします。

  • パラメータ:
    • file_ids (List[str]): ファイルIDのリスト。
    • prompt (str): 集約されたコンテンツに基づいた AI への指示。
  • **戻り値:**提供されたすべてのファイルを考慮して AI が生成した回答。
box_search_folder_by_name

Box 内のフォルダーを名前で検索します。

  • パラメータ:
    • folder_name (str): フォルダーの名前。
  • **返される値:**一致するフォルダーに関する情報 (名前と ID)。
box_ai_extract_data

AI を使用してファイルから特定のフィールドを抽出します。

  • パラメータ:
    • file_id (str): ファイルのID。
    • fields (str): 抽出するフィールドのカンマ区切りリスト。
  • 戻り値: JSON 文字列形式で抽出されたデータ。
box_list_folder_content_by_folder_id

ID を使用してフォルダーの内容を一覧表示します。

  • パラメータ:
    • folder_id (str): フォルダー ID。
    • is_recursive (bool、オプション): コンテンツを再帰的にリストするかどうか。
  • 戻り値: ID、名前、タイプ、説明を含む JSON 文字列としてのフォルダーの内容。
box_manage_folder_tool

Box 内のフォルダーを作成、更新、または削除します。

  • パラメータ:
    • action (str): 実行するアクション: 「create」、「delete」、または「update」。
    • folder_id (str、オプション): フォルダー ID (削除および更新に必須)。
    • name (str、オプション): フォルダー名 (作成の場合は必須、更新の場合はオプション)。
    • parent_id (str、オプション): 親フォルダー ID (ルートの場合はデフォルトは「0」)。
    • description (str, オプション): フォルダーの説明 (更新用)。
    • recursive (bool、オプション): 再帰的な削除の場合。
  • **戻り値:**フォルダーの詳細を含むステータス メッセージ。
box_upload_file_from_path_tool

ローカルファイルシステムのパスから Box にファイルをアップロードします。

  • パラメータ:
    • file_path (str): ローカルファイルパス。
    • folder_id (str、オプション): 宛先フォルダー ID (デフォルトは "0")。
    • new_file_name (str、オプション): 新しいファイル名 (指定されていない場合は元のファイル名が使用されます)。
  • **返される値:**アップロードされたファイルの詳細 (ID と名前) またはエラー メッセージ。
box_upload_file_from_content_tool

コンテンツをファイルとして Box にアップロードします。

  • パラメータ:
    • content (str | bytes): アップロードするコンテンツ (テキストまたはバイナリ)。
    • file_name (str): ファイルに割り当てる名前。
    • folder_id (str、オプション): 宛先フォルダー ID (デフォルトは "0")。
    • is_base64 (bool、オプション): 提供されたコンテンツが base64 でエンコードされているかどうかを示します。
  • **返される値:**ファイル ID と名前を含むアップロード成功メッセージ。
box_download_file_tool

Box からファイルをダウンロードします。

  • パラメータ:
    • file_id (str): ダウンロードするファイルの ID。
    • save_file (bool、オプション): ファイルをローカルに保存するかどうか。
    • save_path (str、オプション): ファイルを保存するローカル パス。
  • **戻り値:**テキスト ファイルの場合はコンテンツを返します。画像の場合は base64 でエンコードされたデータを返します。その他の種類の場合はエラーまたは保存確認メッセージを返します。

Boxドキュメント生成ツール

box_docgen_create_batch_tool

Box Doc Gen テンプレートとローカル JSON ファイルを使用してドキュメントを生成します。

  • パラメータ:
    • file_id (str): テンプレートファイルID。
    • destination_folder_id (str): 生成されたドキュメントを保存するフォルダー ID。
    • user_input_file_path (str): 入力データを含む JSON ファイルへのパス。
    • output_type (str、オプション): 出力形式 (デフォルトは "pdf")。
  • **戻り値:**ドキュメント生成バッチの結果を JSON 文字列として返します。
box_docgen_get_job_tool

ID で単一の Doc Gen ジョブを取得します。

  • パラメータ:
    • job_id (str): ジョブ識別子。
  • 戻り値: JSON 形式の文字列でジョブの詳細を返します。
box_docgen_list_jobs_tool

現在のユーザーに関連付けられているすべての Doc Gen ジョブを一覧表示します。

  • パラメータ:
    • marker (str | None、オプション): ページ区切りマーカー。
    • limit (int | None、オプション): 返されるジョブの最大数。
  • **戻り値:**きれいに印刷された JSON 形式のページ区切りのジョブ リスト。
box_docgen_list_jobs_by_batch_tool

特定のバッチに属する Doc Gen ジョブを一覧表示します。

  • パラメータ:
    • batch_id (str): バッチ識別子。
    • marker (str | None、オプション): ページ区切りマーカー。
    • limit (int | None、オプション): 返されるジョブの最大数。
  • 戻り値: JSON 形式でのバッチ ジョブの詳細。
box_docgen_template_create_tool

ファイルを Box Doc Gen テンプレートとしてマークします。

  • パラメータ:
    • file_id (str): テンプレートとしてマークするファイル ID。
  • **戻り値:**マーク後のテンプレートの詳細。
box_docgen_template_list_tool

利用可能なすべての Box Doc Gen テンプレートを一覧表示します。

  • パラメータ:
    • marker (str | None、オプション): ページ区切りマーカー。
    • limit (int | None、オプション): リストするテンプレートの最大数。
  • 戻り値: JSON 形式のテンプレートのリスト。
box_docgen_template_delete_tool

ファイルから Doc Gen テンプレートのマークを削除します。

  • パラメータ:
    • template_id (str): テンプレート識別子。
  • **戻り値:**削除の確認を JSON として返します。
box_docgen_template_get_by_id_tool

特定の Doc Gen テンプレートの詳細を取得します。

  • パラメータ:
    • template_id (str): テンプレート識別子。
  • 戻り値: JSON 形式のテンプレートの詳細。
box_docgen_template_list_tags_tool

Box Doc Gen テンプレートに関連付けられているすべてのタグを一覧表示します。

  • パラメータ:
    • template_id (str): テンプレート ID。
    • template_version_id (str | None、オプション): 特定のバージョン ID。
    • marker (str | None、オプション): ページ区切りマーカー。
    • limit (int | None、オプション): 返されるタグの最大数。
  • 戻り値: JSON 形式のタグのリスト。
box_docgen_template_list_jobs_tool

特定のテンプレートを使用したすべての Doc Gen ジョブを一覧表示します。

  • パラメータ:
    • template_id (str): テンプレート識別子。
    • marker (str | None、オプション): ページ区切りマーカー。
    • limit (int | None、オプション): リストするジョブの最大数。
  • **戻り値:**テンプレートのジョブの詳細を JSON 文字列として返します。

要件

  • Python 3.13以上
  • Box API 資格情報 (クライアント ID、クライアント シークレットなど)

インストール

  1. リポジトリをクローンします。
    git clone https://github.com/box-community/mcp-server-box.git cd mcp-server-box
  2. まだインストールされていない場合は、 uvをインストールします。2.1 MacOS+Linux
    curl -LsSf https://astral.sh/uv/install.sh | sh
    2.2 ウィンドウズ
    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  3. プロジェクトを作成して設定します。3.1 MacOS+Linux
    # Create virtual environment and activate it uv venv source .venv/bin/activate # Lock the dependencies uv lock
    3.2 ウィンドウズ
    # Create virtual environment and activate it uv venv .venv\Scripts\activate # Lock the dependencies uv lock
  4. ルート ディレクトリに.envファイルを作成し、Box API 資格情報を追加します。
    BOX_CLIENT_ID=your_client_id BOX_CLIENT_SECRET=your_client_secret

使用法

MCPサーバーの実行

MCP サーバーを起動するには、次のコマンドを実行します。

uv --directory /Users/anovotny/Desktop/mcp-server-box run src/mcp_server_box.py

クロードをクライアントとして利用する

  1. claude_desktop_config.jsonを編集します。
    code ~/Library/Application\ Support/Claude/claude_desktop_config.json
  2. 設定を追加します:
    { "mcpServers": { "mcp-server-box": { "command": "uv", "args": [ "--directory", "/Users/anovotny/Desktop/mcp-server-box", "run", "src/mcp_server_box.py" ] } } }
  3. Claude が実行中の場合は再起動します。

カーソルをクライアントとして使用する

  1. カーソルを使用して IDE を開きます。
  2. 設定で、 Cursor settingsを選択します。
  3. 左側のナビゲーションで、 MCPを選択します。
  4. 左上で、 Add new global MCP serverクリックします。
  5. 次の JSON を貼り付けます (ローカル値に更新してください)。
    { "mcpServers": { "box": { "command": "uv", "args": [ "--directory", "/Users/shurrey/local/mcp-server-box", "run", "src/mcp_server_box.py" ] } } }
  6. mcp.json ファイルを保存して閉じ、必要に応じて再起動します。

テストの実行

このプロジェクトには、Box APIの機能を検証するための一連のテストが含まれています。テストを実行する前に、テストファイル内のファイルとフォルダのIDをBoxアカウントのIDと一致するように更新してください。

テストの設定

  1. ファイルとフォルダのIDを更新します:
    • 各テスト ファイル ( tests/ディレクトリ内) は、Box ファイルとフォルダーのハードコードされた ID を使用します。
    • これらの ID を Box アカウントの有効な ID に置き換えます。
  2. ファイルID参照:
    • たとえば、 tests/test_box_api_read.pyでは、 "1728677291168"を有効なファイル ID に置き換えます。

テストの実行

ID を更新したら、pytest を使用してテストを実行できます。

# Run all tests pytest # Run a specific test file pytest tests/test_box_api_file_ops.py # Run tests with detailed output pytest -v # Run tests and show print statements pytest -v -s

利用可能なテストスイート

  • test_box_auth.py : 認証機能をテストします。
  • test_box_api_basic.py : 基本的な Box API テスト。
  • test_box_api_read.py : ファイルの読み取り機能をテストします。
  • test_box_api_search.py : 検索機能をテストします。
  • test_box_api_ai.py : AI ベースの機能をテストします。
  • test_box_api_file_ops.py : フ��イルのアップロードとダウンロード操作をテストします。
  • 追加のテストでは、フォルダー操作と Doc Gen 機能がカバーされます。

トラブルシューティング

Claude Desktop を使用して MCP サーバーを実行しているときに MacOS でError: spawn uv ENOENTエラーが表示される場合は、次の操作を実行してください。

  • uvを削除してHomebrewで再インストールする: brew install uv
  • または、設定で uv 実行可能ファイルへのフルパスを指定します。
    /Users/shurrey/.local/bin/uv --directory /Users/shurrey/local/mcp-server-box run src/mcp_server_box.py

[!NOTE] .env内の Box API 資格情報が正しく設定されていることを確認してください。

You must be authenticated.

A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Box API を介して Box ファイルやフォルダとのやり取りを可能にし、ファイル検索、テキスト抽出、AI ベースのクエリやデータ抽出などの操作を可能にする Python サーバーです。

  1. 説明
    1. 実装されたツール
      1. Box APIツール
      2. box_ask_ai_tool
      3. box_hubs_ask_ai_tool
      4. box_search_folder_by_name
      5. box_ai_extract_data
      6. box_list_folder_content_by_folder_id
      7. box_manage_folder_tool
      8. box_upload_file_tool
      9. Boxドキュメント生成ツール
    2. 要件
      1. インストール
        1. 使用法
          1. MCPサーバーの実行
          2. クロードをクライアントとして利用する
          3. カーソルをクライアントとして使用する
        2. テストの実行
          1. テストの設定
          2. テストの実行
          3. 利用可能なテストスイート
        3. トラブルシューティング

          Related MCP Servers

          • A
            security
            A
            license
            A
            quality
            This server facilitates interaction with cosense/Scrapbox projects, enabling users to retrieve, list, search, and create pages while supporting various query operations and secure access to private projects.
            Last updated -
            4
            19
            TypeScript
            MIT License
            • Apple
          • A
            security
            F
            license
            A
            quality
            This server allows users to perform web searches using Perplexity AI, providing a tool for retrieving search results through a simple API interface.
            Last updated -
            1
            2
            TypeScript
          • A
            security
            A
            license
            A
            quality
            A server that allows users to manage documents and perform Claude-powered searches using Needle through the Claude Desktop application.
            Last updated -
            7
            39
            Python
            MIT License
            • Apple
          • -
            security
            A
            license
            -
            quality
            A server that allows AI assistants to search for research papers, read their content, and access related code repositories through the PapersWithCode API.
            Last updated -
            4
            Python
            MIT License

          View all related MCP servers

          MCP directory API

          We provide all the information about MCP servers via our MCP API.

          curl -X GET 'https://glama.ai/api/mcp/v1/servers/box-community/mcp-server-box'

          If you have feedback or need assistance with the MCP directory API, please join our Discord server