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 ListSavedConfigs(ctx context.Context) ([]string, error)
- type RunConfig
- func (c *RunConfig) ParsePermissionProfile() (*RunConfig, error)
- func (c *RunConfig) ProcessVolumeMounts() error
- 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(secretManager secrets.Provider) (*RunConfig, error)
- func (c *RunConfig) WithStandardLabels() *RunConfig
- func (c *RunConfig) WithTransport(transport string) (*RunConfig, error)
- func (c *RunConfig) WriteJSON(w io.Writer) error
- type Runner
Constants ¶
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
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"` // 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"` // 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, debug bool, volumes []string, secretsList []string, authzConfigPath string, permissionProfile string, targetHost string, oidcIssuer string, oidcAudience string, oidcJwksURL string, oidcClientID string, ) *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 ¶
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 }
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
Directories
¶
Path | Synopsis |
---|---|
Package state provides functionality for storing and retrieving runner state across different environments (local filesystem, Kubernetes, etc.)
|
Package state provides functionality for storing and retrieving runner state across different environments (local filesystem, Kubernetes, etc.) |