Skip to content

Add a plug-in API for MCP tools - #8604

Open
bdash wants to merge 3 commits into
devfrom
test_mcp_tool_api
Open

bdash wants to merge 3 commits into
devfrom
test_mcp_tool_api

Conversation

@bdash

@bdash bdash commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Plug-ins written in C++, Python or Rust can now register tools that Binary Ninja's MCP server offers to MCP clients. Each binding generates a tool's input schema and checks its arguments before the handler runs. A new guide explains how to write a tool in each language.

This also fixes CoreEnumFromString, which failed to compile for any enum type, and some Python API documentation behavior that was tripping over the changes.

Fixes #8484.

`CoreEnumFromString` returned the `size_t` from `BNCoreEnumFromString`.
A `size_t` does not implicitly convert to `std::optional<T>` for an enum
`T`, so every instantiation failed to compile. It now casts the value
to `T`.
…lliding

Truncation only checked single backticks, so it could split a ``literal``.
It now backs up to before an unclosed one.

A function whose name differed from another member's only by case, such as
`tool` beside `Tool`, got the same section label, which failed the build.
Its section is now titled `tool()`.
Previously, MCP tools were compiled into the MCP server, so a plug-in
could not offer its own.

Now plug-ins written in C++, Python or Rust can register MCP tools.
Each binding generates a tool's input schema from its parameters and
checks the arguments before the handler runs, so a handler only has to
do the tool's work. A new guide explains how to write a tool in each
language.

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Register custom MCP tools through Plugin registration

1 participant