MCP サーバー
Babel Desktop はローカルの Model Context Protocol(MCP)サーバーをホストできます。これにより、Claude Code などの AI アシスタントが、プロジェクトを開き、設定を変更し、難読化を実行し、スタックトレースをデコードし、Babel Licensing を操作できるようになります。
MCP は、AI アシスタントが外部ツールを呼び出すために使用するオープン標準です。Streamable HTTP トランスポートに対応した MCP クライアントであれば、どれでも接続できます。アシスタントは、開いているアプリケーションの中で作業します。アシスタントが編集したプロジェクトや開始した実行はキャンバスに表示され、ウィンドウで行った変更はアシスタントからも見えます。
依頼の例をいくつか示します。
~/Projects/Acme/Acme.babelを開き、Acme.exeの動的プロキシとマップファイルの生成を有効にして、難読化を実行し、警告があれば教えてください。
Acme.Core.dllをプロジェクトに追加してAcme.exeにマージし、次の実行のリネームの統計を見せてください。
crash.txtのスタックトレースをAcme.exe.map.xmlでデコードし、私のメソッドのうちどれが例外をスローしたのか教えてください。
今後 30 日以内に期限が切れるライセンスと、そのライセンスを持つ顧客を表示してください。
インターフェイスを Copper Night テーマに切り替えて、ダッシュボードのスクリーンショットを撮ってください。
動的プロキシとは何をするものですか。
Acme.exeに適している場合は、有効にして理由を説明してください。
サーバーの有効化
サーバーは既定ではオフで、有効にするまで接続を待ち受けません。
MCP の設定を開く
「設定」を開き、「MCP」を選択します。
サーバーを有効にする
「オートメーション サーバーを有効にする」にチェックを入れます。状態の行が「実行中」に変わり、サーバーのアドレスが表示されます。既定のポートでは http://127.0.0.1:8765/mcp です。この設定がオンになっている間は、Babel Desktop を起動するたびにサーバーも起動します。
ポートを選択する
コンピューター上のほかのプログラムがすでに使用している場合を除き、「ポート」は 8765 のままにします。
トークンでサーバーを保護する
「アクセス トークンを必須にする」にチェックを入れ、「生成」をクリックします。以後、クライアントは X-Babel-Token ヘッダーでトークンを送信する必要があります。トークンがない場合、そのコンピューター上でお使いのユーザーアカウントで動作しているプログラムはどれでも接続できてしまうため、共有コンピューターではトークンを必須にしてください。

「設定 > MCP」
変更はすぐに適用されます。「オートメーション サーバーを有効にする」のチェックを外すと、サーバーは停止します。ポートまたはトークンを変更すると、サーバーが再起動し、接続中のクライアントは切断されます。コマンドパレットからは、「MCP: ローカル サーバーを起動(プロジェクトの読み取り/書き込み)」、「MCP: ローカル サーバーを停止」、「MCP: 状態を表示」、「MCP: クライアント構成ファイルを表示」も実行できます。
クライアントの接続
MCP 設定の「クライアント構成」セクションでは、現在のポートとトークンに合わせた構成が生成されます。「構成をコピー」をクリックし、お使いのクライアントの MCP 構成に貼り付けます。
{
"mcpServers": {
"babel-obfuscator": {
"type": "http",
"url": "http://127.0.0.1:8765/mcp",
"headers": {
"X-Babel-Token": "paste-the-token-from-settings-mcp"
}
}
}
}トークンを必須にしていない場合、headers ブロックは省略されます。「ファイルを表示…」は、実行中のサーバー用に Babel Desktop が書き出した構成ファイルの場所を表示します。
Claude Code の場合は、「Claude Code コマンドをコピー」をクリックし、コピーされたコマンドをターミナルで実行します。
claude mcp add --transport http babel-obfuscator http://127.0.0.1:8765/mcp \
--header "X-Babel-Token: paste-the-token-from-settings-mcp"先に Babel Desktop を起動し、次にアシスタントを起動します。接続を確認するには、Babel Desktop のウィンドウのスクリーンショットを撮るようアシスタントに依頼してください。
トークンはパスワードと同じように扱い、レポート、チケット、ソース管理に含めないでください。トークンを知っている人は誰でも、お使いのユーザーアカウントの権限で、ローカルコンピューター上の Babel Desktop を操作できます。
アシスタントにできること
サーバーは、アプリケーションの機能を MCP ツールとして提供します。ツールは次のように分類されています。
| 分野 | ツール |
|---|---|
| アプリケーション | app_get_state、app_info、app_settings、app_set_theme、app_set_globe_style、language_list、language_set、language_install、mcp_configure、app_restart、desktop_screenshot |
| アップデート | app_update_status、app_update_check、app_update_install |
| エンジンのライセンス | license_info、license_load、license_clear、license_activate、license_deactivate、license_floating、license_release、license_configure |
| プロジェクトとターゲット | project_info、project_graph、graph_layout、project_open、project_save、assembly_list、assembly_add、assembly_select、assembly_remove |
| 設定とルール | settings_list、settings_get、settings_set、project_rules、project_set_xml_rules、rules_validate、rules_read、rules_save |
| 実行と結果 | obfuscate_start、obfuscate_cancel、obfuscate_status、results_list、results_read、results_table |
| ツール | stack_decode、trace_read、trace_save、warning_reference、plugin_arguments |
| 拡張機能 | extensions_list、extension_install、extension_state、extension_readme、extension_settings、extension_settings_save と、そのほかの extension_* ツール |
| ライセンス管理 | licensing_profiles、licensing_profile_save、licensing_profile_test、licensing_profile_select、licensing_layout、licensing_read、licensing_dashboard、licensing_globe_details、licensing_report、licensing_geolocation、licensing_prepare、licensing_confirm |
| 確認付きの変更 | desktop_prepare、desktop_confirm |
| ドキュメント | docs_search、docs_read、docs_list |
設定名は、プロパティパネルに表示される Babel Obfuscator のオプション名と同じなので、アシスタントは Babel タスクリファレンスを参考にして値を選択できます。ツールの名前を指定する必要はありません。望む結果を伝えれば、アシスタントがツールを選びます。
確認付きの変更
作業内容が失われたり、ファイルが上書きされたりする可能性のある操作は、2 段階で行われます。アシスタントはまず操作を準備し、何が起こるかを説明する提案を受け取ります。たとえば、実行によってどの出力ファイルが置き換えられるか、削除によってどのレコードが消えるかといった内容です。アシスタントは、操作を確定する前に、その提案をユーザーに示して承認を得なければなりません。提案は 2 分で期限切れになり、1 回しか使用できません。提案の作成後にプロジェクト、ファイル、レコードが変更されていた場合、提案は拒否されます。
2 段階の確認の対象となる操作は次のとおりです。
- 新しいプロジェクトの作成、入力の置き換え、ターゲットの削除、グラフと依存関係の編集、実行の開始(
obfuscate_startは提案を返します) - セットアップコマンド:メインアセンブリへのマージ、パブリック難読化、ターゲットの保護レベル
- 拡張機能のインストールとアンインストール、ライセンス管理の接続プロファイルの削除
- ライセンス管理のレコードの作成、編集、失効、削除(
licensing_prepareとlicensing_confirm)
設定や XML ルールを変更するには、プロジェクトの現在のリビジョンが必要です。これにより、アシスタントが自分の見ていない変更を上書きすることを防ぎます。
難読化の実行
アシスタントが開始した実行は、ウィンドウで開始した実行と何も変わりません。出力は同じ場所に書き出され、進行状況は「アクティビティ」パネルに表示され、どちらの側からでもキャンセルできます。アシスタントは実行が完了するまで obfuscate_status をポーリングし、その後 results_read と results_table で統計を読み取ります。実行中は、プロジェクトを変更できません。
ライセンス管理
ライセンス管理のツールは、ライセンス管理の接続プロファイルに対して、そのプロファイルの API キーのロールと権限で動作します。レコードを作成、編集、削除できるのは、アクセスモードが「ローカル管理」の「ローカル テスト」プロファイルを使用した場合だけです。リモートのプロファイルと読み取り専用のプロファイルは、すべての変更を拒否します。応答からは、ライセンスキー、API キー、トークン、IP アドレスなどのシークレットが除かれます。ダッシュボードのツールは、集計データだけを返します。
ウィンドウに残される操作
次の操作はアシスタントにはできません。ウィンドウでご自身が行う必要があります。
- 資格情報の入力:API キーによるサインインと MCP トークンの生成
- 実行中のパスワード入力の要求への応答と、パスワードで保護されたマップファイルを使ったスタックトレースのデコード
- MCP サーバー自体の起動と停止
Babel ドキュメントツール
サーバーは、いまお読みのこのドキュメントもアシスタントに提供します。仕組みや操作方法を尋ねると、アシスタントは設定を変更する前に、ドキュメントを検索して該当するセクションを読み、参照したページへのリンクを添えて回答します。サーバーが接続中のクライアントにこのように動作するよう指示するため、ツールの名前を指定する必要はありません。
| ツール | 機能 |
|---|---|
docs_search | Babel Obfuscator、Babel Licensing、Babel Desktop、API Reference のドキュメントを検索します。500 文字までのクエリ、省略可能な section(obfuscator、licensing、desktop、api のいずれか)、省略可能な limit(1 から 20、既定は 8)を受け取ります。各結果には、ページのタイトル、セクションの見出し、ページのパス、見出しへのリンク、短い抜粋が含まれます |
docs_read | docs_search または docs_list が返したパスを指定すると、そのページを Markdown で返します。heading を指定すると、そのセクションだけを返します。200 KiB を超えるページは切り詰められ、セクションを 1 つ指定して要求するよう促す注記が付きます。存在しないパスを指定した場合は、最も近いパスを示します |
docs_list | すべてのセクションまたは 1 つのセクションについて、ページのパス、タイトル、説明を一覧で返します |
ドキュメントツールは読み取りだけを行い、接続先は https://docs.babelfor.net だけです。検索はお使いのコンピューター上で実行され、質問がドキュメントサイトに送信されることはありません。ツールは検索インデックスと読み取るページをダウンロードします。これらは AI でドキュメントを利用するで説明している公開ファイルと同じものです。
依頼の例をいくつか示します。
XML ルールを使って、ある型をリネームの対象から除外するにはどうすればよいですか。その方法に従って、このプロジェクトのルールを変更してください。
アプリケーションの終了時にフローティングライセンスを解放する方法を、Babel Licensing のドキュメントで検索してください。
スタックデコーダーのページを読んで、リリースビルドにはどのマップファイルが必要かを説明してください。
オフラインでの使用と更新
Babel Desktop は、ダウンロードしたインデックスとページを、ユーザープロファイル内の docs-cache フォルダーに保持します。
- インデックスの変更の確認は、多くても 24 時間に 1 回です。ページは、サイト上で変更された場合にだけ再ダウンロードされます。
- それより早く最新版を取得するには、ドキュメントを更新するようアシスタントに依頼します。ツールはそのために
refresh: trueを受け付けます。 - ネットワークに接続していない場合、ツールはキャッシュされたコピーから回答し、結果には古い可能性があることを示す印とコピーの日付が付きます。
- 接続に失敗した後や、サイトからエラーが返された後は、ツールは 10 分間キャッシュを使用し、その後でサイトへの接続を再び試みます。
ツールがキャッシュを作成するには、一度はサイトに接続する必要があります。それまでの間、オフラインでは次のメッセージを返します:Babel documentation is not available offline yet: connect to the internet once, or open https://docs.babelfor.net
セキュリティ
- サーバーは既定ではオフで、有効にして初めて接続を待ち受けます。
- サーバーは
127.0.0.1にバインドされるため、ほかのコンピューターからは到達できません。 - 「アクセス トークンを必須にする」がオンの場合、正しい
X-Babel-Tokenヘッダーのないリクエストはすべて拒否されます。 - リクエストのサイズ、セッション、接続、タイムアウトには制限があり、各リクエストのホストとオリジンが検証されます。
- 任意のコマンド、SQL、URL を実行するツールはありません。
- ドキュメントツールは
https://docs.babelfor.netにだけ接続し、リダイレクトには従わず、読み取りだけを行います。
アシスタントは、ユーザーが Babel Desktop で持っているのと同じアクセス権を、プロジェクトとファイルに対して持ちます。プロジェクトの設定を変更し、難読化を実行し、確認を経たうえで出力ファイルを置き換えることができます。アシスタントに自由に試させる場合は、プロジェクトのコピーを渡し、使用しないときはサーバーをオフにしてください。
トラブルシューティング
| 症状 | 原因 | 対処 |
|---|---|---|
| クライアントが接続できない | Babel Desktop が起動していないか、サーバーが有効になっていない | Babel Desktop を起動し、「設定 > MCP」で状態の行を確認します |
| すべての呼び出しが認証エラーとして拒否される | トークンがないか、古くなっている | トークンを生成した後、構成をもう一度コピーします |
| サーバーが起動しない | ポートがすでに使用されている | 「設定 > MCP」で別のポートを選択します |
| 確定が拒否される | 提案が期限切れになったか、プロジェクトが変更された | 操作をもう一度準備するようアシスタントに依頼します |
| ライセンス管理での変更が拒否される | プロファイルがリモートまたは読み取り専用であるか、API キーに必要なロールまたは権限がない | アクセスモードが「ローカル管理」の「ローカル テスト」プロファイルと、必要な権限を持つキーを使用します |
Babel Licensing Service には専用の MCP サーバーがあり、こちらはサービスの API を使ってリモートで動作します。両者の比較については、AI 連携を参照してください。