Standardizes communication between the Python bridge and Java plugin,
resolves test logic errors, and improves error handling to ensure
MCP bridge tests pass reliably.
Key changes:
- Standardized HTTP methods: Use GET for read operations and POST for all modification operations across the bridge and plugin.
- Fixed JSON parsing in Java plugin using Gson and added missing imports.
- Corrected error handling in Java plugin's `get_function` to return `success: false` when a function is not found.
- Updated Python bridge's `safe_get` to correctly propagate nested failure responses from the plugin.
- Fixed test client logic (`test_mcp_client.py`) to correctly extract function name/address from `list_functions` results.
- Added logging to `test_mcp_client.py` for easier debugging of mutating operations.
- Modified bridge_mcp_hydra.py to auto-discover GhydraMCP plugin instances on ports 8192-8299
- Added periodic background thread to maintain discovered instances list
- Added project and binary file information to instance reporting
- Added JSON-based info endpoint in GhydraMCP plugin
- Added json-simple dependency to support JSON responses
- Add examples of how to interact with the MCP server
- Explain what the release artifacts are
- Add a note where the running instances can be seen in Ghidra
- Create a complete package containing both plugin and bridge script
- Update GitHub Actions workflow to use Maven-generated artifacts
- Add Maven profiles to selectively build plugin-only or complete-package
- Improve Maven configuration with UTF-8 encoding and dependency cleanup
- Fix Maven warnings for system paths and unused dependencies
- Upgrade Java version to 21 for compatibility with latest Ghidra
- Update README with enhanced build instructions
[PEP 723](https://peps.python.org/pep-0723/) lets single-file python scripts contain references to their required Python packages inline. This adds that for the MCP bridge. You can now run it with e.g. `uv run bridge_mcp_ghidra.py` and it will automatically install the required packages in a dedicated environment if needed.