注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

Pro-code エージェントのテンプレート

Pro-code エージェントを作成すると、エージェントのテンプレートからコードリポジトリが生成されます。テンプレートには、Ontology MCP (OMCP)、Palantir MCP、オントロジー SDK(OSDK)の簡略化された設定が含まれており、共通のセットアップはエージェントライブラリが提供します。このテンプレートにより、リポジトリではプラットフォームの基盤処理ではなく、エージェントのロジックに集中できます。

サポートされているテンプレート

次のエージェントフレームワーク用のテンプレートを利用できます。

  • Claude Agent SDK: Claude モデルを使用するエージェント向けの、Claude Agent SDK ↗ を基盤とした TypeScript テンプレートです。エージェントループは query 関数によって駆動され、ツールは MCP サーバーを通じて公開されます。
  • OpenAI Agents SDK: OpenAI モデルを使用するエージェント向けの、OpenAI Agents SDK ↗ を基盤とした TypeScript テンプレートです。エージェントループは Agent と run プリミティブによって駆動されます。
  • Google ADK: Google Gemini モデルを使用するエージェント向けの、Google Agent Development Kit (ADK) ↗ を基盤とした TypeScript テンプレートです。エージェントループは Agent と InMemoryRunner プリミティブによって駆動されます。Gemini へのアクセスは Foundry 言語モデルプロキシを経由するため、Google APIキーは不要です。

これらのテンプレートは、同じプロジェクト構造、引数スキーマ、デフォルトの MCP 設定、公開フローを共有します。異なるのは、エージェントループとカスタムツールの定義方法です。Pro-code エージェントを作成するときにテンプレートを選択します。特に記載がない限り、このセクションの例では Claude Agent SDK テンプレートを使用します。

プロジェクト構造

エージェントのテンプレートのコードリポジトリは、次の構造になっています。

Copied!
1 2 3 4 5 6 agent/ # エージェントのコード ├── index.ts # エージェントのエントリーポイントと引数スキーマ ├── systemPrompt.ts # システムプロンプト └── customTools.ts # カスタムツール utils/ # 共通のプラットフォームツール scripts/ # ビルドスクリプト
パス説明
agent/index.tsエージェントのエントリーポイントです。AgentArguments スキーマと、エージェントループを駆動する runAgent 関数を定義します。
agent/systemPrompt.tsモデルの動作を定義するシステムプロンプトです。
agent/customTools.tsエージェントが呼び出せるカスタムツールです。プロセス内の MCP サーバーを通じて公開されます。
utils/テンプレートが使用する共通のプラットフォームツールです。オントロジー SDK クライアントのヘルパーや公開コマンドが含まれます。
scripts/公開用にエージェントをパッケージ化するためのビルドスクリプトです。

Palantir MCP、Ontology MCP、Python Transforms MCP のデフォルトの MCP 設定は、エージェントライブラリが提供します。これらの設定は、以下で説明する MCP 設定関数で取得します。

独自の MCP 設定を追加するには、agent/mcps/custom.ts などの新しいファイルを agent/ 配下に作成し、MCP 設定関数と同じ方法でエージェントループに登録します。カスタム設定を独自のファイルに保持すると、リポジトリのアップグレード時の競合を回避できます。

Palantir MCP は、プラットフォームを操作するためのツールを提供します。トークン使用量を減らすために、Palantir MCP のツール検索を有効にすると、ツールが一度にすべて読み込まれるのではなく、必要に応じて検出されるようになります。

Pro-code エージェントをカスタマイズする

システムプロンプト

agent/systemPrompt.ts を編集して、Pro-code エージェントの動作を定義する指示を変更します。

エージェントの引数

Pro-code エージェントは、実行ごとに指定される引数を受け取ることができます。defineInputs を使用して、agent/index.ts の AgentArguments スキーマで引数を定義します。

Copied!
1 2 3 4 5 6 import { defineInputs, t } from "@palantir/agent-templates-bundle"; export const AgentArguments = defineInputs({ additionalAgentContext: t.string().optional(), // ここに独自の引数を追加します });

引数はエージェントの呼び出し時に自動的に受け付けられ、エージェントを Foundry に公開するときに入力データ型として登録されます。

カスタムツール

agent/customTools.ts を編集して、エージェントが呼び出せるツールを定義します。

Claude Agent SDK テンプレートでは、tool でツールを定義し、createSdkMcpServer で作成したプロセス内の MCP サーバーを通じて公開します。

Copied!
1 2 3 4 5 6 7 8 9 10 11 import { createSdkMcpServer, tool } from "@anthropic-ai/claude-agent-sdk"; import { z } from "zod"; tool( "my_tool", "Description of what this tool does", z.object({ param: z.string() }), async (params) => { return mcpSuccessResponse("result"); }, );

OpenAI Agents SDK テンプレートでは、@openai/agents の tool でツールを定義します。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import { tool } from "@openai/agents"; const myTool = tool({ name: "my_tool", description: "Description of what this tool does", parameters: { type: "object", properties: { param: { type: "string" } }, required: ["param"], }, strict: false, execute: async (input) => { return "result"; }, });

Google ADK テンプレートでは、@google/adk の FunctionTool でツールを定義します。

Copied!
1 2 3 4 5 6 7 8 9 10 11 import { FunctionTool } from "@google/adk"; import { z } from "zod"; const myTool = new FunctionTool({ name: "my_tool", description: "Description of what this tool does", parameters: z.object({ param: z.string() }), execute: async (input) => { return "result"; }, });

エージェントループ

agent/index.ts の runAgent 関数を変更して、エージェントに渡すプロンプト、モデル、MCP サーバー、またはツールを変更します。

Claude Agent SDK テンプレートでは、Ontology MCP の設定を取得し、それを MCP サーバーとして query 関数に渡して、エージェントのレスポンスストリームを処理します。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import { query } from "@anthropic-ai/claude-agent-sdk"; import { getOntologyMcpConfiguration } from "@palantir/agent-templates-bundle/mcp/anthropic"; export async function runAgent(args: AgentArgs) { const omcpConfig = await getOntologyMcpConfiguration(); const iter = query({ prompt: "...", options: { mcpServers: { ["ontology_mcp"]: omcpConfig, }, }, }); // エージェントのレスポンスストリームを処理します }

OpenAI Agents SDK テンプレートでは、Agent を構築し、その MCP サーバーに接続して、エージェントを実行し、結果ストリームを処理します。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 import { Agent, run, MCPServer } from "@openai/agents"; export async function runAgent(args: AgentArgs) { const mcpServers: MCPServer[] = [ // ここに MCP サーバーを追加します ]; for (const server of mcpServers) { await server.connect(); } try { const agent = new Agent({ name: "MyAgent", instructions: "...", mcpServers, tools: [myTool], model: "gpt-5.4", }); const result = await run(agent, "...", { stream: true }); // エージェントのレスポンスストリームを処理します await result.completed; } finally { for (const server of mcpServers) { await server.close(); } } }

Google ADK テンプレートでは、Agent を構築し、InMemoryRunner で実行して、イベントストリームを処理します。テンプレートには、テンプレートで管理される foundryGemini.ts ファイルに定義された FoundryGemini モデルラッパーが含まれています。このラッパーにより、Gemini へのアクセスは Foundry 言語モデルプロキシを経由するため、Google APIキーは不要です。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 import { Agent, InMemoryRunner, MCPToolset, stringifyContent } from "@google/adk"; import { FoundryGemini } from "./foundryGemini"; export async function runAgent(args: AgentArgs) { const mcpToolsets: MCPToolset[] = [ // ここに MCP ツールセットを追加します ]; try { const agent = new Agent({ name: "MyAgent", instruction: "...", tools: [...mcpToolsets], model: new FoundryGemini({ model: "gemini-2.5-flash" }), }); const runner = new InMemoryRunner({ agent }); for await (const event of runner.runEphemeral({ userId: "user", newMessage: { role: "user", parts: [{ text: "..." }] }, })) { if (event.content) { console.log(stringifyContent(event)); } } } finally { for (const toolset of mcpToolsets) { await toolset.close(); } } }

Pro-code エージェントにオントロジー SDK と OMCP を追加する

テンプレートを使用すると、エージェントのスコープ付き権限を通じて、クライアント資格情報なしで、Pro-code エージェントからオントロジー SDK と Ontology MCP の両方を利用できます。

オントロジー SDK

Pro-code エージェントがオントロジーリソースにアクセスできるようにするには、エージェントにオントロジー SDK を追加します。Code Workspaces で SDK を作成するときと同様に、含めるオブジェクトタイプ、アクションタイプ、クエリ関数を選択してから、SDK を生成します。詳しい手順については、新しいオントロジー SDK を作成するを参照してください。

オントロジーのデータを直接読み書きするには、選択したオントロジーに紐付くオントロジー SDK クライアントを構築します。オントロジーのリソース識別子(RID)は、生成された SDK を通じて公開されます。

Copied!
1 2 3 4 import { getOntologySdkClient } from "@palantir/agent-templates-bundle"; import { $ontologyRid } from "@ontology/sdk"; const client = await getOntologySdkClient($ontologyRid);

Pro-code エージェントでのオントロジー SDK の使用方法については、オントロジー SDK のドキュメントと TypeScript オントロジー SDK リファレンスを参照してください。

Ontology MCP

Pro-code エージェントにオントロジー SDK を追加すると、同じ SDK リソースに基づいて Ontology MCP が作成されます。Ontology MCP は、SDK 内のオブジェクトタイプ、アクションタイプ、クエリ関数を、エージェントのモデルが呼び出せる MCP ツールとして公開します。

Ontology MCP を使用するには、以下の MCP 設定関数で説明するように、getOntologyMcpConfiguration 関数で設定を取得し、Pro-code エージェントの MCP サーバーに渡します。Ontology MCP が公開するツールの詳細については、Ontology MCP のドキュメントを参照してください。

MCP 設定関数

エージェントライブラリは、次の関数を通じてデフォルトの MCP サーバー設定を提供します。

関数接続先説明
getOntologyMcpConfigurationOntology MCPオントロジー SDK のオブジェクトタイプ、アクションタイプ、クエリ関数を、モデルが呼び出せるツールとして公開します。オントロジー SDKの説明に従って、先に SDK を追加する必要があります。
getPalantirMcpConfigurationPalantir MCPPalantir プラットフォームを操作するための幅広いツールを提供します。
getPythonTransformsMcpConfigurationPython Transforms MCPトランスフォームのプレビューや検索など、Foundry の Python トランスフォームを操作するためのツールを提供します。

各関数は async で、実行時に接続情報を解決します。URL、コマンド、認可情報はスコープ付き権限を通じて解決されるため、クライアントID、シークレット、Foundry トークンは不要です。

これらの関数はフレームワーク固有であり、それぞれがエージェントフレームワークで期待される MCP サーバーの型を返します。テンプレートに対応するパッケージパスからインポートします。

フレームワークインポートパス戻り値の型
Claude Agent SDK@palantir/agent-templates-bundle/mcp/anthropicMcpHttpServerConfig または McpStdioServerConfig
OpenAI Agents SDK@palantir/agent-templates-bundle/mcp/openaiMCPServerStreamableHttp または MCPServerStdio
Google ADK@palantir/agent-templates-bundle/mcp/googleMCPToolset

各関数が非同期であることに注意してください。結果をエージェントループに登録する前に、await で待機してください。

Claude Agent SDK テンプレートでは、解決済みの設定を、query に渡す mcpServers マップに登録します。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import { getOntologyMcpConfiguration, getPalantirMcpConfiguration } from "@palantir/agent-templates-bundle/mcp/anthropic"; const [omcpConfig, palantirConfig] = await Promise.all([ getOntologyMcpConfiguration(), getPalantirMcpConfiguration(), ]); const iter = query({ prompt: "...", options: { mcpServers: { ["ontology_mcp"]: omcpConfig, ["palantir_mcp"]: palantirConfig, }, }, });

OpenAI Agents SDK テンプレートでは、解決済みのサーバーを、new Agent に渡す mcpServers 配列にまとめます。

Copied!
1 2 3 4 5 6 7 8 import { getOntologyMcpConfiguration, getPalantirMcpConfiguration } from "@palantir/agent-templates-bundle/mcp/openai"; import { MCPServer } from "@openai/agents"; const [ontologyMcp, palantirMcp] = await Promise.all([ getOntologyMcpConfiguration(), getPalantirMcpConfiguration(), ]); const mcpServers: MCPServer[] = [ontologyMcp, palantirMcp];

Google ADK テンプレートでは、解決済みの各 MCPToolset をエージェントの tools 配列に追加します。

Copied!
1 2 3 4 5 6 7 8 import { getOntologyMcpConfiguration, getPalantirMcpConfiguration } from "@palantir/agent-templates-bundle/mcp/google"; import { MCPToolset } from "@google/adk"; const [ontologyMcp, palantirMcp] = await Promise.all([ getOntologyMcpConfiguration(), getPalantirMcpConfiguration(), ]); const mcpToolsets: MCPToolset[] = [ontologyMcp, palantirMcp];

Palantir MCP と Python Transforms MCP には、Foundry のフロントドアホスト(FOUNDRY_EXTERNAL_HOST)が必要です。このホストは、実行時にエージェント自身の資格情報を使用して Control Panel から自動的に解決されます。そのため、Marketplace を通じてエージェントが別のエンロールメントにインストールされた場合でも、正しいホストが使用されます。ホストを解決できない場合、設定はリポジトリ生成時に記録されたホストにフォールバックします。フォールバック先を上書きするには、getPalantirMcpConfiguration または getPythonTransformsMcpConfiguration に fallbackHost オプションを渡します。

次のステップ