Skip to content

Conversation

@llvmbot
Copy link
Member

@llvmbot llvmbot commented Jul 16, 2025

Backport e8dc96d

Requested by: @JDevlieghere

@llvmbot
Copy link
Member Author

llvmbot commented Jul 16, 2025

@JDevlieghere What do you think about merging this PR to the release branch?

@llvmbot
Copy link
Member Author

llvmbot commented Jul 16, 2025

@llvm/pr-subscribers-lldb

Author: None (llvmbot)

Changes

Backport e8dc96d

Requested by: @JDevlieghere


Full diff: https://github.com/llvm/llvm-project/pull/149146.diff

1 Files Affected:

  • (modified) lldb/docs/use/mcp.md (+63-1)
diff --git a/lldb/docs/use/mcp.md b/lldb/docs/use/mcp.md
index 375c164fe771c..b7474246b54f3 100644
--- a/lldb/docs/use/mcp.md
+++ b/lldb/docs/use/mcp.md
@@ -75,7 +75,69 @@ Configuration example for [Visual Studio Code](https://code.visualstudio.com/doc
 }
 ```
 
-### Troubleshooting
+## Tools
+
+Tools are a primitive in the Model Context Protocol that enable servers to
+expose functionality to clients.
+
+LLDB's MCP integration exposes one tool, named `lldb_command` which allows the
+model to run the same commands a user would type in the LLDB command
+interpreter. It takes two arguments:
+
+1. The unique debugger ID as a number.
+2. The command and its arguments as a string.
+
+## Resources
+
+Resources are a primitive in the Model Context Protocol that allow servers to
+expose content that can be read by clients.
+
+LLDB's MCP integration exposes a resource for each debugger and target
+instance. Debugger resources are accessible using the following URI:
+
+```
+lldb://debugger/<debugger id>
+```
+
+Example output:
+
+```json
+{
+  "contents": [
+    {
+      "uri": "lldb://debugger/1",
+      "mimeType": "application/json",
+      "text": "{\"debugger_id\":1,\"name\":\"debugger_1\",\"num_targets\":1}"
+    }
+  ]
+}
+```
+
+Debuggers can contain one or more targets, which are accessible using the
+following URI:
+
+```
+lldb://debugger/<debugger id>/target/<target idx>
+```
+
+Example output:
+
+```json
+{
+  "contents": [
+    {
+      "uri": "lldb://debugger/1/target/0",
+      "mimeType": "application/json",
+      "text": "{\"arch\":\"arm64-apple-macosx26.0.0\",\"debugger_id\":1,\"dummy\":false,\"path\":\"/bin/count\",\"platform\":\"host\",\"selected\":true,\"target_idx\":0}"
+    }
+  ]
+}
+```
+
+Note that unlike the debugger id, which is unique, the target index is not
+stable and may be reused when a target is removed and a new target is added.
+
+## Troubleshooting
 
 The MCP server uses the `Host` log channel. You can enable logging with the
 `log enable` command.

@JDevlieghere
Copy link
Member

@JDevlieghere What do you think about merging this PR to the release branch?

Sounds good to me, but let's hear from @DavidSpickett who suggested the backport.

@DavidSpickett
Copy link
Collaborator

Sounds good to me

<spiderman pointing meme>

let's hear from @DavidSpickett who suggested the backport.

It's true the vast majority of people will go to the website no matter what, but I consider documentation part of a feature and this completes the MCP feature for 21 so I'd like it to be included.

@tru
Copy link
Collaborator

tru commented Jul 17, 2025

I am always happy to merge release notes and documentation :)

Add documentation for the tools and resources exposed by LLDB's MCP
server.

(cherry picked from commit e8dc96d)
@tru tru merged commit 38158a9 into llvm:release/21.x Jul 17, 2025
1 check was pending
@github-project-automation github-project-automation bot moved this from Needs Triage to Done in LLVM Release Status Jul 17, 2025
@tru tru deleted the issue149145 branch July 17, 2025 10:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Development

Successfully merging this pull request may close these issues.

4 participants