runner

package
v0.2.14 Latest Latest
Warning

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

Go to latest
Published: Sep 2, 2025 License: Apache-2.0 Imports: 43 Imported by: 1

Documentation

Overview

Package runner provides functionality for running MCP servers

Package runner provides functionality for running MCP servers

Index

Constants

View Source
const (
	UVXScheme = "uvx://"
	NPXScheme = "npx://"
	GOScheme  = "go://"
)

Protocol schemes

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

func CleanupTempPermissionProfile(permissionProfilePath string) error

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

func IsImageProtocolScheme(serverOrImage string) bool

IsImageProtocolScheme checks if the serverOrImage string contains a protocol scheme (uvx://, npx://, or go://)

func PopulateMiddlewareConfigs added in v0.2.8

func PopulateMiddlewareConfigs(config *RunConfig) error

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 LoadState

func LoadState(ctx context.Context, name string) (*RunConfig, error)

LoadState loads a run configuration from the state store

func NewRunConfig

func NewRunConfig() *RunConfig

NewRunConfig creates a new RunConfig with default values

func ReadJSON

func ReadJSON(r io.Reader) (*RunConfig, error)

ReadJSON deserializes the RunConfig from JSON read from the provided reader

func (*RunConfig) GetBaseName added in v0.2.6

func (c *RunConfig) GetBaseName() string

GetBaseName returns the base name for the run configuration

func (*RunConfig) GetPort added in v0.2.8

func (c *RunConfig) GetPort() int

GetPort returns the port from the runner config (implements types.RunnerConfig)

func (*RunConfig) SaveState added in v0.2.4

func (c *RunConfig) SaveState(ctx context.Context) error

SaveState saves the run configuration to the state store

func (*RunConfig) ValidateSecrets added in v0.1.8

func (c *RunConfig) ValidateSecrets(ctx context.Context, secretManager secrets.Provider) error

ValidateSecrets checks if the secrets can be parsed and are valid

func (*RunConfig) WithAudit added in v0.0.40

func (c *RunConfig) WithAudit(config *audit.Config) *RunConfig

WithAudit adds audit configuration to the RunConfig

func (*RunConfig) WithAuthz

func (c *RunConfig) WithAuthz(config *authz.Config) *RunConfig

WithAuthz adds authorization configuration to the RunConfig

func (*RunConfig) WithContainerName

func (c *RunConfig) WithContainerName() (*RunConfig, bool)

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

func (c *RunConfig) WithEnvFile(filePath string) (*RunConfig, error)

WithEnvFile processes a single environment file and adds it to environment variables

func (*RunConfig) WithEnvFilesFromDirectory added in v0.2.11

func (c *RunConfig) WithEnvFilesFromDirectory(dirPath string) (*RunConfig, error)

WithEnvFilesFromDirectory processes environment files from a directory and adds them to environment variables

func (*RunConfig) WithEnvironmentVariables

func (c *RunConfig) WithEnvironmentVariables(envVars map[string]string) (*RunConfig, error)

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

func (c *RunConfig) WithPorts(proxyPort, targetPort int) (*RunConfig, error)

WithPorts configures the host and target ports

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

func (c *RunConfig) WithStandardLabels() *RunConfig

WithStandardLabels adds standard labels to the container

func (*RunConfig) WithTransport

func (c *RunConfig) WithTransport(t string) (*RunConfig, error)

WithTransport parses and sets the transport type

func (*RunConfig) WriteJSON

func (c *RunConfig) WriteJSON(w io.Writer) error

WriteJSON serializes the RunConfig to JSON and writes it to the provided writer

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

func (r *Runner) Cleanup(ctx context.Context) error

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

func (r *Runner) Run(ctx context.Context) error

Run runs the MCP server with the provided configuration

func (*Runner) SetAuthInfoHandler added in v0.2.8

func (r *Runner) SetAuthInfoHandler(handler http.Handler)

SetAuthInfoHandler sets the authentication info handler

func (*Runner) SetPrometheusHandler added in v0.2.8

func (r *Runner) SetPrometheusHandler(handler http.Handler)

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.

Directories

Path Synopsis
Package retriever contains logic for fetching or building MCP servers.
Package retriever contains logic for fetching or building MCP servers.

Jump to

Keyboard shortcuts

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