This PR adds an MCP (Model Context Protocol ) server to LLDB. For motivation and background, please refer to the corresponding RFC: https://discourse.llvm.org/t/rfc-adding-mcp-support-to-lldb/86798 I implemented this as a new kind of plugin. The idea is that we could support multiple protocol servers (e.g. if we want to support DAP from within LLDB). This also introduces a corresponding top-level command (`protocol-server`) with two subcommands to `start` and `stop` the server. ``` (lldb) protocol-server start MCP tcp://localhost:1234 MCP server started with connection listeners: connection://[::1]:1234, connection://[127.0.0.1]:1234 ``` The MCP sever supports one tool (`lldb_command`) which executes a command, but can easily be extended with more commands.
22 lines
805 B
C++
22 lines
805 B
C++
//===-- ProtocolServer.cpp ------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "lldb/Core/ProtocolServer.h"
|
|
#include "lldb/Core/PluginManager.h"
|
|
|
|
using namespace lldb_private;
|
|
using namespace lldb;
|
|
|
|
ProtocolServerSP ProtocolServer::Create(llvm::StringRef name,
|
|
Debugger &debugger) {
|
|
if (ProtocolServerCreateInstance create_callback =
|
|
PluginManager::GetProtocolCreateCallbackForPluginName(name))
|
|
return create_callback(debugger);
|
|
return nullptr;
|
|
}
|