mcghidra/CHANGELOG.md
Teal Bauer 4bc22674ec feat: Implement HATEOAS-compliant API endpoints
- Add ProgramEndpoints for proper HATEOAS URL structure
- Fix response structure to include required HATEOAS links
- Ensure proper result formats for segments, decompiled functions, and variables
- Reorganize endpoints to use nested resource pattern (/programs/current/functions/{address})
- Fix all tests to ensure HATEOAS compliance

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-04-13 20:29:11 +02:00

5.7 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

Unreleased

Added

  • Complete Ghidra HTTP API implementation:
    • Memory operations (read/write)
    • Cross-reference analysis
    • Program analysis (callgraph, dataflow)
  • Enhanced decompiler controls:
    • Raw output vs clean pseudocode
    • Syntax tree visibility
    • Multiple simplification styles
  • Comprehensive API documentation (GHIDRA_HTTP_API.md, MCP_BRIDGE_API.md)
  • Standardized JSON response formats
  • Implemented /plugin-version endpoint for version checking
  • Added proper error handling for when no program is loaded
  • Implemented HATEOAS-driven API as described in GHIDRA_HTTP_API.md:
    • Added /programs and /programs/{program_id} endpoints
    • Implemented program-specific resource endpoints
    • Added pagination support with metadata
    • Added filtering capabilities (by name, address, etc.)
    • Implemented proper resource linking with HATEOAS
  • Added disassembly endpoint for functions with HATEOAS links
  • Enhanced parameter validation in MCP bridge tools

Changed

  • Unified all endpoints to use structured JSON
  • Improved error handling and response metadata
  • Simplified bridge code and added type hints
  • Updated port discovery to use DEFAULT_GHIDRA_PORT
  • Refactored Java plugin into modular architecture:
    • Separated concerns into api, endpoints, util, and model packages
    • Created standardized response builders and error handlers
    • Implemented transaction management helpers
    • Added model classes for structured data representation
  • Removed port field from responses (bridge knows what instance it called)
  • Updated MCP bridge to use new HATEOAS API endpoints
  • Enhanced MCP bridge tools to validate input parameters
  • Improved response handling in MCP bridge for better error reporting
  • Breaking: Removed backward compatibility with legacy endpoints, all endpoints now require strict HATEOAS compliance:
    • All responses must include _links object with at least self reference
    • Standardized JSON structures for all resource types
    • Created comprehensive requirements documentation in HATEOAS_API.md

Fixed

  • Fixed endpoint registration in refactored code (all endpoints now working)
  • Improved handling of program-dependent endpoints when no program is loaded
  • Enhanced root endpoint to dynamically include links to available endpoints
  • Added proper HATEOAS links to all endpoints
  • Fixed URL encoding/decoding issues in program IDs
  • Fixed transaction management in function operations
  • Fixed inconsistent response formats in function-related endpoints
  • Improved error handling for missing parameters in MCP bridge tools
  • Fixed non-compliant endpoint responses:
    • Added _links to /classes and /instances endpoints
    • Updated /programs/current/segments to return list of segment objects
    • Fixed decompile endpoint to return structured decompiled code
    • Fixed disassembly endpoint to return structured instruction list
    • Fixed variables endpoint to return proper variable structure

1.4.0 - 2025-04-08

Added

  • Structured JSON communication between Python bridge and Java plugin
  • Consistent response format with metadata (timestamp, port, instance type)
  • Comprehensive test suites for HTTP API and MCP bridge
  • Test runner script for easy test execution
  • Detailed testing documentation in TESTING.md
  • Origin checking for API requests
  • Mutating tests for API functionality

Changed

  • Improved error handling in API responses
  • Enhanced JSON parsing in the Java plugin
  • Updated documentation with JSON communication details
  • Standardized API responses across all endpoints
  • Improved version handling in build system

Fixed

  • Build complete package in package phase
  • Versioning and naming of JAR files
  • GitHub Actions workflow permissions
  • Extension ZIP inclusion in complete package
  • ProgramManager requirement
  • Git tag fetching functionality
  • MCP bridge test failures

1.3.0 - 2025-04-02

Added

  • Added docstrings for all @mcp.tool functions
  • Variable manipulation tools (rename/retype variables)
  • New endpoints for function variable management
  • Dynamic version output in API responses
  • Enhanced function analysis capabilities
  • Support for searching variables by name
  • New tools for working with function variables:
    • get_function_by_address
    • get_current_address
    • get_current_function
    • decompile_function_by_address
    • disassemble_function
    • set_decompiler_comment
    • set_disassembly_comment
    • rename_local_variable
    • rename_function_by_address
    • set_function_prototype
    • set_local_variable_type

Changed

  • Improved version handling in build system
  • Reorganized imports in bridge_mcp_hydra.py
  • Updated MANIFEST.MF with more detailed description

1.2 - 2025-03-30

Added

  • Enhanced function analysis capabilities
  • Additional variable manipulation tools
  • Support for multiple Ghidra instances

Changed

  • Improved error handling in API calls
  • Optimized performance for large binaries

1.1 - 2025-03-30

Added

  • Initial release of GhydraMCP bridge
  • Basic Ghidra instance management tools
  • Function analysis tools
  • Variable manipulation tools

1.0 - 2025-03-24

Added

  • Initial project setup
  • Basic MCP bridge functionality