Documentation
¶
Overview ¶
Package runner provides functionality for running MCP servers
Package runner provides functionality for running MCP servers ¶
Package runner provides functionality for running MCP servers
Index ¶
- Constants
- func DeleteSavedConfig(ctx context.Context, name string) error
- func HandleProtocolScheme(ctx context.Context, runtime rt.Runtime, serverOrImage string, ...) (string, error)
- func IsImageProtocolScheme(serverOrImage string) bool
- func ListSavedConfigs(ctx context.Context) ([]string, error)
- type RunConfig
- func (c *RunConfig) ParsePermissionProfile() (*RunConfig, error)
- func (c *RunConfig) ProcessVolumeMounts() error
- func (c *RunConfig) WithAudit(config *audit.Config) *RunConfig
- func (c *RunConfig) WithAuthz(config *authz.Config) *RunConfig
- func (c *RunConfig) WithContainerName() *RunConfig
- func (c *RunConfig) WithEnvironmentVariables(envVarStrings []string) (*RunConfig, error)
- func (c *RunConfig) WithPorts(port, targetPort int) (*RunConfig, error)
- func (c *RunConfig) WithSecrets(ctx context.Context, secretManager secrets.Provider) (*RunConfig, error)
- func (c *RunConfig) WithStandardLabels() *RunConfig
- func (c *RunConfig) WithTransport(t string) (*RunConfig, error)
- func (c *RunConfig) WriteJSON(w io.Writer) error
- type Runner
Constants ¶
const ( UVXScheme = "uvx://" NPXScheme = "npx://" GOScheme = "go://" )
Protocol schemes
const DefaultAppName = "toolhive"
DefaultAppName is the default application name used for state storage
Variables ¶
This section is empty.
Functions ¶
func DeleteSavedConfig ¶
DeleteSavedConfig deletes a saved run configuration
func HandleProtocolScheme ¶ added in v0.0.33
func HandleProtocolScheme( ctx context.Context, runtime rt.Runtime, serverOrImage string, caCertPath string, ) (string, error)
HandleProtocolScheme checks if the serverOrImage string contains a protocol scheme (uvx://, npx://, or go://) and builds a Docker image for it if needed. Returns the Docker image name to use and any error encountered.
func IsImageProtocolScheme ¶ added in v0.0.35
IsImageProtocolScheme checks if the serverOrImage string contains a protocol scheme (uvx://, npx://, or go://)
Types ¶
type RunConfig ¶
type RunConfig struct {
// Image is the Docker image to run
Image string `json:"image" yaml:"image"`
// CmdArgs are the arguments to pass to the container
CmdArgs []string `json:"cmd_args,omitempty" yaml:"cmd_args,omitempty"`
// Name is the name of the MCP server
Name string `json:"name" yaml:"name"`
// ContainerName is the name of the container
ContainerName string `json:"container_name" yaml:"container_name"`
// BaseName is the base name used for the container (without prefixes)
BaseName string `json:"base_name" yaml:"base_name"`
// Transport is the transport mode (sse or stdio)
Transport types.TransportType `json:"transport" yaml:"transport"`
// Host is the host for the HTTP proxy
Host string `json:"host" yaml:"host"`
// Port is the port for the HTTP proxy to listen on (host port)
Port int `json:"port" yaml:"port"`
// TargetPort is the port for the container to expose (only applicable to SSE transport)
TargetPort int `json:"target_port,omitempty" yaml:"target_port,omitempty"`
// TargetHost is the host to forward traffic to (only applicable to SSE transport)
TargetHost string `json:"target_host,omitempty" yaml:"target_host,omitempty"`
// PermissionProfileNameOrPath is the name or path of the permission profile
PermissionProfileNameOrPath string `json:"permission_profile_name_or_path,omitempty" yaml:"permission_profile_name_or_path,omitempty"` //nolint:lll
// PermissionProfile is the permission profile to use
PermissionProfile *permissions.Profile `json:"permission_profile" yaml:"permission_profile"`
// EnvVars are the parsed environment variables as key-value pairs
EnvVars map[string]string `json:"env_vars,omitempty" yaml:"env_vars,omitempty"`
// Debug indicates whether debug mode is enabled
Debug bool `json:"debug,omitempty" yaml:"debug,omitempty"`
// Volumes are the directory mounts to pass to the container
// Format: "host-path:container-path[:ro]"
Volumes []string `json:"volumes,omitempty" yaml:"volumes,omitempty"`
// ContainerLabels are the labels to apply to the container
ContainerLabels map[string]string `json:"container_labels,omitempty" yaml:"container_labels,omitempty"`
// OIDCConfig contains OIDC configuration
OIDCConfig *auth.JWTValidatorConfig `json:"oidc_config,omitempty" yaml:"oidc_config,omitempty"`
// AuthzConfig contains the authorization configuration
AuthzConfig *authz.Config `json:"authz_config,omitempty" yaml:"authz_config,omitempty"`
// AuthzConfigPath is the path to the authorization configuration file
AuthzConfigPath string `json:"authz_config_path,omitempty" yaml:"authz_config_path,omitempty"`
// AuditConfig contains the audit logging configuration
AuditConfig *audit.Config `json:"audit_config,omitempty" yaml:"audit_config,omitempty"`
// AuditConfigPath is the path to the audit configuration file
AuditConfigPath string `json:"audit_config_path,omitempty" yaml:"audit_config_path,omitempty"`
// TelemetryConfig contains the OpenTelemetry configuration
TelemetryConfig *telemetry.Config `json:"telemetry_config,omitempty" yaml:"telemetry_config,omitempty"`
// Secrets are the secret parameters to pass to the container
// Format: "<secret name>,target=<target environment variable>"
Secrets []string `json:"secrets,omitempty" yaml:"secrets,omitempty"`
// K8sPodTemplatePatch is a JSON string to patch the Kubernetes pod template
// Only applicable when using Kubernetes runtime
K8sPodTemplatePatch string `json:"k8s_pod_template_patch,omitempty" yaml:"k8s_pod_template_patch,omitempty"`
// Runtime is the container runtime to use (not serialized)
Runtime rt.Runtime `json:"-" yaml:"-"`
}
RunConfig contains all the configuration needed to run an MCP server It is serializable to JSON and YAML
func NewRunConfig ¶
func NewRunConfig() *RunConfig
NewRunConfig creates a new RunConfig with default values
func NewRunConfigFromFlags ¶
func NewRunConfigFromFlags( runtime rt.Runtime, cmdArgs []string, name string, host string, debug bool, volumes []string, secretsList []string, authzConfigPath string, auditConfigPath string, enableAudit bool, permissionProfile string, targetHost string, oidcIssuer string, oidcAudience string, oidcJwksURL string, oidcClientID string, otelEndpoint string, otelServiceName string, otelSamplingRate float64, otelHeaders []string, otelInsecure bool, otelEnablePrometheusMetricsPath bool, ) *RunConfig
NewRunConfigFromFlags creates a new RunConfig with values from command-line flags
func (*RunConfig) ParsePermissionProfile ¶
ParsePermissionProfile loads and sets the permission profile
func (*RunConfig) ProcessVolumeMounts ¶
ProcessVolumeMounts processes volume mounts and adds them to the permission profile
func (*RunConfig) WithContainerName ¶
WithContainerName generates container name if not already set
func (*RunConfig) WithEnvironmentVariables ¶
WithEnvironmentVariables parses and sets environment variables
func (*RunConfig) WithSecrets ¶
func (c *RunConfig) WithSecrets(ctx context.Context, secretManager secrets.Provider) (*RunConfig, error)
WithSecrets processes secrets and adds them to environment variables
func (*RunConfig) WithStandardLabels ¶
WithStandardLabels adds standard labels to the container
func (*RunConfig) WithTransport ¶
WithTransport parses and sets the transport type
type Runner ¶
type Runner struct {
// Config is the configuration for the runner
Config *RunConfig
// contains filtered or unexported fields
}
Runner is responsible for running an MCP server with the provided configuration
func LoadState ¶
LoadState loads the runner configuration from the state store This is a static method that returns a new Runner instance
func (*Runner) Cleanup ¶ added in v0.0.47
Cleanup performs cleanup operations for the runner, including shutting down telemetry.