Documentation
¶
Index ¶
- Constants
- type LifecycleManager
- func (lm *LifecycleManager) AddPlugin(ctx context.Context, name string, cfg config.PluginConfig) error
- func (lm *LifecycleManager) AddTool(ctx context.Context, name string, cfg config.ToolConfig) error
- func (lm *LifecycleManager) ListPlugins() []PluginStatus
- func (lm *LifecycleManager) ListTools() []ServerStatus
- func (lm *LifecycleManager) RemovePlugin(ctx context.Context, name string) error
- func (lm *LifecycleManager) RemoveTool(ctx context.Context, name string) error
- func (lm *LifecycleManager) ToolManager() *Manager
- func (lm *LifecycleManager) TrackPlugin(name string, cfg config.PluginConfig)
- type Manager
- func (m *Manager) AdoptFrom(source *Manager)
- func (m *Manager) Close() error
- func (m *Manager) Execute(ctx context.Context, call llm.ToolCall) (string, error)
- func (m *Manager) RegisterServer(ctx context.Context, name, command string, args []string, ...) error
- func (m *Manager) RegisterSession(ctx context.Context, name string, session *mcp.ClientSession) error
- func (m *Manager) ServerInfo(name string) (ServerStatus, bool)
- func (m *Manager) ServerNames() []string
- func (m *Manager) ToolDefs() []llm.ToolDef
- func (m *Manager) ToolNames() []string
- func (m *Manager) UnregisterServer(name string) error
- type PluginStatus
- type ServerStatus
Constants ¶
const DefaultMaxTools = 50
DefaultMaxTools is the combined limit for tools + plugins.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type LifecycleManager ¶ added in v0.1.0
type LifecycleManager struct {
// contains filtered or unexported fields
}
LifecycleManager coordinates adding and removing MCP tools and plugins at runtime, persisting changes to the TOML config file.
func NewLifecycleManager ¶ added in v0.1.0
func NewLifecycleManager(toolMgr *Manager, configPath string, maxTools int, logger *slog.Logger) *LifecycleManager
NewLifecycleManager creates a lifecycle manager wrapping the given tool.Manager. configPath is the path to denkeeper.toml. maxTools is the combined limit (0 uses DefaultMaxTools).
func (*LifecycleManager) AddPlugin ¶ added in v0.1.0
func (lm *LifecycleManager) AddPlugin(ctx context.Context, name string, cfg config.PluginConfig) error
AddPlugin validates, optionally spawns, registers, and persists the [plugins.<name>] section.
func (*LifecycleManager) AddTool ¶ added in v0.1.0
func (lm *LifecycleManager) AddTool(ctx context.Context, name string, cfg config.ToolConfig) error
AddTool validates the config, spawns the MCP server, registers it, and persists the [tools.<name>] section to denkeeper.toml.
func (*LifecycleManager) ListPlugins ¶ added in v0.1.0
func (lm *LifecycleManager) ListPlugins() []PluginStatus
ListPlugins returns metadata for all registered plugins.
func (*LifecycleManager) ListTools ¶ added in v0.1.0
func (lm *LifecycleManager) ListTools() []ServerStatus
ListTools returns metadata for all registered MCP tool servers.
func (*LifecycleManager) RemovePlugin ¶ added in v0.1.0
func (lm *LifecycleManager) RemovePlugin(ctx context.Context, name string) error
RemovePlugin unregisters and removes [plugins.<name>] from denkeeper.toml.
func (*LifecycleManager) RemoveTool ¶ added in v0.1.0
func (lm *LifecycleManager) RemoveTool(ctx context.Context, name string) error
RemoveTool unregisters the MCP server and removes [tools.<name>] from denkeeper.toml.
func (*LifecycleManager) ToolManager ¶ added in v0.1.0
func (lm *LifecycleManager) ToolManager() *Manager
ToolManager returns the underlying tool.Manager.
func (*LifecycleManager) TrackPlugin ¶ added in v0.1.0
func (lm *LifecycleManager) TrackPlugin(name string, cfg config.PluginConfig)
TrackPlugin registers a plugin that was loaded at startup so ListPlugins can report it. This avoids re-registering already-running plugins.
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager manages MCP tool server connections and tool execution.
func NewManager ¶
NewManager creates a manager with no servers registered.
func (*Manager) AdoptFrom ¶
AdoptFrom copies all registered tool connections from source into m. Both managers then share the same underlying *mcp.ClientSession pointers, which is safe for concurrent use. Use this to give per-agent managers access to shared external MCP servers without re-spawning subprocesses.
func (*Manager) RegisterServer ¶
func (m *Manager) RegisterServer(ctx context.Context, name, command string, args []string, env map[string]string) error
RegisterServer spawns an MCP server subprocess, connects to it over stdio, and discovers its available tools.
func (*Manager) RegisterSession ¶
func (m *Manager) RegisterSession(ctx context.Context, name string, session *mcp.ClientSession) error
RegisterSession registers an already-connected MCP client session without spawning a subprocess. Use this for in-process servers (e.g. configmcp).
func (*Manager) ServerInfo ¶ added in v0.1.0
func (m *Manager) ServerInfo(name string) (ServerStatus, bool)
ServerInfo returns metadata about a registered server. The second return value is false if the server is not registered.
func (*Manager) ServerNames ¶ added in v0.1.0
ServerNames returns the names of all registered MCP servers.
func (*Manager) ToolDefs ¶
ToolDefs returns OpenAI-format tool definitions for all registered tools.
func (*Manager) UnregisterServer ¶ added in v0.1.0
UnregisterServer stops the MCP server for the given config name, removes its tools from the tool map, and closes the connection. Returns an error if the server is not registered.
type PluginStatus ¶ added in v0.1.0
type PluginStatus struct {
Name string `json:"name"`
Type string `json:"type"`
Command string `json:"command,omitempty"`
Image string `json:"image,omitempty"`
Args []string `json:"args,omitempty"`
Capabilities []string `json:"capabilities,omitempty"`
ToolNames []string `json:"tool_names"`
Status string `json:"status"`
}
PluginStatus exposes metadata about a registered plugin.