mcpField
T
toolsmelt

toolsmelt

ローカル
github.com開発ツール186 日前に更新

toolsmelt について

toolsmeltは、API定義、ブラウザー記録、アプリ、SQLデータソースからAIエージェント向けのツールを作成するCLIとライブハブです。MCPツールの設計、検証、接続、公開を行う開発者向けで、生成物は通常のPythonコードとして扱えます。

主な機能

  1. 01OpenAPI、Postman、cURL、SQLからツールを作成
  2. 02SOAP、gRPC、Web通信記録の検査
  3. 03許可されたAndroid・JavaScriptアプリの解析
  4. 04Pythonサーバーの設計、検証、生成
  5. 05永続化するハブ経由でプランを接続
  6. 06OSキーチェーンによる認証情報管理

活用シーン

  1. 01選択したAPI操作をエージェントツールとして公開
  2. 02ログイン済みWebサイトのツールを接続
  3. 03所有するアプリのAPIエンドポイントを調査
  4. 04プランから単独のMCPサーバーを生成

MCP 対応

toolsmeltは検査、設計、検証、生成、ハブ管理のツールをMCPクライアントに公開します。ライブハブでプランを接続し、エージェントからそのツールを利用できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"sepehr071-toolsmelt": {
"command": "uvx",
"args": [
"toolsmelt"
]
}
}
}
起動コマンドuvx toolsmelt

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypitoolsmelt0.8.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

toolsmelt

toolsmelt

以前は mcpsmith でした。uvx mcpsmith と mcpsmith が生成したサーバーは引き続き動作します。~/.mcpsmith に保存した接続、MCPSMITH_* 変数、キーチェーンのエントリーも引き続き読み込まれます。uvx toolsmelt setup を一度実行して、エージェントのエントリーを切り替えてください。

OpenAPI ファイル、Postman コレクション、ログインが必要なウェブサイト、自分が所有するアプリ、または SQL データベースを、AI エージェント向けの厳選されたツールに変換します。新しい形式はパッケージとして追加できます(docs/extending.md)。LLM がツールを設計し、公開したい場合は、自分で所有できる通常の Python コードとして取得できます。

uvx toolsmelt setup

ツールに変換できるもの

ソースコマンド
OpenAPI / Swagger ファイルまたは URLtoolsmelt inspect <file-or-url>
Postman コレクション(v2.0/v2.1 のエクスポート)toolsmelt inspect shop.postman_collection.json
cURL コマンド(DevTools の「Copy as cURL」)toolsmelt inspect requests.txt
SQL データベース(SQLite、PostgreSQL、MySQL、SQLAlchemy が読み込めるもの)pip install "toolsmelt[sql]" を実行し、その後 toolsmelt inspect sqlite:///shop.db
SOAP サービス(WSDL 1.1)または XML APItoolsmelt inspect https://example.com/service.asmx?WSDL
gRPC サービス(サーバーリフレクション)pip install "toolsmelt[grpc]" を実行し、その後 toolsmelt inspect grpc://localhost:50051
ウェブサイトまたはログイン済みのダッシュボードtoolsmelt browser を実行し、エージェントに記録させます(toolsmelt capture <url> はハブを使わず HAR を記録します)
Android アプリ(自分が所有する APK)toolsmelt app-android app.apk --base-url https://api.example.com
Electron / JavaScript アプリtoolsmelt app-js <dir|app.asar|file> --base-url https://api.example.com
デスクトッププログラムtoolsmelt app-desktop(mitmproxy の手順を表示)、その後 toolsmelt app-desktop capture.har --host api.example.com

アプリとプログラムについては、自分が所有するソフトウェア、または分析を許可されているソフトウェアのみを対象としてください。

toolsmelt のコマンド一覧

toolsmelt --help:コマンド一覧。

クイックスタート:ログイン済みのウェブサイト

uvx toolsmelt setup                  # once: registers toolsmelt + Chrome DevTools MCP with your agents
uvx toolsmelt browser                # opens the shared Chrome; log in to the site yourself
# restart your agent, then ask it:
#   "Record example.com in the shared Chrome and connect it as tools."
# the extract-api skill runs the rest: record, inspect, design, validate, connect

パスワードと 2FA コードがエージェントに渡ることはありません。詳しくはライブハブをご覧ください。

実際のソフトウェアで実証済み

  • Tusky 29.0(オープンソースの Android クライアント、Retrofit):toolsmelt app-android は、すべての HTTP メソッドを解決した 113 個のエンドポイントを検出しました(GET 48 個、POST 43 個、DELETE 11 個、PUT 8 個、PATCH 3 個)。未解決の注記はありませんでした。難読化されたアノテーション名は推測ではなく、アプリ独自のリクエストビルダークラスから解決されました。
  • GitHub Desktop 3.6.7(Electron):toolsmelt app-js は、すべてのメソッドを解決した 33 個のエンドポイントを検出しました。33 個すべてについて、アプリのソースマップを通じて元の TypeScript の行まで追跡できました。
  • hn.algolia.com(ログイン不要の公開 API):共有 Chrome で記録しました。厳選された 2 個のツールをハブ経由で接続し、ライブ結果を返しました。ハブを再起動した後も、ツールは引き続き利用できました。
  • 社内の勤怠ダッシュボード(ASP.NET、Cookie ログイン):ログイン中に記録しました。2 個のツールが所有者の質問に回答しました。ログアウト後は、ツールがセッション期限切れを明確に示すエラーを返します。

数値は、2026-10-21 に toolsmelt 0.4.0 で実行した結果です。最初の 2 つは、対象のアプリで toolsmelt app-android と toolsmelt app-js を実行して再現できます。

Electron アプリ独自のコードを読み取る toolsmelt app-js

Electron アプリ独自のコードを読み取る toolsmelt app-js。

## コーディングエージェント向け

API キーは不要です。設計を行うのはコーディングエージェントです。

  • スキル(プレーンな Markdown で、どのエージェントでも読めます):skills/build-mcp-server(ワークフロー全体)、skills/extract-api(ログインが必要なサイトをライブツールに変換)、skills/design-mcp-tools(設計チェックリスト)。AGENTS.md から Codex、Cursor、Gemini CLI を参照できます。
  • MCP ツール(パスは絶対パス):smith_guide、smith_inspect、smith_app_android、smith_app_js、smith_app_desktop、smith_probe、smith_draft、smith_validate、smith_generate、smith_check、smith_install、ハブ用の smith_record_start、smith_record_stop、smith_connect、smith_disconnect、smith_connections、smith_login、smith_tools、smith_call。
  • MCP 設定(任意のクライアント向け):
    {"mcpServers": {"toolsmelt": {"command": "uvx", "args": ["toolsmelt", "mcp"]}}}
    
  • Claude Code プラグイン(スキル + MCP サーバー):/plugin marketplace add sepehr071/toolsmelt を実行し、続いて /plugin install toolsmelt@toolsmelt を実行します。

MCP クライアントは、シェルのプロキシ変数をサーバーに引き継がずに起動します。プロキシ環境では、"env": {"HTTPS_PROXY": "http://127.0.0.1:8080"} を追加すると、smith_inspect が仕様を取得できるようになります。

ライブハブ

プロジェクトを省略して、プランを接続すると、そのツールがすぐにエージェント上に表示されます。toolsmelt MCP サーバーがハブです。接続は ~/.toolsmelt(TOOLSMELT_HOME)に保存され、再起動後に再読み込みされます。接続は個人用(1 台のマシン、1 人のユーザー)です。公開には引き続き generate を使用します。

エージェントから、smith_inspect を実行し、plan.yaml を編集して、smith_validate を実行した後、smith_connect(workdir, name) を呼び出して新しいツールを使用します。クライアントで起動後に追加されたツールが表示されない場合は、smith_tools(connection) と smith_call(connection, tool, args) を使用します(読み取り専用ツールのみ)。smith_connections で一覧を確認し、smith_disconnect(name) で削除できます(CLI:toolsmelt connections)。

ログインが必要なサイト

公開 API のないダッシュボードやポータルでは、サイトを利用している間に、エージェントがサイト独自の呼び出しを記録します。extract-api スキルが一連のフロー全体を実行します。

toolsmelt browser                                                      # shared Chrome on port 9222 (--port N, --no-proxy)
npx [email protected] --browser-url=http://127.0.0.1:9222    # point Chrome DevTools MCP at it
  1. その Chrome ウィンドウで自分でログインします(パスワードや 2FA がエージェントに渡ることはありません)。
  2. エージェントが smith_record_start(name, hosts) を呼び出します。各機能を異なる入力で 2 回ずつ操作した後、smith_record_stop(name) を呼び出すと、Cookie とトークンを除去した HAR が書き出されます。
  3. プランを調査、設計して、auth: {type: browser, login_path: /login} で接続します。呼び出しでは Chrome セッションが再利用されます。セッションの有効期限が切れると、ツールから再ログインするよう案内されます。

エージェントは DevTools の get_network_request を使用してはいけません。Cookie を含むリクエストヘッダーが出力されるためです。generate はブラウザー認証のプランを拒否します。これらのプランはお使いの Chrome でのみ動作するためです。公開するには、トークン認証または API キー認証に切り替えてください。

ハブを使わないウェブサイト
pip install "toolsmelt[capture]" && playwright install chromium
toolsmelt capture https://example.com -o site.har --host example.com   # browse, then close the tab
toolsmelt inspect site.har --host example.com
toolsmelt draft --name example-mcp
# redesign plan.yaml, then validate, generate, check as under Export & publish

記録中に、ツール化したい操作をそれぞれ行います。検索、詳細ページを開く、ページ送り、フィルター適用などです。クリックしなかった操作はキャプチャに含まれません。--host(複数回指定可能)を使うと、指定したホストのみが保持されます。DevTools の「Save all as HAR」エクスポートを capture の代わりに使用できます。記録用ブラウザーでは、設定されている場合 HTTPS_PROXY が使用されます。

HAR には、Cookie や個人データを含め、ブラウザーが送受信したすべての情報が含まれます。Git に追加せず、inspect の実行後に削除してください。inspect は保持するデータをサニタイズします。API キーやトークンは値を削除した auth 環境変数に変換され、その他の機密情報と思われるヘッダーやクエリパラメーターは削除されます。また、例やテストフィクスチャでは、メールアドレス、電話番号、JWT、および機密情報や個人情報のフィールド名に対応する値がマスキングされます。この処理はパターンベースのため、生成したサーバーを公開する前に tests/fixtures/ を確認してください。キーがサイトからすべての訪問者に送信される公開キー(検索キーや地図キーなど)であれば、ツールの fixed 値に指定できます。

アプリとプログラム

自分が所有しているか、分析を許可されているソフトウェアのみが対象です。

  • デスクトッププログラム:toolsmelt app-desktop は、独自の mitmproxy でトラフィックを記録する手順(mitmdump --set hardump=capture.har)を表示します。toolsmelt app-desktop capture.har --host api.example.com は記録結果をインポートします。toolsmelt が代わりに実行することはありません。また、証明書ピンニングを行うプログラムは対象外です。
  • Android アプリ:toolsmelt app-android app.apk --base-url https://api.example.com は、アプリの Retrofit インターフェースを読み取ります。デコンパイラーが必要です。PATH 上にある無料の jadx CLI(scoop install extras/jadx、brew install jadx)、または REA の JADX jar(REA_JADX_MCP_JAR)を使用します。--class を指定しない場合、候補クラスが一覧表示されます。デコンパイルの前に APK を約 1 秒でトリアージします(zip の一覧と dex バイトを確認)。Flutter または React Native のアプリ、あるいは Retrofit を使わないアプリの場合は、次の手順がすぐに表示されます(トラフィックを記録するか、React Native の JS バンドルに対して app-js を実行します)。既知のリクエスト署名 SDK がある場合は、使用するサインインプロバイダーが示されます。
  • リクエストに独自の署名を行うアプリ:プランでは auth: {type: signin, provider: xiaomi} を使用します(Mi Home クラウドが最初のプロバイダーです)。ユーザーはサーバーの <prefix>_login ツール(ハブでは smith_login)からのリンクを通じて、プロバイダー自身のページでサインインします。セッションは OS のキーチェーンに保存されます。ログインツールを再度呼び出すと、アカウント名とデータの保存場所が表示されるため、アカウントや地域の間違いを検出できます。
  • Electron/JavaScript アプリ:toolsmelt app-js <dir|app.asar|file> --base-url ... は、同梱されたコード内の呼び出しを読み取ります。

app-android も app-js もアプリを実行しません。エンドポイントは、toolsmelt probe がユーザーの認証情報を使って GET のものを実際に呼び出すまで、未検証のままです(残りは、同意した場合に限り --writes を指定して呼び出します)。読み取れないメソッドは空のままになり、validate によって拒否されます。

セットアップ

uvx toolsmelt setup は toolsmelt と toolsmelt-chrome(Chrome DevTools)の MCP サーバーを登録し、検出した各コーディングエージェント(Claude Code、Codex、Cursor、Gemini CLI)にスキルをコピーします。オプション:

  • --dry-run はプランを表示し、何も書き込みません。
  • --agents claude,codex は対象を指定したエージェントに限定します(デフォルトは検出されたエージェントです)。
  • --rea は REA(rea-agents)もインストールします。デフォルトでは無効です。REA の MCP サーバーは各エージェントに約 200 個のツールを追加しますが、toolsmelt のアプリパスに必要なのは jadx などの通常のツールだけです。
  • --no-skills はスキルをスキップし、--yes は確認をスキップします。
  • --remove はセットアップによる変更を元に戻します。自分で作成したエントリーやスキルフォルダーには触れません。REA はインストールされたままです(以前からインストールされていた可能性があるため)。削除するコマンドを表示します。

セットアップが設定ファイルを初めて変更する前に、ファイルを *.toolsmelt.bak にコピーします。バックアップは一度だけ作成され、後続の実行では更新されません。その後、エージェントを再起動してください。Chrome DevTools を使う前に toolsmelt browser を実行してください。サーバーが接続する共有 Chrome が起動します。

Claude Code プラグインのユーザーは、プラグインからすでに両方のサーバーを利用できるため、setup は必要ありません。

toolsmelt install <project> は、generate で作成したサーバーを同じエージェントに同じ方法で登録します。プロジェクトフォルダー(uv run --directory)を実行するか、--pypi を指定してリリース済みパッケージを実行します。プラン名と同じ名前のエントリーだけを変更し、その名前のエントリーが別のものを実行する場合は --force がない限り拒否します。--remove で登録を解除できます。

toolsmelt setup --dry-run plan

toolsmelt setup --dry-run は、変更内容を表示し、何も書き込みません。

変換

プランでは、引数の transform、output.transforms(date->unix、date->unix_end、unix->date、unix->datetime、minutes->hh:mm、toman->rial、rial->toman、int->str、およびオプションのジャラリー暦変換)、さらに timezone(IANA 名。空の場合はシステムのローカルタイムゾーン)を使って形式を変換します。

シークレット

認証情報はチャットではなく、ユーザー自身が入力します。toolsmelt secret set <connection> <ENV_NAME> を実行すると、入力内容が表示されないプロンプトが表示され、値が OS のキーチェーンに保存されます(--once を指定すると、ワンタイムコードなどの値を一度だけ使用し、その後は破棄します。list と delete も使用できます)。

エクスポートと公開

プランをハブへの接続ではなく、単独で動作するサーバープロジェクトに変換するには、次のようにします。

uvx toolsmelt inspect https://petstore3.swagger.io/api/v3/openapi.json   # .toolsmelt/source.json + digest.md
uvx toolsmelt draft --name petstore-mcp                                  # heuristic .toolsmelt/plan.yaml, no LLM
# redesign plan.yaml (your coding agent does this, or use `design`, see below)
uvx toolsmelt validate
uvx toolsmelt generate -o petstore-mcp
cd petstore-mcp && uv run pytest
uvx toolsmelt check .                                                    # call every tool live
uvx toolsmelt install .                                                  # register it with your agents

ローカルファイルから読み込んだ仕様では、サーバー URL が相対 URL になっている場合があります。その場合、validate の実行時に、プランで絶対 URL の base_url を設定するよう求められます。

toolsmelt から LLM を呼び出す
uvx toolsmelt design --goal "find products, compare prices, read reviews" --provider anthropic

プロバイダー:anthropic(ANTHROPIC_API_KEY)、openai(OPENAI_API_KEY)、openrouter(OPENROUTER_API_KEY)、ollama(キー不要)。--model でモデルを選択します。TOOLSMELT_MODEL と TOOLSMELT_BASE_URL で、モデルとエンドポイントを上書きできます。結果は通常の plan.yaml です。generate を実行する前に内容を確認してください。

仕組み
openapi.yaml | site.har --inspect--> source.json + digest.md
                        --draft----> plan.yaml     (heuristic starting point)
   your agent edits plan.yaml, or `design` ------> plan.yaml
                        --validate-> issues
                        --generate-> <name>/       (server project)
                        --check----> live report per tool

Source は API が提供する内容、Plan は構築するサーバーです。コード生成では、プランと、テスト用フィクスチャのために記録されたレスポンスを読み込みます。以下は、簡略化したプランです。

name: shop-mcp
description: Search products and compare prices on Example Shop.
prefix: shop
base_url: https://example.com/api
env_prefix: SHOP_MCP
instructions: Search first, then fetch details with the id. Prices are in toman.
tools:
  - name: shop_search
    title: Search products
    description: Returns matching products with price and stock. Use shop_product for full details.
    endpoint: GET /v2/search
    args:
      - {name: query, type: string, required: true, description: "Search words, e.g. 'laptop'", to: query.q}
      - {name: max_price, type: integer, description: "Upper price limit in toman, e.g. 20000000", to: query.price_max}
      - {name: sort, description: "Result order.", map: {cheapest: price_asc, newest: date_desc}, default: cheapest, to: query.o}
    output:
      root: data.products
      fields: {id: id, title: title_fa, price: price.selling_price, in_stock: stock.available}
      max_items: 10
    example: {query: laptop}

引数のターゲット(to:):path.<n>、query.<n>、header.<n>、cookie.<n>、body、body.<a.b.c>。出力パスではドットを使い、数値でリストのインデックスを指定します(images.0.url)。[] はリスト内の各要素に適用します(tags[].name)。map を使うと、モデルが扱う分かりやすい値を、API が求める難解な値に変換できます。

ツールではページをたどることも、呼び出しを連鎖させることもできます(各ツールにつき、どちらか一方を指定できます)。

    # in one tool: read up to 3 pages and join the lists at output.root
    paginate: {style: page, param: query.page, max_pages: 3}   # or offset, cursor, next_url
    # in another: search, then fetch the details of the first 5 hits
    steps:
      - {endpoint: getProduct, for_each: data.products, max_items: 5, args: {path.id: $item.id}}

body_encoding(json、form、multipart)で、body.* の値の送信方法を指定します。プランには schema_version: 1 が含まれます。不明なキーはエラーになります(readonly: のようなタイプミスは無視されず、エラーになります)。また、toolsmelt schema を実行すると、エディターの入力補完と検証に使えるプランの JSON Schema が出力されます。

得られるもの
<name>/
  pyproject.toml  server.json  README.md  LICENSE  .gitignore  toolsmelt.yaml
  src/<package>/server.py        # tools, built on toolsmelt.runtime
  tests/                         # replay captured responses; one -m live test per tool
  .github/workflows/             # ci.yml, publish.yml (PyPI + MCP Registry)
  .claude-plugin/plugin.json     # Claude Code plugin
  skills/<name>/SKILL.md         # skill for the generated server

toolsmelt.yaml がプランなので、サーバーを再生成できます。server.py の各ツールは型付きシグネチャを保持し、ハブと同じコードである toolsmelt.runtime.interpret.run_tool を呼び出します。

生成したサーバー(またはハブの toolsmelt mcp)を、stdio ではなく Streamable HTTP で実行するには、--transport http --port 8000(または MCP_TRANSPORT=http)を指定します。/mcp のパスで 127.0.0.1 に接続を待ち受けます。すべてのリクエストで Authorization: Bearer <token> を必須にするには MCP_AUTH_TOKEN を設定します。または、MCP_OAUTH_ISSUER(必要に応じて MCP_OAUTH_AUDIENCE、MCP_OAUTH_SCOPES、MCP_PUBLIC_URL)を設定して、ID プロバイダーの OAuth 2.1 リソースサーバーとして動作させることもできます。この場合、プロバイダーの JWT(RS256/ES256、iss、aud、exp、スコープ)が検証され、/.well-known/oauth-protected-resource/mcp が公開されます。ループバック以外の --host にバインドする前に、いずれかを設定してください。公開するには、PyPI の trusted publisher を追加し(ワークフローは publish.yml、環境は pypi)、pyproject.toml と server.json のバージョンを上げてから、v* タグを付けます。

データベース

toolsmelt inspect postgresql://[email protected]/shop は、テーブル、列、キー、最大 3 件のサンプル行を読み込みます(個人情報はマスクされます)。draft は、プレーン SQL(:name プレースホルダーを使う sql:、引数は to: sql.<name>)で、一覧取得ツールとキーによる取得ツールを作成します。読み取り専用ツールには、単一の SELECT(または WITH ... SELECT)を指定する必要があります。これは validate の実行時と実行時の両方で確認されます。また、SQLite と PostgreSQL では接続も読み取り専用で開かれます。パスワードがプランに含まれることはありません。<P>_DB_PASSWORD から取得されます(ハブでは toolsmelt secret set から取得されます)。データベースに対応するドライバーを toolsmelt[sql] と一緒にインストールしてください(例:psycopg)。

ツール選択の評価

toolsmelt eval --write --provider anthropic を実行すると、evals.yaml が作成されます(各ツールにつきユーザーの質問が 1 つまたは 2 つと、どのツールでも回答すべきでない質問がいくつか含まれます)。ファイルの内容を確認してコミットしてください。その後、toolsmelt eval --provider anthropic を実行すると、各質問に回答するツールと引数をモデルに選ばせ、ツールの精度、引数の精度、混同されているツールが報告されます。--json と --min 0.9 を指定すると、CI のゲートとして使用できます。ツールのリストはプロンプトのキャッシュ済みプレフィックスになるため、繰り返し実行してもコストはわずかです。

ドリフトチェック

toolsmelt check <project> [--json] は、すべてのツールをサンプル引数で呼び出し、エラー、文字数で示す出力サイズ、空で返された出力フィールドを報告します。API やサイトの変更を検知できるよう、CI で毎晩実行してください。実際の呼び出しを行うため、read_only: false とマークされたツールは、--writes を渡さない限りスキップされます。

実行時の機能

生成されたサーバーは toolsmelt.runtime をインポートするため、ここを修正すればアップグレード時にすべてのサーバーへ反映されます。

  • ネットワークエラー、タイムアウト、429、5xx では再試行します(書き込みは 429 の場合のみ再試行するため、二重送信されることはありません)。Retry-After を尊重し、上限を設けます。ジッターと同時実行数の上限もあります。
  • GET レスポンスキャッシュ、ホスト許可リスト、5 MB の本文サイズ上限。
  • プロキシのサポート:<P>_PROXY には 1 つの URL、またはカンマ区切りの URL リスト(プール)を指定できます。<P>_BASE_URL でベース URL を上書きできます。システムのプロキシ環境変数は意図的に無視します。
  • 通常のクライアントをブロックするサイト向けの Chrome TLS フィンガープリント:pip install "toolsmelt[stealth]" を実行し、プランで impersonate: true を設定します。追加機能がない場合は、警告を 1 回表示して通常の httpx にフォールバックします。
  • コンパクトな出力:shape() はプランで指定されたフィールドのみを保持し、リストの長さを制限し(合計件数を報告)、長い文字列を切り詰め、null 値を除外します。
  • 対処方法がわかるエラー:403 では <P>_PROXY の設定を提案し、401 では認証用の環境変数名を示し、404/429/5xx では次の対処方法を案内します。
  • 認証:Bearer、ヘッダー、クエリ、Cookie、Basic に対応し、環境変数から読み込みます。

比較

ほとんどのジェネレーターはすべてのエンドポイントをツールとして複製し、モデルに生の JSON を渡します。toolsmelt はワークフローレベルのツールを少数設計し、わかりやすい引数名、次に何を呼び出すべきかを示す説明、コンパクトな出力を提供します。

入力出力ツール設計レスポンス整形ドリフトチェックオープンソース
toolsmeltOpenAPI、HAR、アプリコードライブハブツールまたは Python MCP プロジェクトLLM が設計するプランツールごとの root/fields/max_itemstoolsmelt checkはい
FastMCP from_openapiOpenAPI実行時プロキシエンドポイントごとに 1 つのツール。ルートマップ/変換は手動生の JSONいいえはい
openapi-mcp-generatorOpenAPITypeScript サーバーエンドポイントごとに 1 つのツール。選択には x-mcp を使用生の JSONいいえはい
Speakeasy / GramOpenAPITypeScript またはホスト型ツールセットを手動で設定実験的いいえはい(AGPL、2026 年 9 月以降)
Cloudflare Forge / Code ModeOpenAPISDK、CLI、MCP サーバーコードモード(検索+実行)該当なしいいえはい
AnythingMCPOpenAPI、Postman、SOAP、GraphQL、SQL、HARセルフホスト可能なゲートウェイ操作ごとに 1 つのツール、ビジュアルエディター手動いいえはい(AGPL)
mitmproxy2swagger, har-to-openapiHAR/トラフィックOpenAPI 仕様なしなしいいえはい
Integuru, reverse-api-engineerHAR/ブラウジングAPI クライアントコード(MCP ではない)なしなしいいえはい
Supergood, Wireサイトのウォークスルーホスト型 API/MCPマネージドマネージドベンダーの主張いいえ

2026 年 10 月時点で各プロジェクトの公開ドキュメントに基づいてまとめています。表の項目を参考にする前に、各プロジェクトの最新情報を確認してください。コードモードで MCP サーバーを生成していた Stainless は、2026 年 5 月に Anthropic に加わり、新規登録を終了しました。FastMCP のドキュメントにも、厳選されたサーバーは自動変換されたサーバーより明らかに優れていると記載されています。

拡張

フォークせずに、入力形式、値の変換、サインインプロバイダーを独自のインストール済みパッケージとして追加できます。toolsmelt はエントリーポイントグループ toolsmelt.importers、toolsmelt.transforms、toolsmelt.signin を通じてこれらを検出します。プラグインインポーターは、組み込み機能と同じプライバシールールを適用する toolsmelt.scrub を使用します。docs/extending.md を参照してください。

制限事項

  • 呼び出しごとのブラウザーはありません。JavaScript チャレンジや CAPTCHA は対象外です。これらが必要なサイトは、check で失敗します。
  • ツールは、1 件のリクエスト、ページネーション付きのリクエスト(paginate)、またはリクエストの連鎖(for_each によるファンアウトを含む steps)です。それ以上のロジック(分岐や計算値など)には、生成された server.py の手動編集が必要で、再生成すると編集内容は上書きされます。
  • 生成されるプロジェクトは Python のみです。サーバーは stdio、または --transport http を指定した Streamable HTTP で通信します。HTTP 認証は、共有ベアラートークン(MCP_AUTH_TOKEN)または独自の ID プロバイダーの OAuth トークン(MCP_OAUTH_ISSUER)を使用します。toolsmelt は認可サーバーではありません。
  • HAR に含まれるのは、記録中に実行した操作のみです。記録されていない機能はプランに含まれません。
  • アプリのコードから読み取ったエンドポイントは、probe するまで未検証です。読み取れないメソッドは空のままです。
  • リクエストボディは JSON、フォーム(application/x-www-form-urlencoded)、またはマルチパートのテキストフィールド(ツールの body_encoding)です。ファイルのアップロードには対応していません。
  • プランは信頼された入力として扱われます。プランのテキストはサーバーの指示とスキルに含まれ、toolsmelt check は生成されたコードを実行します。サードパーティーのコンテンツを基に LLM が作成したプランは、生成して公開する前に確認してください。
  • アルファ版です。

開発

uv sync
uv run pytest -q
uv run ruff check .

CONTRIBUTING.md と docs/design.md を参照してください。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。