registry

package
v0.6.7 Latest Latest
Warning

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

Go to latest
Published: Nov 25, 2025 License: Apache-2.0 Imports: 20 Imported by: 5

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

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

func ValidateRegistrySchema(registryData []byte) error

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

func ValidateUpstreamRegistry(registryData []byte) error

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

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

func GetDefaultProvider() (Provider, error)

GetDefaultProvider returns the default registry provider instance This maintains backward compatibility with the existing singleton pattern

func GetDefaultProviderWithConfig added in v0.2.16

func GetDefaultProviderWithConfig(configProvider config.Provider) (Provider, error)

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

func NewRegistryProvider(cfg *config.Config) Provider

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

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.

Jump to

Keyboard shortcuts

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