Model Context Protocol server for pyobfus — the Python obfuscator. Lets Claude Desktop, Claude Code, Cursor, Windsurf, and Zed call pyobfus tools (preflight risk check, zero-config init, reverse stack-trace mapping) directly from an agent conversation.
Project description
pyobfus-mcp — Model Context Protocol server for pyobfus
pyobfus-mcp exposes pyobfus — the Python obfuscator — to any MCP-capable AI coding agent: Claude Desktop, Claude Code, Cursor, Windsurf, Zed, and anything else that speaks the Model Context Protocol.
Once configured, you can say:
"Check if this FastAPI project is safe to obfuscate, then generate a pyobfus.yaml for it."
and the agent will autonomously call check_obfuscation_risks and generate_pyobfus_config — no copy/paste of CLI commands, no manual config editing.
Tools exposed
| Tool | What it does |
|---|---|
check_obfuscation_risks(path) |
Pre-flight scan for eval/exec, dynamic attribute access, framework reflection. Returns severity counts, detected frameworks, and a suggested preset. |
generate_pyobfus_config(path, preset_override?, write?) |
Auto-detect framework → generate pyobfus.yaml. Returns the YAML text without writing by default; write=True persists to disk. |
unmap_stack_trace(trace, mapping_path) |
Reverse obfuscated identifiers in a production stack trace using a mapping.json. |
list_presets() |
Enumerate every preset (community / framework-aware / Pro). |
explain_preset(name) |
Describe what a named preset changes: exclusions, docstring handling, parameter preservation. |
All tools return dicts with a status field and an ai_hint field suggesting the next action.
Install
pip install pyobfus-mcp
This pulls pyobfus and the MCP Python SDK automatically.
Configure
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"pyobfus": {
"command": "pyobfus-mcp"
}
}
}
Restart Claude Desktop. The pyobfus tools appear in the tool list.
Cursor
Edit ~/.cursor/mcp.json:
{
"mcpServers": {
"pyobfus": {
"command": "pyobfus-mcp"
}
}
}
Windsurf
Edit ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"pyobfus": {
"command": "pyobfus-mcp"
}
}
}
Zed
In ~/.config/zed/settings.json:
{
"context_servers": {
"pyobfus": {
"command": {
"path": "pyobfus-mcp",
"args": []
}
}
}
}
Claude Code
claude mcp add pyobfus pyobfus-mcp
Example session
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
Debugging obfuscated code with your AI assistant
The killer feature: keep AI-assisted debugging even after you obfuscate.
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…
License
Apache-2.0. Same as the main pyobfus package. The pyobfus Pro features remain license-gated; this MCP server only wraps the community-tier tools.
Links
- Main package: https://pypi.org/project/pyobfus/
- Source: https://github.com/zhurong2020/pyobfus
- AI integration strategy: docs/AI_INTEGRATION_STRATEGY.md
- MCP specification: https://modelcontextprotocol.io/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyobfus_mcp-0.1.0.tar.gz.
File metadata
- Download URL: pyobfus_mcp-0.1.0.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc724054f0d03e6a6149a4c505146944be5beafdba62ad74d403bbb137134fb3
|
|
| MD5 |
b607a2057fae2285742811203c8402ed
|
|
| BLAKE2b-256 |
6c54471e5f352bc488fe795a8a90bc50d2f5b2049e036576b1d225dd0e1c20a3
|
File details
Details for the file pyobfus_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pyobfus_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8a70d10c2d1ba19077f3b8c3393df099281465a1164bbc2401501b6ae814e52
|
|
| MD5 |
8c6c257242e4c2a722c62eeade72fe9b
|
|
| BLAKE2b-256 |
b553282ead379a00796f1c0e481f199be1b882b8b12d27090af73dfb9725a676
|