Documentation
¶
Index ¶
- Constants
- func CalculateTrustScore(entry RegistryFeedEntry) int
- func FormatInt(v int) string
- func FormatInt64(v int64) string
- func FormatLastRelease(v string) string
- func FormatString(v string) string
- func FormatTrustLabel(score int) string
- func FormatWarning(sid string, score int) string
- func IsLowTrust(score int) bool
- func LeanProxyDir() (string, error)
- func TrustLevel(score int) string
- type DiscoverySignature
- type EventType
- type FeedFetcher
- func (f *FeedFetcher) CacheAge() (time.Duration, error)
- func (f *FeedFetcher) CacheStaleInfo() string
- func (f *FeedFetcher) IndexPath() string
- func (f *FeedFetcher) LoadCache() (*FeedIndex, error)
- func (f *FeedFetcher) OnSync(fn func(entries []RegistryFeedEntry))
- func (f *FeedFetcher) RegistryDir() string
- func (f *FeedFetcher) StartPeriodicRefresh(ctx context.Context)
- func (f *FeedFetcher) Sync(ctx context.Context) error
- func (f *FeedFetcher) WaitRefreshDone()
- func (f *FeedFetcher) WithHTTPClient(c *http.Client) *FeedFetcher
- func (f *FeedFetcher) WithInterval(d time.Duration) *FeedFetcher
- func (f *FeedFetcher) WithURL(url string) *FeedFetcher
- type FeedIndex
- type HealthStatus
- type LazySchemaCache
- func (c *LazySchemaCache) CacheWithTTL(toolName string, schema ToolSchema, ttl time.Duration)
- func (c *LazySchemaCache) Clear()
- func (c *LazySchemaCache) GetFullSchema(toolName string) (ToolSchema, bool)
- func (c *LazySchemaCache) GetStub(toolName string) (ToolStub, bool)
- func (c *LazySchemaCache) Invalidate(toolName string)
- func (c *LazySchemaCache) SetFullSchema(toolName string, schema ToolSchema)
- func (c *LazySchemaCache) Stats() (cached int, expired int)
- type LifecycleManager
- type MatchCriteria
- type Namespace
- type NamespaceConfig
- type NamespaceManager
- type Registry
- type RegistryConfig
- type RegistryEvent
- type RegistryFeedEntry
- type SchemaCache
- type SchemaCacheManager
- func (m *SchemaCacheManager) GetFullSchema(ctx context.Context, toolName string) (json.RawMessage, error)
- func (m *SchemaCacheManager) Invalidate(toolName string)
- func (m *SchemaCacheManager) InvalidateAll()
- func (m *SchemaCacheManager) SetFullSchema(ctx context.Context, toolName string, schema json.RawMessage)
- type ServerConfig
- type ServerEntry
- type ServerHandle
- type ServerState
- type ServerStats
- type ServerStatus
- type Tool
- type ToolEntry
- type ToolEvent
- type ToolEventType
- type ToolMatch
- type ToolRegistry
- type ToolSchema
- type ToolSchemaRegistry
- type ToolStub
- type TransportType
Constants ¶
View Source
const ( DefaultRegistryURL = "https://registry.mcp.io/index.ndjson" DefaultSyncInterval = 1 * time.Hour CacheStaleThreshold = 24 * time.Hour )
View Source
const ( TransportStdio = migrate.TransportStdio TransportHTTP = migrate.TransportHTTP TransportSSE = migrate.TransportSSE )
View Source
const ( TrustLow = "low" TrustMedium = "medium" TrustHigh = "high" )
Variables ¶
This section is empty.
Functions ¶
func CalculateTrustScore ¶ added in v0.8.0
func CalculateTrustScore(entry RegistryFeedEntry) int
func FormatInt ¶ added in v0.8.0
FormatInt renders v as a decimal string, substituting "-" only when v is negative. Zero is a legitimate signal (e.g. zero open issues) and is preserved.
func FormatInt64 ¶ added in v0.8.0
FormatInt64 mirrors FormatInt for int64.
func FormatLastRelease ¶ added in v0.8.0
FormatLastRelease renders a registry last-release string. Empty strings and unparseable dates are both rendered as "-" so the search column does not conflate "missing" with "garbage". Parseable dates are returned verbatim so consumers can apply their own locale formatting later.
func FormatString ¶ added in v0.8.0
FormatString renders v as-is when non-empty, otherwise "-" to signal unavailable data. Used for columns where empty is the natural absence.
func FormatTrustLabel ¶ added in v0.8.0
func FormatWarning ¶ added in v0.8.0
func IsLowTrust ¶ added in v0.8.0
func LeanProxyDir ¶ added in v0.8.0
func TrustLevel ¶ added in v0.8.0
Types ¶
type DiscoverySignature ¶ added in v0.2.0
type DiscoverySignature struct {
Name string `json:"name"`
Description string `json:"description"`
}
func NewDiscoverySignature ¶ added in v0.2.0
func NewDiscoverySignature(name, description string, fullSchema json.RawMessage) (*DiscoverySignature, error)
type FeedFetcher ¶ added in v0.8.0
type FeedFetcher struct {
// contains filtered or unexported fields
}
func NewFeedFetcher ¶ added in v0.8.0
func NewFeedFetcher(logger *slog.Logger, cacheDir string) *FeedFetcher
func (*FeedFetcher) CacheAge ¶ added in v0.8.0
func (f *FeedFetcher) CacheAge() (time.Duration, error)
func (*FeedFetcher) CacheStaleInfo ¶ added in v0.8.0
func (f *FeedFetcher) CacheStaleInfo() string
func (*FeedFetcher) IndexPath ¶ added in v0.8.0
func (f *FeedFetcher) IndexPath() string
func (*FeedFetcher) LoadCache ¶ added in v0.8.0
func (f *FeedFetcher) LoadCache() (*FeedIndex, error)
func (*FeedFetcher) OnSync ¶ added in v0.8.0
func (f *FeedFetcher) OnSync(fn func(entries []RegistryFeedEntry))
func (*FeedFetcher) RegistryDir ¶ added in v0.8.0
func (f *FeedFetcher) RegistryDir() string
func (*FeedFetcher) StartPeriodicRefresh ¶ added in v0.8.0
func (f *FeedFetcher) StartPeriodicRefresh(ctx context.Context)
func (*FeedFetcher) WaitRefreshDone ¶ added in v0.8.0
func (f *FeedFetcher) WaitRefreshDone()
func (*FeedFetcher) WithHTTPClient ¶ added in v0.8.0
func (f *FeedFetcher) WithHTTPClient(c *http.Client) *FeedFetcher
func (*FeedFetcher) WithInterval ¶ added in v0.8.0
func (f *FeedFetcher) WithInterval(d time.Duration) *FeedFetcher
func (*FeedFetcher) WithURL ¶ added in v0.8.0
func (f *FeedFetcher) WithURL(url string) *FeedFetcher
type FeedIndex ¶ added in v0.8.0
type FeedIndex struct {
SyncedAt time.Time `json:"synced_at"`
Entries []RegistryFeedEntry `json:"entries"`
}
type HealthStatus ¶
type HealthStatus string
const ( HealthUnknown HealthStatus = "unknown" HealthHealthy HealthStatus = "healthy" HealthUnhealthy HealthStatus = "unhealthy" )
type LazySchemaCache ¶ added in v0.7.0
type LazySchemaCache struct {
// contains filtered or unexported fields
}
func NewLazySchemaCache ¶ added in v0.7.0
func NewLazySchemaCache(ttl time.Duration) *LazySchemaCache
func (*LazySchemaCache) CacheWithTTL ¶ added in v0.7.0
func (c *LazySchemaCache) CacheWithTTL(toolName string, schema ToolSchema, ttl time.Duration)
func (*LazySchemaCache) Clear ¶ added in v0.7.0
func (c *LazySchemaCache) Clear()
func (*LazySchemaCache) GetFullSchema ¶ added in v0.7.0
func (c *LazySchemaCache) GetFullSchema(toolName string) (ToolSchema, bool)
func (*LazySchemaCache) GetStub ¶ added in v0.7.0
func (c *LazySchemaCache) GetStub(toolName string) (ToolStub, bool)
func (*LazySchemaCache) Invalidate ¶ added in v0.7.0
func (c *LazySchemaCache) Invalidate(toolName string)
func (*LazySchemaCache) SetFullSchema ¶ added in v0.7.0
func (c *LazySchemaCache) SetFullSchema(toolName string, schema ToolSchema)
func (*LazySchemaCache) Stats ¶ added in v0.7.0
func (c *LazySchemaCache) Stats() (cached int, expired int)
type LifecycleManager ¶
type LifecycleManager interface {
Start(ctx context.Context, config ServerConfig) (ServerHandle, error)
Stop(ctx context.Context, id string) error
Kill(ctx context.Context, id string) error
Restart(ctx context.Context, id string) error
Status(ctx context.Context, id string) (ServerStatus, error)
List(ctx context.Context) ([]ServerStatus, error)
Close()
}
func NewLifecycleManager ¶
func NewLifecycleManager(logger *slog.Logger) LifecycleManager
type MatchCriteria ¶
type MatchCriteria struct {
Capabilities []string
Transport TransportType
MinHealth HealthStatus
MaxLoad float64
}
type NamespaceConfig ¶ added in v0.7.0
type NamespaceManager ¶ added in v0.7.0
type NamespaceManager interface {
Load(ctx context.Context, r io.Reader) error
GetNamespace(ctx context.Context, name string) (*Namespace, error)
GetToolsForNamespace(ctx context.Context, ns string) ([]string, error)
CheckAccess(ctx context.Context, ns, clientID string) error
GetAllNamespaces(ctx context.Context) []*Namespace
GetServerNamespace(ctx context.Context, serverID string) (string, error)
GetChildNamespaces(ctx context.Context, parentName string) ([]string, error)
ListToolsInNamespace(ctx context.Context, nsName string) ([]ToolEntry, error)
}
func NewNamespaceManager ¶ added in v0.7.0
func NewNamespaceManager(logger *slog.Logger) NamespaceManager
type Registry ¶
type Registry interface {
Register(ctx context.Context, entry ServerEntry) error
Unregister(ctx context.Context, id string) error
Update(ctx context.Context, entry ServerEntry) error
Get(ctx context.Context, id string) (*ServerEntry, error)
List(ctx context.Context) ([]*ServerEntry, error)
FindByCapability(ctx context.Context, capability string) ([]*ServerEntry, error)
FindByTransport(ctx context.Context, transport TransportType) ([]*ServerEntry, error)
FindBest(ctx context.Context, criteria MatchCriteria) (*ServerEntry, error)
UpdateHealth(ctx context.Context, id string, health HealthStatus) error
ListUnhealthy(ctx context.Context) ([]*ServerEntry, error)
Save(ctx context.Context) error
Load(ctx context.Context) error
Subscribe(ch chan<- RegistryEvent) func()
}
type RegistryConfig ¶ added in v0.2.0
type RegistryConfig struct {
CompactByDefault bool `yaml:"compact_by_default"`
MaxSignatureBytes int `yaml:"max_signature_bytes"`
}
func LoadRegistryConfig ¶ added in v0.2.0
func LoadRegistryConfig(r io.Reader) (*RegistryConfig, error)
func (*RegistryConfig) Validate ¶ added in v0.2.0
func (c *RegistryConfig) Validate() error
type RegistryEvent ¶
type RegistryEvent struct {
Type EventType
Server *ServerEntry
Details string
}
type RegistryFeedEntry ¶ added in v0.8.0
type RegistryFeedEntry struct {
Name string `json:"name"`
Description string `json:"description,omitempty"`
URL string `json:"url,omitempty"`
Command string `json:"command,omitempty"`
Args []string `json:"args,omitempty"`
Env map[string]string `json:"env,omitempty"`
Transport string `json:"transport,omitempty"`
TrustScore int `json:"trust_score,omitempty"`
LastRelease string `json:"last_release,omitempty"`
OpenIssues int `json:"open_issues,omitempty"`
Downloads int `json:"downloads,omitempty"`
TokensPerTurn int64 `json:"tokens_per_turn,omitempty"`
Categories []string `json:"categories,omitempty"`
}
type SchemaCache ¶ added in v0.2.0
type SchemaCache interface {
Get(key string) (json.RawMessage, bool)
Set(key string, schema json.RawMessage)
Delete(key string)
Clear()
}
func NewLRUSchemaCache ¶ added in v0.2.0
func NewLRUSchemaCache(maxSize int, maxAge time.Duration, onEvict func(key string, schema json.RawMessage)) SchemaCache
type SchemaCacheManager ¶ added in v0.2.0
type SchemaCacheManager struct {
// contains filtered or unexported fields
}
func NewSchemaCacheManager ¶ added in v0.2.0
func (*SchemaCacheManager) GetFullSchema ¶ added in v0.2.0
func (m *SchemaCacheManager) GetFullSchema(ctx context.Context, toolName string) (json.RawMessage, error)
func (*SchemaCacheManager) Invalidate ¶ added in v0.2.0
func (m *SchemaCacheManager) Invalidate(toolName string)
func (*SchemaCacheManager) InvalidateAll ¶ added in v0.2.0
func (m *SchemaCacheManager) InvalidateAll()
func (*SchemaCacheManager) SetFullSchema ¶ added in v0.2.0
func (m *SchemaCacheManager) SetFullSchema(ctx context.Context, toolName string, schema json.RawMessage)
type ServerConfig ¶
type ServerEntry ¶
type ServerEntry struct {
ID string
Config *ServerConfig
Address string
Transport TransportType
Capabilities []string
Health HealthStatus
Stats ServerStats
ComplexityTier string
RegisteredAt time.Time
LastSeenAt time.Time
}
type ServerHandle ¶
type ServerHandle struct {
ID string
Config ServerConfig
PID int
}
type ServerState ¶
type ServerState string
const ( StateRunning ServerState = "running" StateStopped ServerState = "stopped" StateError ServerState = "error" StateStarting ServerState = "starting" )
type ServerStats ¶
type ServerStatus ¶
type Tool ¶ added in v0.2.0
type Tool struct {
Signature DiscoverySignature `json:"signature"`
FullSchema json.RawMessage `json:"full_schema,omitempty"`
ServerID string `json:"server_id"`
}
type ToolEvent ¶
type ToolEvent struct {
Type ToolEventType
ServerID string
ToolName string
Tool ToolEntry
}
type ToolEventType ¶
type ToolEventType int
const ( ToolEventRegistered ToolEventType = iota ToolEventUnregistered )
type ToolRegistry ¶
type ToolRegistry interface {
RegisterTool(ctx context.Context, serverID, toolName string) error
UnregisterTool(ctx context.Context, serverID, toolName string) error
GetToolServer(ctx context.Context, toolName string) (string, error)
SearchTools(ctx context.Context, query string) []ToolMatch
ListAllTools(ctx context.Context) []ToolEntry
SubscribeTools(ch chan<- ToolEvent) func()
}
func NewToolRegistry ¶
func NewToolRegistry(logger interface{ Debug(msg string, args ...any) }) ToolRegistry
type ToolSchema ¶ added in v0.7.0
type ToolSchema struct {
Name string `json:"name"`
Description string `json:"description"`
InputSchema json.RawMessage `json:"inputSchema"`
ServerID string `json:"serverId"`
}
type ToolSchemaRegistry ¶ added in v0.2.0
type ToolSchemaRegistry interface {
RegisterTool(ctx context.Context, tool Tool) error
UnregisterTool(ctx context.Context, serverID, toolName string) error
GetDiscoverySignatures() []DiscoverySignature
GetFullSchema(ctx context.Context, toolName string) (json.RawMessage, error)
RefreshManifest(ctx context.Context) error
}
func NewToolSchemaRegistry ¶ added in v0.2.0
func NewToolSchemaRegistry() ToolSchemaRegistry
type TransportType ¶
type TransportType = migrate.TransportType
Click to show internal directories.
Click to hide internal directories.