ClaudeをVPSで動かすAIエージェント構築ガイド
ClaudeのMessages APIとtool useを活用して、VPS上で動作する自律型AIエージェントを構築する方法を解説します。モデルは外部API、実行環境は自身のサーバーという分離構造により、高度な推論とセキュアなツール実行を両立させる設計手法を具体的に紹介します。
Claudeによるエージェント構築の意味
Claudeでエージェントを構築するとは、Claudeを推論コアとして使用し、ループ、ツール、およびデータを自身のサーバー上で管理することを意味します。Claudeが次にすべきことを決定し、VPSがそれを実行します。タスクと現在の状態をClaudeに送信すると、Claudeは回答またはツールの使用リクエストを返します。コードがツールを実行して結果を返すと、ジョブが完了するまでループが継続します。インテリジェンスはインターネット経由で呼び出すサービスであり、それ以外のすべてはユーザーの管理下にあります。
この分離が利点です。モデルを運用することなく最先端の推論を利用でき、ツールは所有するハードウェア上で実行されるため、エージェントがアクセスできる範囲を完全に制御できます。すでに最初のClaudeプログラムを構築済みの場合は、VPSでの最初のClaudeアプリ構築ガイドが、本ガイドの基礎となる内容を解説しています。
Claudeは脳である:Messages API
Claudeへのすべての呼び出しは、1つのエンドポイントであるMessages APIを経由します。会話の履歴とエージェントが使用可能なツールのリストを送信すると、Claudeは次のメッセージを返します。そのメッセージは、最終的な回答か、ツール呼び出しのリクエストのいずれかです。自作する場合、独立した「エージェントAPI」は存在しません。ツール使用は単一のエンドポイントの機能であり、その周囲のループはユーザーが実行する必要があります。
Claudeは呼び出し間でステートレスです。つまり、Claude自身は何も記憶しません。各リクエストには会話全体が含まれます。コードが履歴を保持して毎ターン送信するため、長いセッションでは各ターンに前回の数倍のトークンコストがかかる理由となります。これは制限ではなく設計上の選択です。ステートがユーザーのサーバーにあるため、Claudeに見せる内容を正確に決定でき、タスクに関する情報はユーザーが制御できない場所には保存されません。
ツール使用はエージェントループである
Claudeを用いたエージェントループの説明は簡単です。ツールを含むリクエストを送信します。Claudeがタスクを読み取り、実行が必要な場合は、ツール名と入力値を含むツール使用リクエストを返します。コードがそのツールを実行し、結果を次のリクエストでClaudeに送り返します。Claudeは結果を読み取り、別のツールを要求するか、最終的な回答を書き込みます。ツールの要求が止まれば、タスクは完了です。
このループは数行のコードで手動で記述でき、多くの人がその方法を採用しています。理由は、構造が単純で制御しやすいためです。公式SDKにはループを駆動するツールランナーも用意されています。ツール関数を提供すれば、SDKがClaudeの呼び出し、ツールの実行、結果のフィードバックのやり取りを処理します。どちらの方法でも構造は同じであり、ランナーはループの記述を省略するために使用します。
3つの構築方法とVPSへの適合性
Claudeエージェントの構築には3つの方法があり、実行する仕組みの範囲が異なります。
1つ目は、独自のコードから独自のツールを用いてClaude APIを呼び出す方法です。ループを自分で書くか、SDKのツールランナーを使用し、すべてをVPS上でホストします。これは一般的な選択肢です。ツール、データ、セキュリティを完全に制御でき、サーバー上の通常のプログラムとして動作するためです。本ガイドの大部分はこの方法を前提としています。
2つ目は、Claude Agent SDKを使用する方法です。これは、構築用のライブラリとしてパッケージ化されたコーディングエージェント「Claude Code」です。ファイルの読み書き、シェルコマンドの実行、検索のための完全なエージェントループと組み込みツールが提供されているため、一から組み立てる必要がありません。これも自身のサーバーで動作するため、自前で仕組みを構築せずに高度なファイル・シェル操作エージェントが必要な場合にVPSへの適合性が非常に高いです。ファイル読み取りやシェル実行を行うエージェントを無人で動作させるには、サーバー上でClaude Codeを安全に実行する方法で解説されている権限システム、サンドボックス、および隔離オプションによる保護が必要です。
3つ目は、Managed Agentsです。Anthropicがループを実行し、エージェントのツールが実行されるサンドボックスをホストします。これは運用負荷の低いオプションです。操作するものは大幅に減りますが、エージェントのワークスペースはVPSではなくAnthropicのインフラ上で動作します。運用作業を最小限に抑えたい場合や、ツールを自身のマシンで実行する必要がない場合に適しています。他の2つの方法では、サーバーがエージェントのホームとなり、本ガイドの残りの内容はそれについて解説します。
MCPによるツールの接続
どの方法を選択しても、エージェントを実際のシステムに接続する必要があります。そのための整然とした方法がModel Context Protocol (MCP) です。MCPは、ツールやデータをエージェントに公開するためのオープン標準です。サービスごとに統合コードを手書きする代わりに、すでに機能をツールとして提供しているMCPサーバーをClaudeに向けます。MCPサーバーは、必要な権限のみを持つ小さなサービスとして同じVPS上で実行できます。詳細はVPSでのMCPサーバーの実行で解説しています。
モデルの選択
Claudeには複数のモデルがあり、選択は能力、速度、コストのトレードオフになります。執筆時点での主な選択肢は以下の通りです。高度な推論や長時間のエージェント実行に適した標準的なモデル、Claude Opus 4.8 (claude-opus-4-8)。多くのタスクでOpusに近い性能を維持しつつ、より安価で高速なバランスの取れたオプション、Claude Sonnet 5 (claude-sonnet-5)。シンプルで大量のステップ処理に適した、最も高速で安価なモデル、Claude Haiku 4.5 (claude-haiku-4-5)。さらに、最も要求の厳しい作業には最高性能のClaude Fable 5 (claude-fable-5) があります。コード内では、日付を含まない正確なモデル識別子を使用してください。
実用的なパターンは、これらを組み合わせることです。定型的なツール呼び出しには安価なモデルを、重要な決定には強力なモデルを使用します。リクエスト内のモデル名は文字列であるため、切り替えは1行の変更で済みます。まずは標準的なモデルから始め、品質よりも速度やコストが重要な箇所で、モデルのグレードを下げて調整してください。
VPS上で強化されたサービスとして実行する
エージェントは、稼働し続けて初めて有用になり、隔離されて初めて安全になります。VPSでは、ターミナルから手動で起動したプログラムとしてではなく、強化されたシステムサービスとして実行することで、これら両方を実現できます。サービスとして実行すると、起動時に開始され、クラッシュした場合は再起動し、journalにログを記録します。また、権限を絞ったユーザーとして実行することで、バグや不正な命令による影響範囲を限定できます。
最も重要なルールは、Claude APIキーをサーバー側に保持することです。キーはすべての呼び出しの支払いと認証を行うため、エージェントのユーザーのみが読み取り可能なファイルに保存し、環境変数としてサービスに読み込ませる必要があります。コード内やリポジトリ、ブラウザからアクセス可能な場所には決して置かないでください。エージェント用の完全な強化サービスユニットの例は以下の通りです。
次に、サーバー自体の設定を完了させます。VPSのSSH強化に従い、SSHは鍵認証のみに制限し、管理用アカウントをロックダウンしてください。構築中にインタラクティブセッションからエージェントを操作したい場合は、tmuxを使用したVPSでのClaude Codeの実行が適しています。また、特定のモデルに依存しない概念的な基礎を知りたい場合は、VPSで独自のAIエージェントを構築するという姉妹ガイドが役立ちます。
ターミナルでのコーディングアシスタントが必要な場合は、VPSでのコーディングAIエージェントの実行でAiderとGooseについて解説しています。
FAQ
エージェント構築にはどのClaudeモデルを使用すべきですか?
まずは標準的なClaude Opus 4.8 (claude-opus-4-8) から始め、そこから調整してください。ほとんどの作業には、より安価で高速なClaude Sonnet 5 (claude-sonnet-5) が適しています。単純な大量処理にはClaude Haiku 4.5 (claude-haiku-4-5) が最適であり、最も困難なタスクには最高性能のClaude Fable 5 (claude-fable-5) が適しています。切り替えは1行の変更で済むため、定型的なステップには安価なモデルを、重要な決定には強力なモデルを使用するのが一般的なパターンです。
エージェント全体を自分のVPSで実行しますか、それともAnthropicが実行しますか?
アプローチによります。Claude APIに対して独自のループを記述するか、Claude Agent SDKを使用する場合、エージェントは完全に自身のVPSで動作し、モデルの呼び出しのみがAnthropicへ送信されます。Managed Agentsを使用する場合、Anthropicがループを実行し、ツールが実行されるサンドボックスをホストするため、サーバー上の構成要素は少なくなります。自身のマシンで実行するエージェントには、最初の2つの方法を使用してください。
Claude APIとClaude Agent SDKの違いは何ですか?
Claude APIは生のMessagesエンドポイントです。会話とツールを送信し、その周囲にエージェントループを記述するか、SDKのツールランナーを使用して駆動します。Claude Agent SDKは、構築用にパッケージ化されたClaude Codeという高レベルなライブラリであり、完全なループと組み込みのファイル、シェル、検索ツールを提供します。すべてを自分で定義したい場合はAPIを、仕組みを組み立てずに機能的なエージェントが必要な場合はAgent SDKを使用してください。
サーバー上でClaude APIキーを安全に保つにはどうすればよいですか?
サーバー側に保持し、コードには含めないでください。エージェントが実行されるアカウントのみが読み取れるファイルに保存し、環境変数としてサービスに読み込ませ、リポジトリへのコミットやブラウザへの露出は絶対に行わないでください。すべてのリクエストはサーバーから送信されるため、ユーザーのデバイスにキーを渡す必要がなく、クライアントアプリに組み込まれたエージェントよりもセキュリティを確保しやすくなります。
Claudeでエージェントを構築するために、モデルをセルフホストする必要がありますか?
いいえ。Claudeの場合、モデルはAPI経由で呼び出すホスト型サービスであるため、GPUで実行するものは何もありません。VPSはエージェントループ、ツール、およびデータを実行し、推論はAnthropic側で行われます。これにより、控えめなスペックのサーバーでも高度なエージェントを動作させることが可能です。完全にローカルなモデルが必要な場合は、独自のAIエージェント構築に関するガイドで解説されているセルフホスト方式を採用してください。