-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[lldb] Document MCP support in LLDB #145935
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
@llvm/pr-subscribers-lldb Author: Jonas Devlieghere (JDevlieghere) ChangesDocument how to use MCP support in LLDB. I expect this to change significantly as the feature matures. For now it covers configuring the server and two example clients. Full diff: https://github.com/llvm/llvm-project/pull/145935.diff 2 Files Affected:
diff --git a/lldb/docs/index.rst b/lldb/docs/index.rst
index 1ffdb08a1ca2c..d49d0d8d5a733 100644
--- a/lldb/docs/index.rst
+++ b/lldb/docs/index.rst
@@ -135,6 +135,7 @@ interesting areas to contribute to lldb.
use/ondemand
use/aarch64-linux
use/symbolfilejson
+ use/mcp
use/troubleshooting
use/links
Man Page <man/lldb>
diff --git a/lldb/docs/use/mcp.md b/lldb/docs/use/mcp.md
new file mode 100644
index 0000000000000..a89740545e5f4
--- /dev/null
+++ b/lldb/docs/use/mcp.md
@@ -0,0 +1,68 @@
+# Model Context Protocol (MCP)
+
+LLDB supports for the [Model Context Protocol][1] (MCP). This structured,
+machine-friendly protocol allows AI models to access and interact with external
+tools, such as the debugger. Using MCP, an AI agent can execute LLDB commands
+to control the debugger: set breakpoints, inspect memory, step through code.
+This can range from helping you run a specific command you can't immediately
+remember to a fully agent-driven debugging experiences
+
+## MCP Server
+
+To start the MCP server in LLDB, use the `protocol-server start` command.
+Specify `MCP` as the protocol and provide a URI to listen on. For example, to
+start listening for local TCP connections on port `59999`, use the following
+command:
+
+```
+(lldb) protocol-server start MCP listen://localhost:59999
+MCP server started with connection listeners: connection://[::1]:59999, connection://[127.0.0.1]:59999
+```
+
+The server will automatically stop when exiting LLDB, or it can be stopped
+explicitly with the `protocol-server stop` command.
+
+```
+(lldb) protocol-server stop MCP
+```
+
+## MCP Client
+
+MCP uses standard input/output (stdio) for communication between client and
+server. The exact configuration depends on the client, but most applications
+allow you to specify an MCP server as a binary and arguments. This means that
+you need to use something like `netcat` to connect to LLDB's MCP server and
+forward communication over stdio over the network connection.
+
+Configuration example for [Claude Code][2]:
+
+```
+{
+ "mcpServers": {
+ "tool": {
+ "command": "/usr/bin/nc",
+ "args": ["localhost", "59999"]
+ }
+ }
+}
+```
+
+Configuration example for [Visual Studio Code][3]:
+
+```
+{
+ "mcp": {
+ "servers": {
+ "lldb": {
+ "type": "stdio",
+ "command": "/usr/bin/nc",
+ "args": ["localhost", "59999"]
+ }
+ }
+ }
+}
+```
+
+[1]: https://modelcontextprotocol.io
+[2]: https://modelcontextprotocol.io/quickstart/user
+[3]: https://code.visualstudio.com/docs/copilot/chat/mcp-servers
|
lldb/docs/use/mcp.md
Outdated
|
||
LLDB supports for the [Model Context Protocol][1] (MCP). This structured, | ||
machine-friendly protocol allows AI models to access and interact with external | ||
tools, such as the debugger. Using MCP, an AI agent can execute LLDB commands |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
such as a debugger
if you're going to generically refer to debuggers. Or such as LLDB
if you prefer.
lldb/docs/use/mcp.md
Outdated
tools, such as the debugger. Using MCP, an AI agent can execute LLDB commands | ||
to control the debugger: set breakpoints, inspect memory, step through code. | ||
This can range from helping you run a specific command you can't immediately | ||
remember to a fully agent-driven debugging experiences |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
to full agent-driven
, drop the a
. Or rephrase to a fully agent-driven debugging experience
singular.
``` | ||
|
||
The server will automatically stop when exiting LLDB, or it can be stopped | ||
explicitly with the `protocol-server stop` command. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This means you still use the CLI while the server is active?
....does this mean you could run a command and ask the model what it thought of the output? That sounds cool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, how do you check if it is active? protocol-server
start again and it errors?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
....does this mean you could run a command and ask the model what it thought of the output?
Not right now, but that could be done using the "notification" feature in MCP.
Also, how do you check if it is active? protocol-server start again and it errors?
Correct
## MCP Server | ||
|
||
To start the MCP server in LLDB, use the `protocol-server start` command. | ||
Specify `MCP` as the protocol and provide a URI to listen on. For example, to |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I presume MCP is the only supported protocol at this time and the command will complain if you give it anything else, right?
No need to mention it if the command is going to give a decent error anyway.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for adding this, LGTM!
Document how to use MCP support in LLDB. I expect this to change significantly as the feature matures. For now it covers configuring the server and two example clients.