Documentation
¶
Overview ¶
Package registry provides MCP server registry management functionality. It supports multiple registry sources including embedded data, local files, remote URLs, and API endpoints, with optional caching and conversion capabilities.
Index ¶
- func ConvertServerJSON(serverJSON *v0.ServerJSON) (types.ServerMetadata, error)
- func ConvertServersToMetadata(servers []*v0.ServerJSON) ([]types.ServerMetadata, error)
- func ResetDefaultProvider()
- func ValidateEmbeddedRegistry() error
- func ValidateRegistrySchema(registryData []byte) error
- func ValidateUpstreamRegistry(registryData []byte) error
- type APIRegistryProvider
- func (p *APIRegistryProvider) GetImageServer(name string) (*types.ImageMetadata, error)
- func (p *APIRegistryProvider) GetRegistry() (*types.Registry, error)
- func (p *APIRegistryProvider) GetServer(name string) (types.ServerMetadata, error)
- func (p *APIRegistryProvider) ListServers() ([]types.ServerMetadata, error)
- func (p *APIRegistryProvider) SearchServers(query string) ([]types.ServerMetadata, error)
- type BaseProvider
- func (p *BaseProvider) GetImageServer(name string) (*types.ImageMetadata, error)
- func (p *BaseProvider) GetServer(name string) (types.ServerMetadata, error)
- func (p *BaseProvider) ListImageServers() ([]*types.ImageMetadata, error)
- func (p *BaseProvider) ListServers() ([]types.ServerMetadata, error)
- func (p *BaseProvider) SearchImageServers(query string) ([]*types.ImageMetadata, error)
- func (p *BaseProvider) SearchServers(query string) ([]types.ServerMetadata, error)
- type CachedAPIRegistryProvider
- func (*CachedAPIRegistryProvider) ConvertServerJSON(serverJSON *v0.ServerJSON) (types.ServerMetadata, error)
- func (*CachedAPIRegistryProvider) ConvertServersToMetadataWithCache(servers []*v0.ServerJSON) ([]types.ServerMetadata, error)
- func (p *CachedAPIRegistryProvider) ForceRefresh() error
- func (p *CachedAPIRegistryProvider) GetImageServer(name string) (*types.ImageMetadata, error)
- func (p *CachedAPIRegistryProvider) GetRegistry() (*types.Registry, error)
- func (p *CachedAPIRegistryProvider) GetRemoteServer(name string) (*types.RemoteServerMetadata, error)
- func (p *CachedAPIRegistryProvider) GetServer(name string) (types.ServerMetadata, error)
- func (p *CachedAPIRegistryProvider) GetServerWithContext(ctx context.Context, name string) (types.ServerMetadata, error)
- func (p *CachedAPIRegistryProvider) ListServers() ([]types.ServerMetadata, error)
- func (p *CachedAPIRegistryProvider) SearchServers(query string) ([]types.ServerMetadata, error)
- type LocalRegistryProvider
- type Provider
- type RemoteRegistryProvider
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ConvertServerJSON ¶ added in v0.6.3
func ConvertServerJSON(serverJSON *v0.ServerJSON) (types.ServerMetadata, error)
ConvertServerJSON converts an MCP Registry API ServerJSON to ToolHive ServerMetadata Uses converters from converters.go (same package) Note: Only handles OCI packages and remote servers, skips npm/pypi by design
func ConvertServersToMetadata ¶ added in v0.6.3
func ConvertServersToMetadata(servers []*v0.ServerJSON) ([]types.ServerMetadata, error)
ConvertServersToMetadata converts a slice of ServerJSON to a slice of ServerMetadata Skips servers that cannot be converted (e.g., incomplete entries) Uses official converters from toolhive-registry package
func ResetDefaultProvider ¶ added in v0.2.4
func ResetDefaultProvider()
ResetDefaultProvider clears the cached default provider instance This allows the provider to be recreated with updated configuration. This function is thread-safe and can be called concurrently. The mutex is required here because we're modifying the sync.Once itself, which is not a thread-safe operation.
func ValidateEmbeddedRegistry ¶ added in v0.2.8
func ValidateEmbeddedRegistry() error
ValidateEmbeddedRegistry validates the embedded registry.json against the schema
func ValidateRegistrySchema ¶ added in v0.2.8
ValidateRegistrySchema validates registry JSON data against the registry schema This validates the old ToolHive registry format (flat structure).
func ValidateUpstreamRegistry ¶ added in v0.6.7
ValidateUpstreamRegistry validates UpstreamRegistry JSON data against the upstream-registry.schema.json This validates the complete registry structure including meta, data, servers, and groups. It uses gojsonschema which automatically handles HTTP/HTTPS schema references.
Types ¶
type APIRegistryProvider ¶ added in v0.6.3
type APIRegistryProvider struct {
*BaseProvider
// contains filtered or unexported fields
}
APIRegistryProvider provides registry data from an MCP Registry API endpoint It queries the API on-demand for each operation, ensuring fresh data.
func NewAPIRegistryProvider ¶ added in v0.6.3
func NewAPIRegistryProvider(apiURL string, allowPrivateIp bool) (*APIRegistryProvider, error)
NewAPIRegistryProvider creates a new API registry provider
func (*APIRegistryProvider) GetImageServer ¶ added in v0.6.3
func (p *APIRegistryProvider) GetImageServer(name string) (*types.ImageMetadata, error)
GetImageServer returns a specific container server by name (overrides BaseProvider) This override is necessary because BaseProvider.GetImageServer calls p.GetServer, which would call BaseProvider.GetServer instead of APIRegistryProvider.GetServer
func (*APIRegistryProvider) GetRegistry ¶ added in v0.6.3
func (p *APIRegistryProvider) GetRegistry() (*types.Registry, error)
GetRegistry returns the registry data by fetching all servers from the API This method queries the API and converts all servers to ToolHive format. Note: This can be slow for large registries as it fetches everything.
func (*APIRegistryProvider) GetServer ¶ added in v0.6.3
func (p *APIRegistryProvider) GetServer(name string) (types.ServerMetadata, error)
GetServer returns a specific server by name (queries API directly)
func (*APIRegistryProvider) ListServers ¶ added in v0.6.3
func (p *APIRegistryProvider) ListServers() ([]types.ServerMetadata, error)
ListServers returns all servers from the API
func (*APIRegistryProvider) SearchServers ¶ added in v0.6.3
func (p *APIRegistryProvider) SearchServers(query string) ([]types.ServerMetadata, error)
SearchServers searches for servers matching the query (queries API directly)
type BaseProvider ¶ added in v0.2.6
type BaseProvider struct {
// GetRegistryFunc is a function that fetches the registry data
// This allows different providers to implement their own data fetching logic
GetRegistryFunc func() (*types.Registry, error)
}
BaseProvider provides common implementation for registry providers
func NewBaseProvider ¶ added in v0.2.6
func NewBaseProvider(getRegistry func() (*types.Registry, error)) *BaseProvider
NewBaseProvider creates a new base provider with the given registry function
func (*BaseProvider) GetImageServer ¶ added in v0.2.6
func (p *BaseProvider) GetImageServer(name string) (*types.ImageMetadata, error)
GetImageServer returns a specific container server by name (legacy method)
func (*BaseProvider) GetServer ¶ added in v0.2.6
func (p *BaseProvider) GetServer(name string) (types.ServerMetadata, error)
GetServer returns a specific server by name (container or remote)
func (*BaseProvider) ListImageServers ¶ added in v0.2.6
func (p *BaseProvider) ListImageServers() ([]*types.ImageMetadata, error)
ListImageServers returns all container servers (legacy method)
func (*BaseProvider) ListServers ¶ added in v0.2.6
func (p *BaseProvider) ListServers() ([]types.ServerMetadata, error)
ListServers returns all servers (both container and remote)
func (*BaseProvider) SearchImageServers ¶ added in v0.2.6
func (p *BaseProvider) SearchImageServers(query string) ([]*types.ImageMetadata, error)
SearchImageServers searches for container servers matching the query (legacy method)
func (*BaseProvider) SearchServers ¶ added in v0.2.6
func (p *BaseProvider) SearchServers(query string) ([]types.ServerMetadata, error)
SearchServers searches for servers matching the query (both container and remote)
type CachedAPIRegistryProvider ¶ added in v0.6.3
type CachedAPIRegistryProvider struct {
*APIRegistryProvider
// contains filtered or unexported fields
}
CachedAPIRegistryProvider wraps APIRegistryProvider with caching support. Provides both in-memory and optional persistent file caching. Works for both CLI (with persistent cache) and API server (memory only).
func NewCachedAPIRegistryProvider ¶ added in v0.6.3
func NewCachedAPIRegistryProvider(apiURL string, allowPrivateIp bool, usePersistent bool) (*CachedAPIRegistryProvider, error)
NewCachedAPIRegistryProvider creates a new cached API registry provider. If usePersistent is true, it will use a file cache in ~/.toolhive/cache/
func (*CachedAPIRegistryProvider) ConvertServerJSON ¶ added in v0.6.3
func (*CachedAPIRegistryProvider) ConvertServerJSON(serverJSON *v0.ServerJSON) (types.ServerMetadata, error)
ConvertServerJSON wraps ConvertServerJSON for cached provider
func (*CachedAPIRegistryProvider) ConvertServersToMetadataWithCache ¶ added in v0.6.3
func (*CachedAPIRegistryProvider) ConvertServersToMetadataWithCache(servers []*v0.ServerJSON) ([]types.ServerMetadata, error)
ConvertServersToMetadataWithCache wraps ConvertServersToMetadata for cached provider
func (*CachedAPIRegistryProvider) ForceRefresh ¶ added in v0.6.3
func (p *CachedAPIRegistryProvider) ForceRefresh() error
ForceRefresh forces a cache refresh, ignoring TTL.
func (*CachedAPIRegistryProvider) GetImageServer ¶ added in v0.6.3
func (p *CachedAPIRegistryProvider) GetImageServer(name string) (*types.ImageMetadata, error)
GetImageServer returns a specific container server by name (uses cache).
func (*CachedAPIRegistryProvider) GetRegistry ¶ added in v0.6.3
func (p *CachedAPIRegistryProvider) GetRegistry() (*types.Registry, error)
GetRegistry returns the registry data, using cache if valid. Falls back to stale cache if API is unavailable.
func (*CachedAPIRegistryProvider) GetRemoteServer ¶ added in v0.6.3
func (p *CachedAPIRegistryProvider) GetRemoteServer(name string) (*types.RemoteServerMetadata, error)
GetRemoteServer returns a specific remote server by name (uses cache).
func (*CachedAPIRegistryProvider) GetServer ¶ added in v0.6.3
func (p *CachedAPIRegistryProvider) GetServer(name string) (types.ServerMetadata, error)
GetServer returns a specific server by name (overrides base to use cache).
func (*CachedAPIRegistryProvider) GetServerWithContext ¶ added in v0.6.3
func (p *CachedAPIRegistryProvider) GetServerWithContext(ctx context.Context, name string) (types.ServerMetadata, error)
GetServerWithContext returns a specific server by name with context support
func (*CachedAPIRegistryProvider) ListServers ¶ added in v0.6.3
func (p *CachedAPIRegistryProvider) ListServers() ([]types.ServerMetadata, error)
ListServers returns all servers from cache.
func (*CachedAPIRegistryProvider) SearchServers ¶ added in v0.6.3
func (p *CachedAPIRegistryProvider) SearchServers(query string) ([]types.ServerMetadata, error)
SearchServers searches for servers, using cached data.
type LocalRegistryProvider ¶ added in v0.2.2
type LocalRegistryProvider struct {
*BaseProvider
// contains filtered or unexported fields
}
LocalRegistryProvider provides registry data from embedded JSON files or local files
func NewLocalRegistryProvider ¶ added in v0.2.2
func NewLocalRegistryProvider(filePath ...string) *LocalRegistryProvider
NewLocalRegistryProvider creates a new local registry provider If filePath is provided, it will read from that file; otherwise uses embedded data
func (*LocalRegistryProvider) GetRegistry ¶ added in v0.2.2
func (p *LocalRegistryProvider) GetRegistry() (*types.Registry, error)
GetRegistry returns the registry data from file path or embedded data
type Provider ¶ added in v0.0.43
type Provider interface {
// GetRegistry returns the complete registry data
GetRegistry() (*types.Registry, error)
// GetServer returns a specific server by name (container or remote)
GetServer(name string) (types.ServerMetadata, error)
// SearchServers searches for servers matching the query (both container and remote)
SearchServers(query string) ([]types.ServerMetadata, error)
// ListServers returns all available servers (both container and remote)
ListServers() ([]types.ServerMetadata, error)
// Legacy methods for backward compatibility
// GetImageServer returns a specific container server by name
GetImageServer(name string) (*types.ImageMetadata, error)
// SearchImageServers searches for container servers matching the query
SearchImageServers(query string) ([]*types.ImageMetadata, error)
// ListImageServers returns all available container servers
ListImageServers() ([]*types.ImageMetadata, error)
}
Provider defines the interface for registry storage implementations
func GetDefaultProvider ¶ added in v0.0.43
GetDefaultProvider returns the default registry provider instance This maintains backward compatibility with the existing singleton pattern
func GetDefaultProviderWithConfig ¶ added in v0.2.16
GetDefaultProviderWithConfig returns a registry provider using the given config provider This allows tests to inject their own config provider
func NewRegistryProvider ¶ added in v0.0.43
NewRegistryProvider creates a new registry provider based on the configuration
type RemoteRegistryProvider ¶ added in v0.0.43
type RemoteRegistryProvider struct {
*BaseProvider
// contains filtered or unexported fields
}
RemoteRegistryProvider provides registry data from a remote HTTP endpoint
func NewRemoteRegistryProvider ¶ added in v0.0.43
func NewRemoteRegistryProvider(registryURL string, allowPrivateIp bool) *RemoteRegistryProvider
NewRemoteRegistryProvider creates a new remote registry provider
func (*RemoteRegistryProvider) GetRegistry ¶ added in v0.0.43
func (p *RemoteRegistryProvider) GetRegistry() (*types.Registry, error)
GetRegistry returns the remote registry data
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package api provides client functionality for interacting with MCP Registry API endpoints
|
Package api provides client functionality for interacting with MCP Registry API endpoints |
|
Package converters provides bidirectional conversion between toolhive registry formats and the upstream MCP (Model Context Protocol) ServerJSON format.
|
Package converters provides bidirectional conversion between toolhive registry formats and the upstream MCP (Model Context Protocol) ServerJSON format. |
|
Package mocks is a generated GoMock package.
|
Package mocks is a generated GoMock package. |
|
Package registry contains the core type definitions for the MCP registry system.
|
Package registry contains the core type definitions for the MCP registry system. |