mcpField
A
agent-tool-builder

agent-tool-builder

github.com/sickn33エージェントワークフロー48.7k962 回インストール今日更新
リポジトリ

agent-tool-builder について

AI エージェントが使うツールを設計するためのスキルです。ツールのスキーマや動作を定義する開発者向けに、JSON Schema、説明文、検証、エラー処理、MCP を扱い、安全性と認可の実装も重視します。

主な機能

  1. 01JSON Schema 設計ガイド
  2. 02ツール説明文の作成
  3. 03検証とエラー処理
  4. 04MCP ツール設計の考慮事項
  5. 05安全性と認可のテスト

活用シーン

  1. 01エージェントツールのスキーマ定義
  2. 02選択に役立つツール説明文の改善
  3. 03検証とエラー処理の計画
  4. 04MCP ツールの設計

MCP 対応

新しい標準である MCP に沿ったエージェントツール設計を扱います。MCP ツールの設計を解説しますが、MCP サーバーは提供しません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill agent-tool-builder

インストール後、Claude Code で/agent-tool-builderを入力して読み込まれたか確認します。

同梱ファイルreferences/detailed-guide.md

詳細

エージェントツールビルダー

ツールは、AI エージェントが外の世界とやり取りするための手段です。適切に設計されたツールがあれば、エージェントは正常に動作します。一方、設計が不十分だと、幻覚を起こしたり、気づかれないまま失敗したり、トークンを無駄に消費したりします。

このスキルでは、スキーマからエラー処理まで、ツールの設計を扱います。JSON Schema のベストプラクティス、LLM の実際に役立つ説明文の作成、検証、そして AI ツールの共通語になりつつある新興の MCP 標準について解説します。

説明文はツールの選択を導きますが、正しさ、認可、安全性を担保するのは実装です。どちらもテストが必要です。また、モデルが公開されたコードや結果を調べる場合もあります。

詳細ガイド

このスキルを実行する前に、詳細ガイドをお読みください。完全な手順と参考資料が記載されています。安全性、前提条件、検証に関する要件は必須として扱ってください。対象を絞って作業する場合は関連セクションを読み込み、最初から最後まで作業する場合はガイド全体をお読みください。

過去の Python SDK スケッチ

モックのみです。固定の天気情報は合成データであり、現在の予報ではありません。課金が発生する呼び出しを行う前に、SDK のベータ API とアカウントからアクセス可能なモデルを確認し、バージョンを固定してください。ツールには、実行と承認に関する制限付きポリシーが必要です。ランナーは外部への作用を認可しません。

import json
import anthropic
from anthropic import beta_tool

client = anthropic.Anthropic()

@beta_tool
def get_weather(location: str, unit: str = "fahrenheit") -> str:
    '''Get the current weather in a given location.

    Args:
        location: The city and state, e.g. San Francisco, CA
        unit: Temperature unit, either 'celsius' or 'fahrenheit'
    '''
    # Implementation
    return json.dumps({"temperature": "72°F", "conditions": "Sunny"})

@beta_tool
def search_web(query: str) -> str:
    '''Search the web for information.

    Args:
        query: The search query
    '''
    # Implementation
    return json.dumps({"results": [], "mock": True})

# Tool runner handles the loop
runner = client.beta.messages.tool_runner(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    tools=[get_weather, search_web],
    messages=[
        {"role": "user", "content": "What's the weather in Paris?"}
    ]
)

# Process each message
for message in runner:
    for block in message.content:
        if getattr(block, "type", None) == "text":
            print(block.text)

# Or just get final result
final = runner.until_done()

使用する場面

  • ユーザーがエージェントツールについて言及、またはそれを示唆している
  • ユーザーが関数呼び出しについて言及、またはそれを示唆している
  • ユーザーがツールスキーマについて言及、またはそれを示唆している
  • ユーザーがツール設計について言及、またはそれを示唆している
  • ユーザーが mcp server について言及、またはそれを示唆している
  • ユーザーが mcp tool について言及、またはそれを示唆している
  • ユーザーが tool use について言及、またはそれを示唆している
  • ユーザーがエージェント用ツールの構築について言及、またはそれを示唆している
  • ユーザーが関数の定義について言及、またはそれを示唆している
  • ユーザーが input_schema について言及、またはそれを示唆している
  • ユーザーが tool_use について言及、またはそれを示唆している
  • ユーザーが tool_result について言及、またはそれを示唆している

制限事項

  • 上記の説明にある対象範囲に、タスクが明確に該当する場合にのみ、このスキルを使用してください。
  • 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認を求めてください。

コメント