Skip to content

Cannot use any MCP tooling (server namespace prepended to requests) #100

Open

Description

@boondoggler

I am using Ollama locally on my Ubuntu 24.04.5 LTS machine with Ghidrassist and GhidrAssistMCP plugins in Ghidra 12.1.4 (also tested on Ghidra built from source, noted as Ghidra 12.3)

If I request MCP tool usage by ticking the Use MCP tickbox, the llm consistently cannot use the MCP server/tools. I noticed the LLM was adding the MCP Server name (noted in Settings-> MCP Servers) to the json request tool call. For example my server is noted as MyServer in the settings page. get_hexdump end up being 'myserver_get_hexdump' in the requests (noted in the output window, wireshark and Ghidra debug console) and thusly fails to get any tools AT ALL.

Tested on same machine with Oghidra and all works (albiet a different client server)

If I use curl to send requests with get_hexdump, I get the bytes I need back ok.

Nothing apart from session startup appears in the MCP plugin logs

All tests on settings pages come back with ticks

Any ideas?

Activity

  1. boondoggler commented on Oct 21, 2026

    @boondoggler
    Author

    ok, I originally built from master. I have tried the latest released plugins and these seem to a) work ok and b) still apply the namespace to the request. Confused!

  2. boondoggler commented on Oct 21, 2026

    @boondoggler
    Author

    ok, these plugins are unstable. Ive literally powered off my pc, restarted later and its now giving me:

    version: 0.2.8 mode claude-opus-4.6 error. Message: the requested operation never completed, type overloaded error

    and

    Message: the requested operation was never completed.

    I haven't changed any settings since it worked in post 2. I'm not even using Claude, its configured for Ollama as post 1.

    Its almost as if it works one time after installing the plugin and then forevermore its soiled.

  3. gjwang commented on Oct 21, 2026

    @gjwang

    In current master, MCPToolManager passes the original tool name to the client. Its debug line shows both names; the adapter also logs the name sent to the server. Comparing those for one failed call, alongside the exact plugin build, would help locate where the prefix persists.

    For the restart issue, does the active provider/model still show Ollama after reopening? The claude-opus-4.6 error makes that selection worth checking separately.

  4. boondoggler commented on Oct 22, 2026

    @boondoggler
    Author

    I'll be working on this tomorrow again, so standby for more information.

    But yes ollama is still showing.

  5. boondoggler commented on Oct 23, 2026

    @boondoggler
    Author
    • "For the restart issue, does the active provider/model still show Ollama after reopening? The claude-opus-4.6 error makes that selection worth checking separately" - Yes suggests Ollama still. But I haven't seen this issue today.
    • " Comparing those for one failed call" - ive uploaded some logs and screenshots
    • "alongside the exact plugin build" - Ghidrassist 2.2.0 / GhidrAssistMCP 3.0.0 (tried from master and from your releases page)

    Tried on Ghidra 12.1.4 and Ghidra master (Ghidra 12.3/jdk 25)
    Added files showing Ghidra debug logs, working curl session, and the mcplog (showing no mcp tool calls, curling the tools shows in the log though)

    I am still getting commentary back from the Explain tab - but this isnt using MCP tools obviously

    Tried on HTTP and SSE

    ghidra debug_log_23_10_query_some_bytes.txt
    mcp_log.txt
    works_curl.txt

    Image Image Image Image
  6. gjwang commented on Oct 23, 2026

    @gjwang

    Thanks for the logs — these narrow it down. At 09:42:51 discovery succeeds with 51 MCP tools. At 09:43:08 and 09:57:04, the logged LLM responses have finish_reason: "stop" and no message.tool_calls. The later response puts thought/action/input JSON inside message.content; that is text, not an executable tool call. The earlier “missing length” error is also in model-generated content, rather than a recorded MCP response.

    In 2.2.0’s Ollama adapter, the content fallback recognizes name/arguments, arrays of those, or tool_calls — not action/input. The handler treats stop as completion. That explains why these two turns never reach MCP execution. The prefix is stripped later, when execution actually happens.

    The next useful comparison is a sanitized outgoing Ollama /api/chat payload and its original response for one such turn: does the request include the expected tool schema, and does the response contain native message.tool_calls? Please omit credentials and unrelated binary/chat content. These logs establish where execution stops; they don’t yet establish why native tool calls are missing.

  7. boondoggler commented on Oct 23, 2026

    @boondoggler
    Author

    Forgive my insolence, we are reaching my limits of understanding the internals here.

    So just to be clear, you want sanitized POST /API/chat data from a wireshark capture?

    I see references to tools, ie ghidrassistmcp_get_hexdump etc, but no message.tools.calls is found in the packets

    Note, I don't get the same response/stop/fail as I got in the last run, using the same "give me the bytes at" question, this time I just get this response in the query window:

    Assistant assistant
    2026-10-23 14-56-28

    {
    "address": "00100c58",
    "data": "0f 05 ba 8c b6 ....." ,
    "offset": 0,
    "size": 20
    }

    Those bytes are of course incorrect

  8. boondoggler commented on Oct 27, 2026

    @boondoggler
    Author

    So just to be clear, you want sanitized POST /API/chat data from a wireshark capture?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions