この記事では、Pydantic AIを基盤として活用した、Box MCPサーバーからBoxのドキュメント生成機能を使用するインテリジェントなエージェントを構築する方法を紹介します。
前提条件
詳細に入る前に、以下を準備できていることを確認してください。
- Python 3.11以降
- 適切な権限が設定されているBoxアカウント
- OpenAI APIキー
- Pythonを使用した開発に関する基本的な知識
プロジェクトの設定
まず、環境を設定し、必要な依存関係をインストールします。
git clone https://github.com/box-community/doc-gen-pydantic-ai-box-mcp-server.git
cd doc-gen-pydantic-ai-box-mcp-server
# Set up the environment using uv
uv lock
uv sync
# Create a .env file with your OpenAI API key
echo "OPENAI_API_KEY = sk-YOUR_API_KEY" > .env
さらに、BoxアカウントにOpenAI Doc Genという名前のフォルダを作成する必要があります。ここには、テンプレートと生成されたドキュメントを保存します。
コードの構造について
今回のプロジェクトは、いくつかの主要なコンポーネントで構成されています。
- demo.py: エージェントのインタラクションを調整するメインスクリプト
- データファイル: テンプレートドキュメント (nda_template.docx) とJSONデータ (NDA.json)
エージェントの作成
このアプリケーションの核となるのは、Box MCPサーバーと接続して動作するPydantic AIエージェントです。主要なコンポーネントを確認しましょう。
# Set up the MCP server connection for Box
mcp_box = MCPServerStdio(
command="uv",
args=[
"--directory",
"/Users/rbarbosa/Documents/code/python/box/mcp-server-box",
"run",
"src/mcp_server_box.py",
],
)
# Initialize the OpenAI model
model = OpenAIModel("gpt-4.1-mini", provider=OpenAIProvider())
# Create the agent with access to the Box MCP server
agent = Agent(
model,
system_prompt=(
"
You are a Box Agent.
Your job is to answer questions and complete actions with Box
using the tools available."
),
mcp_servers=[mcp_box],
)
このコードでは、以下が確立されます。
- Box MCPサーバーへの接続
- OpenAI言語モデル (GPT-4.1-mini)
- Boxツールを使用するよう構成されたPydantic AIエージェント
ドキュメントの生成
エージェントは、次のワークフローに従ってドキュメントを生成します。
- 認証: Boxの資格情報を確認する
- テンプレートのアップロード: テンプレートファイルをBoxに転送する
- テンプレートとして設定: ファイルをドキュメント生成テンプレートとして構成する
- データの処理: JSONデータをアップロードして処理する
- ドキュメントの生成: テンプレートとデータをマージして最終的なドキュメントを作成する
実際にどのようになるかを確認しましょう。
Upload this local file {os.path.abspath(TEMPLATE)} to the Box
Folder called OpenAI Doc Gen and mark it as a doc gen template.
Wait a few seconds for the doc gen tags to be processed by Box.
Then upload the data file {os.path.abspath(DATA)} to the same folder,
and generate a new document with the template using the data file.
"""
prompt = textwrap.dedent(prompt)
async with agent.run_mcp_servers():
result = await agent.run(prompt)
この自然言語の指示だけで、以下の処理を実行できます。
- NDAテンプレートをBoxにアップロードする
- それをドキュメント生成テンプレートとして設定する
- 顧客情報を含むJSONデータをアップロードする
- 個別にカスタマイズされたNDAドキュメントを生成する
データ構造
JSONデータファイルでは、テンプレートへのデータ入力に必要な情報を提供します。
"contract": {
"customerID": "12345678",
"date": "03-18-2025",
"customerName": "Bob Smith",
"customerAddress": {
"street": "9876 S 27th St",
"city": "Dallas",
"zip": "77777",
"state": "TX"
}
},
"file_name": "Bob_Smith_NDA.pdf"
}
バックグラウンドでの処理
エージェントが実行されると、自然言語の指示は、MCPサーバーを介して特定のBox APIの操作に変換されます。print_tools_used関数によって、実行されているBoxの操作を出力できます。
all_messages = agent_result.all_messages()
for message in all_messages:
for part in message.parts:
if part.part_kind == "tool-call":
type_writer_effect_machine(
f" {part.tool_name}", is_dim=True, delay=0.01
)
この関数は、ドキュメント生成処理中にどのBoxツールが使用されているかを把握するのに役立ちます。
Boxに生成されたファイル
この演習の最終結果は、テンプレートと指定したJSONデータを組み合わせて生成されたファイルです。エージェントは、MCPサーバーを通じてDoc Gen Boxツールを起動できました。

Pydantic AIを利用したアプローチの利点
Pydantic AIをBox MCPサーバーと一緒に使用すると、以下のようにいくつかの利点があります。
- 自然言語インターフェース: 複雑なBox APIコードを書く必要がない
- 自動化ワークフロー: 複数の操作をシームレスに連鎖
- 柔軟なドキュメント生成: さまざまなテンプレートやデータ構造に簡単に対応可能
- 開発者エクスペリエンスの改善: 定型文を減らし、ビジネスロジックに集中
まとめ
Pydantic AIとBoxのドキュメント生成機能を組み合わせることにより、開発者は、最小限のコードで高度なドキュメント自動化ワークフローを作成できます。ここで紹介した方法では、技術的な実装が容易になるだけでなく、より複雑なドキュメント生成シナリオの可能性も広がります。
内部ツール、顧客向けアプリケーション、企業向けワークフローのいずれを作成する場合でも、このパターンは、ニーズに応じて拡張できる柔軟な基盤を提供します。
関連リソース
- トピックス:
- 開発者