Help us shape the future of Go! Take the 2026 Go Developer Survey

mcp

package
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Jul 26, 2025 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ClientBucket

type ClientBucket struct {
	// contains filtered or unexported fields
}

ClientBucket represents a token bucket for a specific client

type LoggerWriter added in v0.6.0

type LoggerWriter struct {
	// contains filtered or unexported fields
}

LoggerWriter implements io.Writer to bridge MCP's logging to our logger

func NewLoggerWriter added in v0.6.0

func NewLoggerWriter(l logger.Logger, prefix string) *LoggerWriter

NewLoggerWriter creates a new logger writer

func (*LoggerWriter) Write added in v0.6.0

func (w *LoggerWriter) Write(p []byte) (n int, err error)

Write implements io.Writer interface

type MigrationApplyParams added in v0.6.0

type MigrationApplyParams struct {
	DryRun *bool `json:"dry_run,omitempty" jsonschema:"Preview without applying"`
}

type MigrationCreateParams added in v0.6.0

type MigrationCreateParams struct {
	Name    string `json:"name" jsonschema:"Migration name"`
	Preview *bool  `json:"preview,omitempty" jsonschema:"Preview changes without creating"`
}

type MigrationStatusParams added in v0.6.0

type MigrationStatusParams struct{}

type ModelAggregateParams added in v0.6.0

type ModelAggregateParams struct {
	Model   string          `json:"model" jsonschema:"Model name"`
	Where   map[string]any  `json:"where,omitempty" jsonschema:"Filter conditions"`
	Count   *bool           `json:"count,omitempty"`
	Avg     map[string]bool `json:"avg,omitempty"`
	Sum     map[string]bool `json:"sum,omitempty"`
	Min     map[string]bool `json:"min,omitempty"`
	Max     map[string]bool `json:"max,omitempty"`
	GroupBy []string        `json:"groupBy,omitempty"`
}

type ModelCountParams added in v0.6.0

type ModelCountParams struct {
	Model string         `json:"model" jsonschema:"Model name"`
	Where map[string]any `json:"where,omitempty" jsonschema:"Filter conditions"`
}

type ModelCreateParams added in v0.6.0

type ModelCreateParams struct {
	Model string         `json:"model" jsonschema:"Model name"`
	Data  map[string]any `json:"data" jsonschema:"Data to create"`
}

type ModelDeleteParams added in v0.6.0

type ModelDeleteParams struct {
	Model string         `json:"model" jsonschema:"Model name"`
	Where map[string]any `json:"where" jsonschema:"Filter to find records"`
}

type ModelFindManyParams added in v0.6.0

type ModelFindManyParams struct {
	Model   string         `json:"model" jsonschema:"Model name"`
	Where   map[string]any `json:"where,omitempty" jsonschema:"Filter conditions"`
	Include map[string]any `json:"include,omitempty" jsonschema:"Relations to include"`
	OrderBy map[string]any `json:"orderBy,omitempty" jsonschema:"Sort order"`
	Take    *int           `json:"take,omitempty" jsonschema:"Limit results"`
	Skip    *int           `json:"skip,omitempty" jsonschema:"Skip results"`
}

Tool parameter structs

type ModelFindUniqueParams added in v0.6.0

type ModelFindUniqueParams struct {
	Model   string         `json:"model" jsonschema:"Model name"`
	Where   map[string]any `json:"where" jsonschema:"Unique identifier"`
	Include map[string]any `json:"include,omitempty" jsonschema:"Relations to include"`
}

type ModelUpdateParams added in v0.6.0

type ModelUpdateParams struct {
	Model string         `json:"model" jsonschema:"Model name"`
	Where map[string]any `json:"where" jsonschema:"Filter to find records"`
	Data  map[string]any `json:"data" jsonschema:"Data to update"`
}

type PendingSchemaManager added in v0.6.0

type PendingSchemaManager struct {
	// contains filtered or unexported fields
}

PendingSchemaManager manages schemas that are waiting for their dependencies

func NewPendingSchemaManager added in v0.6.0

func NewPendingSchemaManager(logger logger.Logger) *PendingSchemaManager

NewPendingSchemaManager creates a new pending schema manager

func (*PendingSchemaManager) AddSchema added in v0.6.0

func (p *PendingSchemaManager) AddSchema(s *schema.Schema)

AddSchema adds a schema to the pending queue

func (*PendingSchemaManager) GetPendingSchemas added in v0.6.0

func (p *PendingSchemaManager) GetPendingSchemas() map[string]*schema.Schema

GetPendingSchemas returns a copy of all pending schemas

func (*PendingSchemaManager) ProcessPendingSchemas added in v0.6.0

func (p *PendingSchemaManager) ProcessPendingSchemas(ctx context.Context, db types.Database) (*TableCreationResult, error)

ProcessPendingSchemas attempts to create tables for all pending schemas

func (*PendingSchemaManager) RemoveSchema added in v0.6.0

func (p *PendingSchemaManager) RemoveSchema(name string)

RemoveSchema removes a schema from the pending queue

type RateLimiter

type RateLimiter struct {
	// contains filtered or unexported fields
}

RateLimiter implements token bucket rate limiting

func NewRateLimiter

func NewRateLimiter(requestsPerMin, burstLimit int) *RateLimiter

NewRateLimiter creates a new rate limiter

func (*RateLimiter) Allow

func (rl *RateLimiter) Allow(clientIP string) bool

Allow checks if a request from the given client IP is allowed

func (*RateLimiter) Stop

func (rl *RateLimiter) Stop()

Stop stops the rate limiter cleanup routine

type SDKServer added in v0.6.0

type SDKServer struct {
	// contains filtered or unexported fields
}

SDKServer wraps the MCP SDK server

func NewSDKServer added in v0.6.0

func NewSDKServer(config ServerConfig) (*SDKServer, error)

NewSDKServer creates a new MCP server using the official SDK

func (*SDKServer) GetLogger added in v0.6.0

func (s *SDKServer) GetLogger() logger.Logger

GetLogger returns the server's logger

func (*SDKServer) Start added in v0.6.0

func (s *SDKServer) Start() error

Start starts the MCP server with the configured transport

type SchemaAddFieldParams added in v0.6.0

type SchemaAddFieldParams struct {
	Model string                `json:"model" jsonschema:"Model name"`
	Field SchemaFieldDefinition `json:"field" jsonschema:"Field definition"`
}

type SchemaAddRelationParams added in v0.6.0

type SchemaAddRelationParams struct {
	Model    string                   `json:"model" jsonschema:"Model name"`
	Relation SchemaRelationDefinition `json:"relation" jsonschema:"Relation definition"`
}

type SchemaCreateParams added in v0.6.0

type SchemaCreateParams struct {
	Model     string                     `json:"model" jsonschema:"Model name"`
	Fields    []SchemaFieldDefinition    `json:"fields" jsonschema:"Field definitions"`
	Relations []SchemaRelationDefinition `json:"relations,omitempty" jsonschema:"Relation definitions"`
	Indexes   []SchemaIndexDefinition    `json:"indexes,omitempty" jsonschema:"Index definitions"`
	TableName string                     `json:"tableName,omitempty" jsonschema:"Custom table name"`
}

Schema modification tool parameters

type SchemaDescribeParams added in v0.6.0

type SchemaDescribeParams struct {
	Model string `json:"model" jsonschema:"Model name"`
}

type SchemaFieldDefinition added in v0.6.0

type SchemaFieldDefinition struct {
	Name          string `json:"name" jsonschema:"Field name"`
	Type          string `json:"type" jsonschema:"Field type (String, Int, Boolean, DateTime, etc.)"`
	Optional      bool   `json:"optional,omitempty" jsonschema:"Is field optional/nullable"`
	List          bool   `json:"list,omitempty" jsonschema:"Is field an array"`
	Unique        bool   `json:"unique,omitempty" jsonschema:"Is field unique"`
	PrimaryKey    bool   `json:"primaryKey,omitempty" jsonschema:"Is primary key"`
	AutoIncrement bool   `json:"autoIncrement,omitempty" jsonschema:"Auto-increment integer"`
	Default       any    `json:"default,omitempty" jsonschema:"Default value"`
	DbType        string `json:"dbType,omitempty" jsonschema:"Database-specific type"`
}

Helper types for field and relation definitions

type SchemaFieldUpdate added in v0.6.0

type SchemaFieldUpdate struct {
	Name    string         `json:"name" jsonschema:"Field name to update"`
	Changes map[string]any `json:"changes" jsonschema:"Changes to apply"`
}

type SchemaIndexDefinition added in v0.6.0

type SchemaIndexDefinition struct {
	Fields []string `json:"fields" jsonschema:"Fields in the index"`
	Unique bool     `json:"unique,omitempty" jsonschema:"Is unique index"`
	Name   string   `json:"name,omitempty" jsonschema:"Index name"`
}

type SchemaModelsParams added in v0.6.0

type SchemaModelsParams struct{}

type SchemaRelationDefinition added in v0.6.0

type SchemaRelationDefinition struct {
	Name       string `json:"name" jsonschema:"Relation field name"`
	Type       string `json:"type" jsonschema:"Relation type (oneToOne, oneToMany, manyToOne, manyToMany)"`
	Model      string `json:"model" jsonschema:"Related model name"`
	ForeignKey string `json:"foreignKey,omitempty" jsonschema:"Foreign key field"`
	References string `json:"references,omitempty" jsonschema:"Referenced field"`
}

type SchemaRemoveFieldParams added in v0.6.0

type SchemaRemoveFieldParams struct {
	Model     string `json:"model" jsonschema:"Model name"`
	FieldName string `json:"fieldName" jsonschema:"Field name to remove"`
}

type SchemaUpdateParams added in v0.6.0

type SchemaUpdateParams struct {
	Model           string                     `json:"model" jsonschema:"Model name to update"`
	AddFields       []SchemaFieldDefinition    `json:"addFields,omitempty" jsonschema:"Fields to add"`
	RemoveFields    []string                   `json:"removeFields,omitempty" jsonschema:"Field names to remove"`
	UpdateFields    []SchemaFieldUpdate        `json:"updateFields,omitempty" jsonschema:"Fields to update"`
	AddRelations    []SchemaRelationDefinition `json:"addRelations,omitempty" jsonschema:"Relations to add"`
	RemoveRelations []string                   `json:"removeRelations,omitempty" jsonschema:"Relation names to remove"`
}

type SecurityConfig

type SecurityConfig struct {
	// Authentication
	EnableAuth   bool
	APIKey       string
	AllowedHosts []string

	// Rate limiting
	EnableRateLimit bool
	RequestsPerMin  int
	BurstLimit      int

	// Permissions
	ReadOnlyMode bool
	MaxQueryRows int
	QueryTimeout time.Duration
}

SecurityConfig holds security configuration

type SecurityManager

type SecurityManager struct {
	// contains filtered or unexported fields
}

SecurityManager handles authentication, authorization, and rate limiting

func NewSecurityManager

func NewSecurityManager(config SecurityConfig) *SecurityManager

NewSecurityManager creates a new security manager

func (*SecurityManager) AuthenticateRequest

func (sm *SecurityManager) AuthenticateRequest(r *http.Request) error

AuthenticateRequest validates authentication for HTTP requests

func (*SecurityManager) CheckRateLimit

func (sm *SecurityManager) CheckRateLimit(clientIP string) error

CheckRateLimit verifies if the request is within rate limits

func (*SecurityManager) CheckReadOnly added in v0.6.0

func (sm *SecurityManager) CheckReadOnly(operation string) error

CheckReadOnly checks if an operation is allowed in read-only mode

func (*SecurityManager) GetStats

func (sm *SecurityManager) GetStats() map[string]any

GetStats returns security statistics

func (*SecurityManager) SecurityMiddleware

func (sm *SecurityManager) SecurityMiddleware(next http.Handler) http.Handler

SecurityMiddleware returns an HTTP middleware for security validation

func (*SecurityManager) ValidateHost

func (sm *SecurityManager) ValidateHost(r *http.Request) error

ValidateHost checks if the request comes from an allowed host

type ServerConfig

type ServerConfig struct {
	DatabaseURI string
	SchemaPath  string
	Transport   string
	Port        int
	LogLevel    string
	ReadOnly    bool
	Security    SecurityConfig
	Version     string // Version of the MCP server
}

ServerConfig holds the configuration for the MCP server

type TableCreationResult added in v0.6.0

type TableCreationResult struct {
	TablesCreated  []string            `json:"tables_created"`
	PendingSchemas []string            `json:"pending_schemas"`
	DependencyInfo map[string][]string `json:"dependency_info"`
	Errors         []string            `json:"errors,omitempty"`
	CircularDeps   bool                `json:"has_circular_dependencies"`
}

TableCreationResult represents the result of attempting to create tables

type TransactionOperation added in v0.6.0

type TransactionOperation struct {
	Tool      string         `json:"tool" jsonschema:"Tool name (e.g. model.create)"`
	Arguments map[string]any `json:"arguments" jsonschema:"Tool arguments"`
}

type TransactionParams added in v0.6.0

type TransactionParams struct {
	Operations []TransactionOperation `json:"operations" jsonschema:"Array of operations to execute"`
}

Jump to

Keyboard shortcuts

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