Documentation
¶
Overview ¶
Package runner provides functionality for running MCP servers
Package runner provides functionality for running MCP servers
Index ¶
- Constants
- func BuildFromProtocolSchemeWithName(ctx context.Context, imageManager images.ImageManager, serverOrImage string, ...) (string, error)
- func CleanupTempPermissionProfile(permissionProfilePath string) error
- func CreatePermissionProfileFile(serverName string, permProfile *permissions.Profile) (string, error)
- func GetSupportedMiddlewareFactories() map[string]types.MiddlewareFactory
- func HandleProtocolScheme(ctx context.Context, imageManager images.ImageManager, serverOrImage string, ...) (string, error)
- func IsImageProtocolScheme(serverOrImage string) bool
- func PopulateMiddlewareConfigs(config *RunConfig) error
- type CLIEnvVarValidator
- type DetachedEnvVarValidator
- type EnvVarValidator
- type RemoteAuthConfig
- type RemoteAuthHandler
- type RunConfig
- func (c *RunConfig) GetBaseName() string
- func (c *RunConfig) GetPort() int
- func (c *RunConfig) SaveState(ctx context.Context) error
- func (c *RunConfig) ValidateSecrets(ctx context.Context, secretManager secrets.Provider) error
- func (c *RunConfig) WithAudit(config *audit.Config) *RunConfig
- func (c *RunConfig) WithAuthz(config *authz.Config) *RunConfig
- func (c *RunConfig) WithContainerName() (*RunConfig, bool)
- func (c *RunConfig) WithEnvFile(filePath string) (*RunConfig, error)
- func (c *RunConfig) WithEnvFilesFromDirectory(dirPath string) (*RunConfig, error)
- func (c *RunConfig) WithEnvironmentVariables(envVars map[string]string) (*RunConfig, error)
- func (c *RunConfig) WithMiddlewareConfig(middlewareConfig []types.MiddlewareConfig) *RunConfig
- func (c *RunConfig) WithPorts(proxyPort, 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 RunConfigBuilder
- func (b *RunConfigBuilder) Build(ctx context.Context, imageMetadata *registry.ImageMetadata, ...) (*RunConfig, error)
- func (b *RunConfigBuilder) WithAuditConfigPath(path string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithAuditEnabled(enableAudit bool, auditConfigPath string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithAuthzConfig(config *authz.Config) *RunConfigBuilder
- func (b *RunConfigBuilder) WithAuthzConfigPath(path string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithCmdArgs(args []string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithDebug(debug bool) *RunConfigBuilder
- func (b *RunConfigBuilder) WithEnvFile(filePath string) (*RunConfigBuilder, error)
- func (b *RunConfigBuilder) WithEnvFilesFromDirectory(dirPath string) (*RunConfigBuilder, error)
- func (b *RunConfigBuilder) WithGroup(groupName string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithHost(host string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithIgnoreConfig(ignoreConfig *ignore.Config) *RunConfigBuilder
- func (b *RunConfigBuilder) WithImage(image string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithK8sPodPatch(patch string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithLabels(labelStrings []string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithMiddlewareConfig(middlewareConfig []types.MiddlewareConfig) *RunConfigBuilder
- func (b *RunConfigBuilder) WithMiddlewareFromFlags(oidcConfig *auth.TokenValidatorConfig, toolsFilter []string, ...) *RunConfigBuilder
- func (b *RunConfigBuilder) WithName(name string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithNetworkIsolation(isolate bool) *RunConfigBuilder
- func (b *RunConfigBuilder) WithOIDCConfig(...) *RunConfigBuilder
- func (b *RunConfigBuilder) WithPermissionProfile(profile *permissions.Profile) *RunConfigBuilder
- func (b *RunConfigBuilder) WithPermissionProfileNameOrPath(profile string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithProxyMode(mode types.ProxyMode) *RunConfigBuilder
- func (b *RunConfigBuilder) WithRemoteAuth(config *RemoteAuthConfig) *RunConfigBuilder
- func (b *RunConfigBuilder) WithRemoteURL(remoteURL string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithRuntime(deployer rt.Deployer) *RunConfigBuilder
- func (b *RunConfigBuilder) WithSecrets(secrets []string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithTargetHost(targetHost string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithTelemetryConfig(otelEndpoint string, otelEnablePrometheusMetricsPath bool, ...) *RunConfigBuilder
- func (b *RunConfigBuilder) WithToolOverride(toolOverride map[string]ToolOverride) *RunConfigBuilder
- func (b *RunConfigBuilder) WithToolOverrideFile(toolOverrideFile string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithToolsFilter(toolsFilter []string) *RunConfigBuilder
- func (b *RunConfigBuilder) WithTransportAndPorts(mcpTransport string, port, targetPort int) *RunConfigBuilder
- func (b *RunConfigBuilder) WithVolumes(volumes []string) *RunConfigBuilder
- type Runner
- func (r *Runner) AddMiddleware(middleware types.Middleware)
- func (r *Runner) Cleanup(ctx context.Context) error
- func (r *Runner) GetConfig() types.RunnerConfig
- func (r *Runner) Run(ctx context.Context) error
- func (r *Runner) SetAuthInfoHandler(handler http.Handler)
- func (r *Runner) SetPrometheusHandler(handler http.Handler)
- type ToolOverride
Constants ¶
const ( UVXScheme = "uvx://" NPXScheme = "npx://" GOScheme = "go://" )
Protocol schemes
const CurrentSchemaVersion = "v0.1.0"
CurrentSchemaVersion is the current version of the RunConfig schema TODO: Set to "v1.0.0" when we clean up the middleware configuration.
Variables ¶
This section is empty.
Functions ¶
func BuildFromProtocolSchemeWithName ¶ added in v0.2.3
func BuildFromProtocolSchemeWithName( ctx context.Context, imageManager images.ImageManager, serverOrImage string, caCertPath string, imageName string, dryRun bool, ) (string, error)
BuildFromProtocolSchemeWithName checks if the serverOrImage string contains a protocol scheme (uvx://, npx://, or go://) and builds a Docker image for it if needed with a custom image name. If imageName is empty, a default name will be generated. If dryRun is true, returns the Dockerfile content instead of building the image. Returns the Docker image name (or Dockerfile content if dryRun) and any error encountered.
func CleanupTempPermissionProfile ¶ added in v0.0.48
CleanupTempPermissionProfile removes a temporary permission profile file if it was created by toolhive
func CreatePermissionProfileFile ¶ added in v0.0.48
func CreatePermissionProfileFile(serverName string, permProfile *permissions.Profile) (string, error)
CreatePermissionProfileFile creates a temporary file with the permission profile
func GetSupportedMiddlewareFactories ¶ added in v0.2.8
func GetSupportedMiddlewareFactories() map[string]types.MiddlewareFactory
GetSupportedMiddlewareFactories returns a map of supported middleware types to their factory functions
func HandleProtocolScheme ¶ added in v0.0.33
func HandleProtocolScheme( ctx context.Context, imageManager images.ImageManager, 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://)
func PopulateMiddlewareConfigs ¶ added in v0.2.8
PopulateMiddlewareConfigs populates the MiddlewareConfigs slice based on the RunConfig settings This function serves as a bridge between the old configuration style and the new generic middleware system
Types ¶
type CLIEnvVarValidator ¶ added in v0.1.0
type CLIEnvVarValidator struct{}
CLIEnvVarValidator implements the EnvVarValidator interface for CLI usage. If any missing, mandatory variables are found, this code will prompt the user to supply them through stdin.
func (*CLIEnvVarValidator) Validate ¶ added in v0.1.0
func (*CLIEnvVarValidator) Validate( ctx context.Context, metadata *registry.ImageMetadata, runConfig *RunConfig, suppliedEnvVars map[string]string, ) (map[string]string, error)
Validate checks that all required environment variables and secrets are provided and returns the processed environment variables to be set.
type DetachedEnvVarValidator ¶ added in v0.1.0
type DetachedEnvVarValidator struct{}
DetachedEnvVarValidator implements the EnvVarValidator interface for scenarios where the user cannot be prompted for input. Any missing, mandatory variables will result in an error being returned.
func (*DetachedEnvVarValidator) Validate ¶ added in v0.1.0
func (*DetachedEnvVarValidator) Validate( _ context.Context, metadata *registry.ImageMetadata, runConfig *RunConfig, suppliedEnvVars map[string]string, ) (map[string]string, error)
Validate checks that all required environment variables and secrets are provided and returns the processed environment variables to be set.
type EnvVarValidator ¶ added in v0.1.0
type EnvVarValidator interface { // Validate checks that all required environment variables and secrets are provided // and returns the processed environment variables to be set. Validate( ctx context.Context, metadata *registry.ImageMetadata, runConfig *RunConfig, suppliedEnvVars map[string]string, ) (map[string]string, error) }
EnvVarValidator defines the interface for checking that the expected environment variables and secrets have been supplied when creating a workload. This is implemented as a strategy pattern since the handling is different for the CLI vs the API and k8s.
type RemoteAuthConfig ¶ added in v0.2.11
type RemoteAuthConfig struct { ClientID string ClientSecret string ClientSecretFile string Scopes []string SkipBrowser bool Timeout time.Duration `swaggertype:"string" example:"5m"` CallbackPort int // OAuth endpoint configuration (from registry) Issuer string AuthorizeURL string TokenURL string // Headers for HTTP requests Headers []*registry.Header // Environment variables for the client EnvVars []*registry.EnvVar // OAuth parameters for server-specific customization OAuthParams map[string]string }
RemoteAuthConfig holds configuration for remote authentication
type RemoteAuthHandler ¶ added in v0.2.11
type RemoteAuthHandler struct {
// contains filtered or unexported fields
}
RemoteAuthHandler handles authentication for remote MCP servers. Supports OAuth/OIDC-based authentication with automatic discovery.
func NewRemoteAuthHandler ¶ added in v0.2.11
func NewRemoteAuthHandler(config *RemoteAuthConfig) *RemoteAuthHandler
NewRemoteAuthHandler creates a new remote authentication handler
func (*RemoteAuthHandler) Authenticate ¶ added in v0.2.11
func (h *RemoteAuthHandler) Authenticate(ctx context.Context, remoteURL string) (*oauth2.TokenSource, error)
Authenticate is the main entry point for remote MCP server authentication
type RunConfig ¶
type RunConfig struct { // SchemaVersion is the version of the RunConfig schema SchemaVersion string `json:"schema_version" yaml:"schema_version"` // Image is the Docker image to run Image string `json:"image" yaml:"image"` // RemoteURL is the URL of the remote MCP server (if running remotely) RemoteURL string `json:"remote_url,omitempty" yaml:"remote_url,omitempty"` // RemoteAuthConfig contains OAuth configuration for remote MCP servers RemoteAuthConfig *RemoteAuthConfig `json:"remote_auth_config,omitempty" yaml:"remote_auth_config,omitempty"` // 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,omitempty" yaml:"container_name,omitempty"` // BaseName is the base name used for the container (without prefixes) BaseName string `json:"base_name,omitempty" yaml:"base_name,omitempty"` // Transport is the transport mode (stdio, sse, or streamable-http) 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.TokenValidatorConfig `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"` // Deployer is the container runtime to use (not serialized) Deployer rt.Deployer `json:"-" yaml:"-"` // IsolateNetwork indicates whether to isolate the network for the container IsolateNetwork bool `json:"isolate_network,omitempty" yaml:"isolate_network,omitempty"` // ProxyMode is the proxy mode for stdio transport ("sse" or "streamable-http") ProxyMode types.ProxyMode `json:"proxy_mode,omitempty" yaml:"proxy_mode,omitempty"` // ThvCABundle is the path to the CA certificate bundle for ToolHive HTTP operations ThvCABundle string `json:"thv_ca_bundle,omitempty" yaml:"thv_ca_bundle,omitempty"` // JWKSAuthTokenFile is the path to file containing auth token for JWKS/OIDC requests JWKSAuthTokenFile string `json:"jwks_auth_token_file,omitempty" yaml:"jwks_auth_token_file,omitempty"` // Group is the name of the group this workload belongs to, if any Group string `json:"group,omitempty" yaml:"group,omitempty"` // ToolsFilter is the list of tools to filter ToolsFilter []string `json:"tools_filter,omitempty" yaml:"tools_filter,omitempty"` // ToolOverride is the map of tool names to override. Tools to override are // specified as ToolOverride structs. ToolOverride map[string]ToolOverride `json:"tool_override,omitempty" yaml:"tool_override,omitempty"` // ToolOverrideFile is the path to a file containing tool overrides. // The file is a JSON struct mapping actual names to ToolOverride structs. ToolOverrideFile string `json:"tool_override_file,omitempty" yaml:"tool_override_file,omitempty"` // IgnoreConfig contains configuration for ignore processing IgnoreConfig *ignore.Config `json:"ignore_config,omitempty" yaml:"ignore_config,omitempty"` // MiddlewareConfigs contains the list of middleware to apply to the transport // and the configuration for each middleware. MiddlewareConfigs []types.MiddlewareConfig `json:"middleware_configs,omitempty" yaml:"middleware_configs,omitempty"` }
RunConfig contains all the configuration needed to run an MCP server It is serializable to JSON and YAML NOTE: This format is importable and exportable, and as a result should be considered part of ToolHive's API contract.
func NewRunConfig ¶
func NewRunConfig() *RunConfig
NewRunConfig creates a new RunConfig with default values
func (*RunConfig) GetBaseName ¶ added in v0.2.6
GetBaseName returns the base name for the run configuration
func (*RunConfig) GetPort ¶ added in v0.2.8
GetPort returns the port from the runner config (implements types.RunnerConfig)
func (*RunConfig) SaveState ¶ added in v0.2.4
SaveState saves the run configuration to the state store
func (*RunConfig) ValidateSecrets ¶ added in v0.1.8
ValidateSecrets checks if the secrets can be parsed and are valid
func (*RunConfig) WithContainerName ¶
WithContainerName generates container name if not already set Returns the config and a boolean indicating if the name was sanitized
func (*RunConfig) WithEnvFile ¶ added in v0.2.11
WithEnvFile processes a single environment file and adds it to environment variables
func (*RunConfig) WithEnvFilesFromDirectory ¶ added in v0.2.11
WithEnvFilesFromDirectory processes environment files from a directory and adds them to environment variables
func (*RunConfig) WithEnvironmentVariables ¶
WithEnvironmentVariables sets environment variables
func (*RunConfig) WithMiddlewareConfig ¶ added in v0.2.4
func (c *RunConfig) WithMiddlewareConfig(middlewareConfig []types.MiddlewareConfig) *RunConfig
WithMiddlewareConfig adds middleware configuration to the RunConfig
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 RunConfigBuilder ¶ added in v0.1.6
type RunConfigBuilder struct {
// contains filtered or unexported fields
}
RunConfigBuilder provides a fluent interface for building RunConfig instances
func NewRunConfigBuilder ¶ added in v0.1.6
func NewRunConfigBuilder() *RunConfigBuilder
NewRunConfigBuilder creates a new RunConfigBuilder with default values
func (*RunConfigBuilder) Build ¶ added in v0.1.6
func (b *RunConfigBuilder) Build( ctx context.Context, imageMetadata *registry.ImageMetadata, envVars map[string]string, envVarValidator EnvVarValidator, ) (*RunConfig, error)
Build creates the final RunConfig instance with validation and processing
func (*RunConfigBuilder) WithAuditConfigPath ¶ added in v0.1.6
func (b *RunConfigBuilder) WithAuditConfigPath(path string) *RunConfigBuilder
WithAuditConfigPath sets the audit config path
func (*RunConfigBuilder) WithAuditEnabled ¶ added in v0.1.6
func (b *RunConfigBuilder) WithAuditEnabled(enableAudit bool, auditConfigPath string) *RunConfigBuilder
WithAuditEnabled configures audit settings
func (*RunConfigBuilder) WithAuthzConfig ¶ added in v0.2.8
func (b *RunConfigBuilder) WithAuthzConfig(config *authz.Config) *RunConfigBuilder
WithAuthzConfig sets the authorization config data
func (*RunConfigBuilder) WithAuthzConfigPath ¶ added in v0.1.6
func (b *RunConfigBuilder) WithAuthzConfigPath(path string) *RunConfigBuilder
WithAuthzConfigPath sets the authorization config path
func (*RunConfigBuilder) WithCmdArgs ¶ added in v0.1.6
func (b *RunConfigBuilder) WithCmdArgs(args []string) *RunConfigBuilder
WithCmdArgs sets the command arguments
func (*RunConfigBuilder) WithDebug ¶ added in v0.1.6
func (b *RunConfigBuilder) WithDebug(debug bool) *RunConfigBuilder
WithDebug sets debug mode
func (*RunConfigBuilder) WithEnvFile ¶ added in v0.2.11
func (b *RunConfigBuilder) WithEnvFile(filePath string) (*RunConfigBuilder, error)
WithEnvFile adds environment variables from a single file
func (*RunConfigBuilder) WithEnvFilesFromDirectory ¶ added in v0.2.11
func (b *RunConfigBuilder) WithEnvFilesFromDirectory(dirPath string) (*RunConfigBuilder, error)
WithEnvFilesFromDirectory adds environment variables from all files in a directory
func (*RunConfigBuilder) WithGroup ¶ added in v0.2.1
func (b *RunConfigBuilder) WithGroup(groupName string) *RunConfigBuilder
WithGroup sets the group name for the workload
func (*RunConfigBuilder) WithHost ¶ added in v0.1.6
func (b *RunConfigBuilder) WithHost(host string) *RunConfigBuilder
WithHost sets the host (applies default if empty)
func (*RunConfigBuilder) WithIgnoreConfig ¶ added in v0.2.1
func (b *RunConfigBuilder) WithIgnoreConfig(ignoreConfig *ignore.Config) *RunConfigBuilder
WithIgnoreConfig sets the ignore configuration
func (*RunConfigBuilder) WithImage ¶ added in v0.1.6
func (b *RunConfigBuilder) WithImage(image string) *RunConfigBuilder
WithImage sets the Docker image
func (*RunConfigBuilder) WithK8sPodPatch ¶ added in v0.1.6
func (b *RunConfigBuilder) WithK8sPodPatch(patch string) *RunConfigBuilder
WithK8sPodPatch sets the Kubernetes pod template patch
func (*RunConfigBuilder) WithLabels ¶ added in v0.1.9
func (b *RunConfigBuilder) WithLabels(labelStrings []string) *RunConfigBuilder
WithLabels sets custom labels from command-line flags
func (*RunConfigBuilder) WithMiddlewareConfig ¶ added in v0.2.4
func (b *RunConfigBuilder) WithMiddlewareConfig(middlewareConfig []types.MiddlewareConfig) *RunConfigBuilder
WithMiddlewareConfig sets the middleware configuration
func (*RunConfigBuilder) WithMiddlewareFromFlags ¶ added in v0.2.8
func (b *RunConfigBuilder) WithMiddlewareFromFlags( oidcConfig *auth.TokenValidatorConfig, toolsFilter []string, telemetryConfig *telemetry.Config, authzConfigPath string, enableAudit bool, auditConfigPath string, serverName string, transportType string, ) *RunConfigBuilder
WithMiddlewareFromFlags creates middleware configurations directly from flag values
func (*RunConfigBuilder) WithName ¶ added in v0.1.6
func (b *RunConfigBuilder) WithName(name string) *RunConfigBuilder
WithName sets the MCP server name
func (*RunConfigBuilder) WithNetworkIsolation ¶ added in v0.1.6
func (b *RunConfigBuilder) WithNetworkIsolation(isolate bool) *RunConfigBuilder
WithNetworkIsolation sets network isolation
func (*RunConfigBuilder) WithOIDCConfig ¶ added in v0.1.6
func (b *RunConfigBuilder) WithOIDCConfig( oidcIssuer, oidcAudience, oidcJwksURL, oidcIntrospectionURL, oidcClientID string, oidcClientSecret string, thvCABundle, jwksAuthTokenFile, resourceURL string, jwksAllowPrivateIP bool, ) *RunConfigBuilder
WithOIDCConfig configures OIDC settings
func (*RunConfigBuilder) WithPermissionProfile ¶ added in v0.1.6
func (b *RunConfigBuilder) WithPermissionProfile(profile *permissions.Profile) *RunConfigBuilder
WithPermissionProfile sets the permission profile directly. If called multiple times or mixed with WithPermissionProfile, the last call takes precedence.
func (*RunConfigBuilder) WithPermissionProfileNameOrPath ¶ added in v0.1.6
func (b *RunConfigBuilder) WithPermissionProfileNameOrPath(profile string) *RunConfigBuilder
WithPermissionProfileNameOrPath sets the permission profile name or path. If called multiple times or mixed with WithPermissionProfile, the last call takes precedence.
func (*RunConfigBuilder) WithProxyMode ¶ added in v0.1.6
func (b *RunConfigBuilder) WithProxyMode(mode types.ProxyMode) *RunConfigBuilder
WithProxyMode sets the proxy mode
func (*RunConfigBuilder) WithRemoteAuth ¶ added in v0.2.11
func (b *RunConfigBuilder) WithRemoteAuth(config *RemoteAuthConfig) *RunConfigBuilder
WithRemoteAuth sets the remote authentication configuration
func (*RunConfigBuilder) WithRemoteURL ¶ added in v0.2.11
func (b *RunConfigBuilder) WithRemoteURL(remoteURL string) *RunConfigBuilder
WithRemoteURL sets the remote URL for the MCP server
func (*RunConfigBuilder) WithRuntime ¶ added in v0.1.6
func (b *RunConfigBuilder) WithRuntime(deployer rt.Deployer) *RunConfigBuilder
WithRuntime sets the container runtime
func (*RunConfigBuilder) WithSecrets ¶ added in v0.1.6
func (b *RunConfigBuilder) WithSecrets(secrets []string) *RunConfigBuilder
WithSecrets sets the secrets list
func (*RunConfigBuilder) WithTargetHost ¶ added in v0.1.6
func (b *RunConfigBuilder) WithTargetHost(targetHost string) *RunConfigBuilder
WithTargetHost sets the target host (applies default if empty)
func (*RunConfigBuilder) WithTelemetryConfig ¶ added in v0.1.6
func (b *RunConfigBuilder) WithTelemetryConfig(otelEndpoint string, otelEnablePrometheusMetricsPath bool, otelServiceName string, otelSamplingRate float64, otelHeaders []string, otelInsecure bool, otelEnvironmentVariables []string) *RunConfigBuilder
WithTelemetryConfig configures telemetry settings
func (*RunConfigBuilder) WithToolOverride ¶ added in v0.2.12
func (b *RunConfigBuilder) WithToolOverride(toolOverride map[string]ToolOverride) *RunConfigBuilder
WithToolOverride sets the tool override map for the RunConfig This method is mutually exclusive with WithToolOverrideFile
func (*RunConfigBuilder) WithToolOverrideFile ¶ added in v0.2.12
func (b *RunConfigBuilder) WithToolOverrideFile(toolOverrideFile string) *RunConfigBuilder
WithToolOverrideFile sets the path to the tool override file for the RunConfig This method is mutually exclusive with WithToolOverride
func (*RunConfigBuilder) WithToolsFilter ¶ added in v0.2.1
func (b *RunConfigBuilder) WithToolsFilter(toolsFilter []string) *RunConfigBuilder
WithToolsFilter sets the tools filter
func (*RunConfigBuilder) WithTransportAndPorts ¶ added in v0.1.6
func (b *RunConfigBuilder) WithTransportAndPorts(mcpTransport string, port, targetPort int) *RunConfigBuilder
WithTransportAndPorts sets transport and port configuration
func (*RunConfigBuilder) WithVolumes ¶ added in v0.1.6
func (b *RunConfigBuilder) WithVolumes(volumes []string) *RunConfigBuilder
WithVolumes sets the volume mounts
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 NewRunner ¶
func NewRunner(runConfig *RunConfig, statusManager statuses.StatusManager) *Runner
NewRunner creates a new Runner with the provided configuration
func (*Runner) AddMiddleware ¶ added in v0.2.8
func (r *Runner) AddMiddleware(middleware types.Middleware)
AddMiddleware adds a middleware instance and its function to the runner
func (*Runner) Cleanup ¶ added in v0.0.47
Cleanup performs cleanup operations for the runner, including shutting down all middleware.
func (*Runner) GetConfig ¶ added in v0.2.8
func (r *Runner) GetConfig() types.RunnerConfig
GetConfig returns a config interface for middleware to access runner configuration
func (*Runner) SetAuthInfoHandler ¶ added in v0.2.8
SetAuthInfoHandler sets the authentication info handler
func (*Runner) SetPrometheusHandler ¶ added in v0.2.8
SetPrometheusHandler sets the Prometheus metrics handler
type ToolOverride ¶ added in v0.2.12
type ToolOverride struct { // Name is the redefined name of the tool Name string `json:"name,omitempty"` // Description is the redefined description of the tool Description string `json:"description,omitempty"` }
ToolOverride represents a tool override. Both Name and Description can be overridden independently, but they can't be both empty.