tool

package
v0.4.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 29, 2026 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
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

func NewManager(logger *slog.Logger) *Manager

NewManager creates a manager with no servers registered.

func (*Manager) AdoptFrom

func (m *Manager) AdoptFrom(source *Manager)

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) Close

func (m *Manager) Close() error

Close shuts down all MCP server connections.

func (*Manager) Execute

func (m *Manager) Execute(ctx context.Context, call llm.ToolCall) (string, error)

Execute runs a single tool call and returns the text result.

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

func (m *Manager) ServerNames() []string

ServerNames returns the names of all registered MCP servers.

func (*Manager) ToolDefs

func (m *Manager) ToolDefs() []llm.ToolDef

ToolDefs returns OpenAI-format tool definitions for all registered tools.

func (*Manager) ToolNames

func (m *Manager) ToolNames() []string

ToolNames returns the names of all registered MCP tools.

func (*Manager) UnregisterServer added in v0.1.0

func (m *Manager) UnregisterServer(name string) error

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.

type ServerStatus added in v0.1.0

type ServerStatus struct {
	Name      string
	Command   string
	Args      []string
	ToolNames []string
	Status    string // "connected", "error", "stopped"
}

ServerStatus exposes metadata about a registered MCP server.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL