mcpField
T
tools-ui

tools-ui

github.com/inference-sh開発7891.0k 回インストール2 週間前に更新
リポジトリ

tools-ui について

tools-uiは、エージェント画面でツール呼び出しの状態や結果を表示するReactコンポーネントです。人による承認操作や、ツール名に応じたアイコン表示にも対応します。

主な機能

  1. 01ツール呼び出しの状態表示
  2. 02ツール結果の表示
  3. 03人による承認の要求
  4. 04ツール名に応じたアイコン設定

活用シーン

  1. 01エージェント画面で待機中・実行中の呼び出しを表示
  2. 02ツール実行の承認や拒否を受け付ける
  3. 03ツール出力やエラーを提示

インストール

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

$npx skills add https://github.com/inference-sh/skills --skill tools-ui

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

詳細

belt CLI スキルをインストール: npx skills add belt-sh/cli

ツール UI コンポーネント

ui.inference.sh のツールライフサイクルコンポーネントです。

ツール UI コンポーネント

クイックスタート

npx shadcn@latest add https://ui.inference.sh/r/tools.json

ツールの状態

状態説明
pendingツール呼び出しがリクエストされ、実行を待っています
runningツールを実行中です
approval実行前に人間の承認が必要です
successツールが正常に完了しました
errorツールの実行に失敗しました

コンポーネント

ツール呼び出しの表示
import { ToolCall } from "@/registry/blocks/tools/tool-call"

<ToolCall
  name="search_web"
  args={{ query: "latest AI news" }}
  status="running"
/>
ツールの結果
import { ToolResult } from "@/registry/blocks/tools/tool-result"

<ToolResult
  name="search_web"
  result={{ results: [...] }}
  status="success"
/>
ツールの承認
import { ToolApproval } from "@/registry/blocks/tools/tool-approval"

<ToolApproval
  name="send_email"
  args={{ to: "[email protected]", subject: "Hello" }}
  onApprove={() => executeTool()}
  onDeny={() => cancelTool()}
/>

完全な例

import { ToolCall, ToolResult, ToolApproval } from "@/registry/blocks/tools"

function ToolDisplay({ tool }) {
  if (tool.status === 'approval') {
    return (
      <ToolApproval
        name={tool.name}
        args={tool.args}
        onApprove={tool.approve}
        onDeny={tool.deny}
      />
    )
  }

  if (tool.result) {
    return (
      <ToolResult
        name={tool.name}
        result={tool.result}
        status={tool.status}
      />
    )
  }

  return (
    <ToolCall
      name={tool.name}
      args={tool.args}
      status={tool.status}
    />
  )
}

ツールカードのスタイル設定

<ToolCall
  name="read_file"
  args={{ path: "/src/index.ts" }}
  status="running"
  className="border-blue-500"
/>

ツールアイコン

ツール名に基づいて、アイコンが自動的に設定されます。

パターンアイコン
search*, find*検索
read*, get*ファイル
write*, create*鉛筆
delete*, remove*ゴミ箱
send*, email*メール
デフォルトレンチ

エージェントコンポーネントと併用する

エージェントコンポーネントがツールのライフサイクルを自動的に処理します。

import { Agent } from "@/registry/blocks/agent/agent"

<Agent
  proxyUrl="/api/inference/proxy"
  config={{
    core_app: { ref: 'openrouter/claude-sonnet-45@0fkg6xwb' },
    tools: [
      {
        name: 'search_web',
        description: 'Search the web',
        parameters: { query: { type: 'string' } },
        requiresApproval: true, // Enable approval flow
      },
    ],
  }}
/>

関連スキル

# Full agent component (recommended)
npx skills add inference-sh/skills@agent-ui

# Chat UI blocks
npx skills add inference-sh/skills@chat-ui

# Widgets for tool results
npx skills add inference-sh/skills@widgets-ui

ドキュメント

コンポーネントのドキュメント:ui.inference.sh/blocks/tools

コメント