mcpsmith について
toolsmelt(旧名 mcpsmith)は、OpenAPI仕様、Postmanコレクション、ウェブサイト、アプリ、SQLデータベースからAIエージェント向けのツールを作成します。サービスやデータを接続するコーディングエージェントやチームを対象とし、エージェントによる設計と、利用者が管理できるPythonコードの生成に対応します。
主な機能
- 01APIやアプリの情報からツールを抽出
- 02LLMによるツールプランの設計
- 03個人用ツールセットの検証と接続
- 04公開可能なPython MCPサーバーの生成
- 05ログイン済みサイトの記録管理
- 06コマンドラインでMCPサーバーを設定
活用シーン
- 01OpenAPIやPostmanのエンドポイントをエージェントに公開
- 02ログイン済みダッシュボードの操作をツール化
- 03所有するAndroid・Electronアプリからエンドポイントを抽出
- 04SQLデータベースの操作をエージェントに提供
MCP 対応
toolsmeltは、ツールプランの確認、検証、接続、呼び出しを行うMCPサーバーを提供し、生成したMCPサーバーの登録にも対応します。setupでは、検出したコーディングエージェント向けにMCPサーバーとスキルを設定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細

toolsmelt
以前は mcpsmith でした。uvx mcpsmith と mcpsmith が生成したサーバーは引き続き動作します。~/.mcpsmith に保存した接続、MCPSMITH_* 変数、キーチェーンのエントリーも引き続き読み込まれます。uvx toolsmelt setup を一度実行して、エージェントのエントリーを切り替えてください。
OpenAPI ファイル、Postman コレクション、ログインが必要なウェブサイト、自分が所有するアプリ、または SQL データベースを、AI エージェント向けの厳選されたツールに変換します。新しい形式はパッケージとして追加できます(docs/extending.md)。LLM がツールを設計し、公開したい場合は、自分で所有できる通常の Python コードとして取得できます。
uvx toolsmelt setup
ツールに変換できるもの
| ソース | コマンド |
|---|---|
| OpenAPI / Swagger ファイルまたは URL | toolsmelt 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 API | toolsmelt 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 --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。
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
- その Chrome ウィンドウで自分でログインします(パスワードや 2FA がエージェントに渡ることはありません)。
- エージェントが
smith_record_start(name, hosts)を呼び出します。各機能を異なる入力で 2 回ずつ操作した後、smith_record_stop(name)を呼び出すと、Cookie とトークンを除去した HAR が書き出されます。 - プランを調査、設計して、
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 上にある無料のjadxCLI(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 は、変更内容を表示し、何も書き込みません。
変換
プランでは、引数の 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 はワークフローレベルのツールを少数設計し、わかりやすい引数名、次に何を呼び出すべきかを示す説明、コンパクトな出力を提供します。
| 入力 | 出力 | ツール設計 | レスポンス整形 | ドリフトチェック | オープンソース | |
|---|---|---|---|---|---|---|
| toolsmelt | OpenAPI、HAR、アプリコード | ライブハブツールまたは Python MCP プロジェクト | LLM が設計するプラン | ツールごとの root/fields/max_items | toolsmelt check | はい |
FastMCP from_openapi | OpenAPI | 実行時プロキシ | エンドポイントごとに 1 つのツール。ルートマップ/変換は手動 | 生の JSON | いいえ | はい |
| openapi-mcp-generator | OpenAPI | TypeScript サーバー | エンドポイントごとに 1 つのツール。選択には x-mcp を使用 | 生の JSON | いいえ | はい |
| Speakeasy / Gram | OpenAPI | TypeScript またはホスト型 | ツールセットを手動で設定 | 実験的 | いいえ | はい(AGPL、2026 年 9 月以降) |
| Cloudflare Forge / Code Mode | OpenAPI | SDK、CLI、MCP サーバー | コードモード(検索+実行) | 該当なし | いいえ | はい |
| AnythingMCP | OpenAPI、Postman、SOAP、GraphQL、SQL、HAR | セルフホスト可能なゲートウェイ | 操作ごとに 1 つのツール、ビジュアルエディター | 手動 | いいえ | はい(AGPL) |
| mitmproxy2swagger, har-to-openapi | HAR/トラフィック | OpenAPI 仕様 | なし | なし | いいえ | はい |
| Integuru, reverse-api-engineer | HAR/ブラウジング | 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
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。