pyobfus — Python Obfuscator について
pyobfusは、AIコーディングエージェントにPythonの難読化と関連するプロジェクト検査機能を提供するMCPサーバーです。リスクスキャン、設定生成、難読化結果の検証、スタックトレースの逆マッピングに対応し、ネットワーク検査は既定で無効です。
主な機能
- 01難読化リスクのプロジェクトスキャン
- 02フレームワーク対応のpyobfus.yaml生成
- 03難読化と出力の検証
- 04難読化されたスタックトレースの逆マッピング
- 05納品物に含まれる機密ファイルの検査
- 06マニフェストとのツール説明照合
活用シーン
- 01難読化前のPythonプロジェクト評価
- 02検出したフレームワーク用の設定準備
- 03リリース前の難読化出力確認
- 04難読化コードの本番トレースをデバッグ
MCP 対応
MCPクライアントに、プロジェクトのリスク確認、設定生成、難読化、検証、スタックトレースのマッピングなど9つのツールを提供します。uvxで起動するか、Pythonパッケージとしてインストールできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
8掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | |
| preset | any | いいえ | |
| verify | boolean | いいえ | |
| timeout | integer | いいえ | |
| output_dir | string | いいえ | |
| verify_cmd | any | いいえ | |
| save_mapping | boolean | いいえ | |
| trace_marker | boolean | いいえ |
詳細
pyobfus-mcp — pyobfus 用 Model Context Protocol サーバー
pyobfus-mcp は、Python オブファスケーターである pyobfus を、MCP 対応のあらゆる AI コーディングエージェント(Claude Desktop、Claude Code、Cursor、GitHub Copilot、Windsurf、Zed、Codex、CodeBuddy など)に提供します。Model Context Protocol に対応するものであれば、ほかのツールでも利用できます。
設定が完了したら、次のように指示できます。
「この FastAPI プロジェクトをオブファスケーションしても問題ないか確認してから、pyobfus.yaml を生成してください。」
するとエージェントが自律的に check_obfuscation_risks と generate_pyobfus_config を呼び出します。CLI コマンドをコピー&ペーストしたり、手動で設定を編集したりする必要はありません。
提供するツール
バージョン 0.3.16 では、9 個のツールを提供します。Community ツールが 7 個、ティア/トライアル案内ツールが 2 個です。
| ツール | 内容 |
|---|---|
protect_project(path, output_dir?, preset?, verify?, verify_cmd?, save_mapping?) | 1 回の呼び出しで完了する、自己検証型のパイプラインです。 リスクをスキャンし、フレームワークに適したプリセットを選び、オブファスケーションを実行した後、分離されたサブプロセスで出力をバイトコンパイルし、インポートのスモークテストを行って verified: true/false(および confidence)を返します。verified が示すのはコンパイルとインポートのスモークテストの結果に加え、指定された場合は verify_cmd の結果です。アプリケーションの動作がテストされたことを意味するものではありません。出力先の内部ではなく、出力先と同じ場所に、非公開の逆オブファスケーション用マッピングを保存します。ユーザーが「出荷前に保護/オブファスケーションしたい」と希望し、単なる変換ではなく成功を示すチェック結果を期待している場合に使用してください。 |
check_obfuscation_risks(path, verify_dependencies_online=false, use_project_config=true) | eval/exec、動的な属性アクセス、フレームワークのリフレクションを対象とする、設定を考慮した事前スキャンです。従来の設定なしスキャンを使用するには、use_project_config=false に設定します。verify_dependencies_online=true にすると、公開 PyPI を使った依存関係名の検証が有効になります。外部ネットワークへのアクセスは、デフォルトでは無効です。重要度ごとの件数、検出されたフレームワーク、推奨プリセットを返します。 |
generate_pyobfus_config(path, preset_override?, write?) | フレームワークを自動検出し、pyobfus.yaml を生成します。デフォルトでは YAML テキストを返すだけで、書き込みません。write=True にするとディスクに保存します。 |
unmap_stack_trace(trace, mapping_path) | mapping.json を使い、本番環境のスタックトレース内にあるオブファスケーション済みの識別子を元に戻します。 |
check_delivery(path, build_report?, provenance_manifest?) | 出荷前に、出力ディレクトリまたは .whl を確認し、マッピングファイル、非公開鍵、元のソース、およびビルドで生成されなかったファイルが含まれていないかを調べます。読み取り専用です。pyobfus >=0.7.1 が必要です。それより古い Core では FeatureUnavailable が返されます。 |
list_presets() | すべてのプリセット(community/フレームワーク対応/Pro)を列挙します。 |
explain_preset(name) | 指定したプリセットによる変更点(除外対象、docstring の処理、パラメーターの保持)を説明します。 |
recommend_tier(path) | プロジェクトを分析し、理由と具体的な次の手順を示して、community と Pro のどちらが適しているかを推奨します。 |
start_pro_trial() | 5 日間の Pro トライアルを開始するための、構造化された案内を返します。 |
すべてのツールは、status フィールド、自由記述の ai_hint、機械可読な next_tool フィールド({tool, reason, args})を含む dict を返すため、エージェントは決定論的に手順を連鎖できます。protect_project の verify_cmd は任意のコマンドを実行するため、PYOBFUS_MCP_ALLOW_VERIFY_CMD=1 を設定した場合にのみ有効になります。
インストール
インストール不要(推奨)
uv をお使いの場合、別途インストールする必要はありません。クライアントで uvx を指定すると、初回実行時に一時環境へ pyobfus-mcp(および pyobfus と MCP SDK)が取得されます。API キーは不要です。
{
"mcpServers": {
"pyobfus": {
"command": "uvx",
"args": ["pyobfus-mcp"]
}
}
}
または pip でインストール
pip install pyobfus-mcp
これにより、pyobfus と MCP Python SDK が自動的にインストールされます。その後、以下のクライアント別設定で "command": "pyobfus-mcp" を使用してください。
設定
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)を編集します。
{
"mcpServers": {
"pyobfus": {
"command": "pyobfus-mcp"
}
}
}
Claude Desktop を再起動します。ツールの一覧に pyobfus ツールが表示されます。
Cursor
~/.cursor/mcp.json を編集します:
{
"mcpServers": {
"pyobfus": {
"command": "pyobfus-mcp"
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json を編集します:
{
"mcpServers": {
"pyobfus": {
"command": "pyobfus-mcp"
}
}
}
Zed
~/.config/zed/settings.json を編集します:
{
"context_servers": {
"pyobfus": {
"command": {
"path": "pyobfus-mcp",
"args": []
}
}
}
}
Claude Code
claude mcp add pyobfus pyobfus-mcp
セッションの例
User: Can you check whether this Python project is safe to obfuscate?
Path: /Users/me/code/my-api
Agent: [invokes check_obfuscation_risks("/Users/me/code/my-api")]
I found 2 high-severity and 3 medium-severity patterns. FastAPI is
detected, so I'd suggest the `fastapi` preset. Want me to generate
the config?
User: Yes please, write it.
Agent: [invokes generate_pyobfus_config("/Users/me/code/my-api",
preset_override="fastapi", write=True)]
Wrote pyobfus.yaml. Next: pyobfus /Users/me/code/my-api -o dist/
-c pyobfus.yaml
AI アシスタントで難読化されたコードをデバッグする
最大の特長は、難読化した後も AI を活用したデバッグを続けられることです。
User: Here's a crash from prod. Can you help?
[pastes traceback full of I0, I1, I2...]
Agent: [invokes unmap_stack_trace(trace, "path/to/mapping.json")]
Reversed. The crash is in Calculator.add() called from
main() — 'Calculator' object has no attribute 'add_x'. Looks like
a typo in the method call site…
ツールの整合性を検証する
ツールポイズニング/「ラグプル」——サーバーのツールの説明が、確認して信頼した後にひそかに変更されること——は、2026 年の MCP セキュリティベースラインにおける最大の脅威です。pyobfus-mcp-verify は、現在インストールされているパッケージのツールの説明/スキーマを、リリース時に固定されたマニフェストと照合します:
pyobfus-mcp-verify
# OK: tool descriptions match the shipped manifest (digest 5cf4c902d460...).
不一致(終了コード 1)がある場合、インストール済みのツールがリリースに含まれていたものと異なることを意味します。サーバーを信頼する前に調査する価値があります。これは自己整合性ダイジェストであり、暗号署名ではありません。パッケージが同梱されたマニフェストと一致することを証明するものであり、特定の当事者が署名したことを証明するものではありません。より強い保証を得るには、出力されたダイジェストを、インストールしたバージョンの GitHub リリースノートで公開されているものと比較してください。
独立したセキュリティスキャン
公開されている PyPI パッケージ(ローカルビルドではありません)は、Cisco のオープンソース mcp-scannerでスキャンされています。このスキャンでは、ライブの initialize → tools/list ハンドシェイクに続いて、その時点で公開されていた 8 つのツールを対象に、YARA マルウェアシグネチャと依存関係の脆弱性を分析しました。pyobfus-mcp 0.3.6(2026-08-20)時点の結果:8/8 個のツールが安全、検出結果 0 件。再現可能なコマンド、未加工の出力、およびこのスキャンの対象範囲と対象外についての率直な説明は、docs/MCP_SECURITY_SCAN.mdをご覧ください。
ライセンス
Apache-2.0。メインの pyobfus パッケージと同じです。サーバーはコミュニティ向けツールと、ティア/トライアルに関するガイダンスを提供します。Pro ビルド機能には引き続きライセンスが必要です。
リンク
- メインパッケージ: https://pypi.org/project/pyobfus/
- ソース: https://github.com/zhurong2020/pyobfus
- 公式 MCP レジストリエントリー: https://registry.modelcontextprotocol.io/v0/servers?search=pyobfus
- AI 統合戦略: docs/AI_INTEGRATION_STRATEGY.md
- MCP 仕様: https://modelcontextprotocol.io/
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。