uninstall
uninstall
¶
Take both halves back out again.
install writes into two places that outlive the Python package: a Houdini
packages directory, and an MCP client's config. pip uninstall moves neither,
so removing this used to mean knowing where both live and editing them by hand.
The leftovers are not harmless, and they fail in the quiet way this project
keeps running into. A package file pointing at a plugin directory that no longer
exists is skipped by Houdini without a word. A client entry pointing at a
removed interpreter surfaces only as "disconnected". And a forgotten
fxhoudinimcp.json in a second packages directory silently overrides the next
install, because Houdini processes every packages directory and the last one
wins.
fxhoudinimcp uninstall # remove both halves, after asking
fxhoudinimcp uninstall --dry-run # list what it would remove
fxhoudinimcp uninstall --yes # do not ask
fxhoudinimcp uninstall --houdini-dir DIR # only this packages directory
fxhoudinimcp uninstall --client none # leave client configs alone
Unlike install, this does not have to pick between candidate directories.
Installing has to know which Houdini you mean; removing does not, because every
fxhoudinimcp.json found is a leftover and leaving one behind is the hazard
above. So the default is all of them, listed in full before anything is deleted.
The Python package is deliberately left alone. That is pip uninstall
fxhoudinimcp, and running it on someone's behalf from inside the package being
removed is a good way to produce a half-deleted install.
Functions:
| Name | Description |
|---|---|
build_parser |
The argument parser, exposed so the README's flag table can be checked. |
confirm |
Ask before deleting. Anything but an explicit yes is no. |
find_package_files |
Every |
remove_claude_code |
Unregister from Claude Code via its own CLI. Returns report lines. |
remove_desktop_entry |
Drop our entry from Claude Desktop's config, keeping everything else. |
remove_package_files |
Delete the Houdini package files. Returns report lines. |
stdin_is_interactive |
Whether there is a person on the other end who can answer a question. |
Functions:¶
build_parser
¶
build_parser() -> ArgumentParser
The argument parser, exposed so the README's flag table can be checked.
find_package_files
¶
Every fxhoudinimcp.json this uninstall would remove.
With --houdini-dir only that one directory is considered, so a machine
with several Houdini versions can have one cleaned without touching the
rest. Without it, every candidate directory is searched, which is the point:
the file you forget is the one that breaks the next install.
remove_claude_code
¶
Unregister from Claude Code via its own CLI. Returns report lines.
remove_desktop_entry
¶
Drop our entry from Claude Desktop's config, keeping everything else.
The same care install takes, for the same reason: this file is likely to
hold servers that took someone effort to set up, and an uninstaller that
eats them is worse than one that never ran.
remove_package_files
¶
Delete the Houdini package files. Returns report lines.
stdin_is_interactive
¶
stdin_is_interactive() -> bool
Whether there is a person on the other end who can answer a question.
This lives here rather than in install because deleting files is now the
only question left worth asking. install used to ask which Houdini
packages directory to use and no longer does, having concluded the question
was avoidable; this one is not.