pluginbridge / Source /Plugin /McpServer.h
RAM2118's picture
Sprint 7: Route MCP param ops through in-process plugin (fix EQ invisible in GUI)
8ef64a9 verified
Raw
History Blame Contribute Delete
1.31 kB
#pragma once
#include <thread>
#include <atomic>
#include <string>
#include <memory>
#include <functional>
#include <vector>
#include <map>
namespace httplib { class Server; }
class HelperConnection;
class McpServer
{
public:
McpServer(HelperConnection& helper);
~McpServer();
void start();
void stop();
bool isRunning() const;
int getPort() const { return port; }
// Callbacks set by Processor
std::function<std::string()> getAnalysisCallback;
std::function<std::string()> channelNameCallback;
// Param callbacks — wired to inProcessPlugin when SAFE, null when UNSAFE
std::function<std::string(const std::string& keyword)> searchParamCallback;
std::function<std::string(const std::vector<int>& ids)> getParamsCallback;
std::function<bool(const std::map<int,float>& values)> setParamsCallback;
private:
void setupRoutes();
std::string handleInitialize(const std::string& requestBody);
std::string handleToolsList(const std::string& requestBody);
std::string handleToolsCall(const std::string& requestBody);
std::unique_ptr<httplib::Server> server;
std::thread serverThread;
std::atomic<bool> running{false};
int port = 0;
std::string sessionId;
bool initialized = false;
HelperConnection& helper;
};