mcp

package
v1.8.0 Latest Latest
Warning

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

Go to latest
Published: May 8, 2025 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func FormatResponse added in v1.5.0

func FormatResponse(response interface{}, err error) (interface{}, error)

FormatResponse converts any response type to a properly formatted MCP response

func FromError added in v1.5.0

func FromError(err error) (interface{}, error)

FromError creates an error response

func RegisterTimescaleDBTools added in v1.8.0

func RegisterTimescaleDBTools(registry interface{}) error

RegisterTimescaleDBTools registers TimescaleDB tools

Types

type BaseToolType added in v1.5.0

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

BaseToolType provides common functionality for tool types

func (*BaseToolType) GetDescription added in v1.5.0

func (b *BaseToolType) GetDescription(dbID string) string

GetDescription returns a description for the tool type

func (*BaseToolType) GetName added in v1.5.0

func (b *BaseToolType) GetName() string

GetName returns the name of the tool type

type CompletionItem added in v1.8.0

type CompletionItem struct {
	Name             string   `json:"name"`
	Type             string   `json:"type"`
	Documentation    string   `json:"documentation"`
	InsertText       string   `json:"insertText"`
	Parameters       []string `json:"parameters,omitempty"`
	ReturnType       string   `json:"returnType,omitempty"`
	Category         string   `json:"category,omitempty"`
	SortText         string   `json:"sortText,omitempty"`
	FilterText       string   `json:"filterText,omitempty"`
	CommitCharacters []string `json:"commitCharacters,omitempty"`
}

CompletionItem represents a code completion item

type CompressionConfig added in v1.8.0

type CompressionConfig struct {
	SegmentBy string `json:"segmentBy,omitempty"`
	OrderBy   string `json:"orderBy,omitempty"`
	Interval  string `json:"interval,omitempty"`
}

CompressionConfig represents compression configuration for a hypertable

type ExecuteTool added in v1.5.0

type ExecuteTool struct {
	BaseToolType
}

ExecuteTool handles SQL statement execution

func NewExecuteTool added in v1.5.0

func NewExecuteTool() *ExecuteTool

NewExecuteTool creates a new execute tool type

func (*ExecuteTool) CreateTool added in v1.5.0

func (t *ExecuteTool) CreateTool(name string, dbID string) interface{}

CreateTool creates an execute tool

func (*ExecuteTool) HandleRequest added in v1.5.0

func (t *ExecuteTool) HandleRequest(ctx context.Context, request server.ToolCallRequest, dbID string, useCase UseCaseProvider) (interface{}, error)

HandleRequest handles execute tool requests

type HypertableColumnInfo added in v1.8.0

type HypertableColumnInfo struct {
	Name        string `json:"name"`
	Type        string `json:"type"`
	Nullable    bool   `json:"nullable"`
	PrimaryKey  bool   `json:"primaryKey"`
	Indexed     bool   `json:"indexed"`
	Description string `json:"description,omitempty"`
}

HypertableColumnInfo represents column information for a hypertable

type HypertableSchemaInfo added in v1.8.0

type HypertableSchemaInfo struct {
	TableName          string                 `json:"tableName"`
	SchemaName         string                 `json:"schemaName"`
	TimeColumn         string                 `json:"timeColumn"`
	ChunkTimeInterval  string                 `json:"chunkTimeInterval"`
	Size               string                 `json:"size"`
	ChunkCount         int                    `json:"chunkCount"`
	RowCount           int64                  `json:"rowCount"`
	SpacePartitioning  []string               `json:"spacePartitioning,omitempty"`
	CompressionEnabled bool                   `json:"compressionEnabled"`
	CompressionConfig  CompressionConfig      `json:"compressionConfig,omitempty"`
	RetentionEnabled   bool                   `json:"retentionEnabled"`
	RetentionInterval  string                 `json:"retentionInterval,omitempty"`
	Columns            []HypertableColumnInfo `json:"columns"`
}

HypertableSchemaInfo represents schema information for a TimescaleDB hypertable

type HypertableSchemaProvider added in v1.8.0

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

HypertableSchemaProvider provides schema information for hypertables

func NewHypertableSchemaProvider added in v1.8.0

func NewHypertableSchemaProvider() *HypertableSchemaProvider

NewHypertableSchemaProvider creates a new hypertable schema provider

func (*HypertableSchemaProvider) GetHypertableSchema added in v1.8.0

func (p *HypertableSchemaProvider) GetHypertableSchema(
	ctx context.Context,
	dbID string,
	tableName string,
	useCase UseCaseProvider,
) (*HypertableSchemaInfo, error)

GetHypertableSchema gets schema information for a specific hypertable

type ListDatabasesTool added in v1.5.0

type ListDatabasesTool struct {
	BaseToolType
}

ListDatabasesTool handles listing available databases

func NewListDatabasesTool added in v1.5.0

func NewListDatabasesTool() *ListDatabasesTool

NewListDatabasesTool creates a new list databases tool type

func (*ListDatabasesTool) CreateTool added in v1.5.0

func (t *ListDatabasesTool) CreateTool(name string, dbID string) interface{}

CreateTool creates a list databases tool

func (*ListDatabasesTool) HandleRequest added in v1.5.0

func (t *ListDatabasesTool) HandleRequest(ctx context.Context, request server.ToolCallRequest, dbID string, useCase UseCaseProvider) (interface{}, error)

HandleRequest handles list databases tool requests

type PerformanceTool added in v1.5.0

type PerformanceTool struct {
	BaseToolType
}

PerformanceTool handles query performance analysis

func NewPerformanceTool added in v1.5.0

func NewPerformanceTool() *PerformanceTool

NewPerformanceTool creates a new performance tool type

func (*PerformanceTool) CreateTool added in v1.5.0

func (t *PerformanceTool) CreateTool(name string, dbID string) interface{}

CreateTool creates a performance analysis tool

func (*PerformanceTool) HandleRequest added in v1.5.0

func (t *PerformanceTool) HandleRequest(ctx context.Context, request server.ToolCallRequest, dbID string, useCase UseCaseProvider) (interface{}, error)

HandleRequest handles performance tool requests

type QuerySuggestion added in v1.8.0

type QuerySuggestion struct {
	Title       string `json:"title"`
	Description string `json:"description"`
	Query       string `json:"query"`
	Category    string `json:"category"`
}

QuerySuggestion represents a suggested query template for TimescaleDB

type QueryTool added in v1.5.0

type QueryTool struct {
	BaseToolType
}

QueryTool handles SQL query operations

func NewQueryTool added in v1.5.0

func NewQueryTool() *QueryTool

NewQueryTool creates a new query tool type

func (*QueryTool) CreateTool added in v1.5.0

func (t *QueryTool) CreateTool(name string, dbID string) interface{}

CreateTool creates a query tool

func (*QueryTool) HandleRequest added in v1.5.0

func (t *QueryTool) HandleRequest(ctx context.Context, request server.ToolCallRequest, dbID string, useCase UseCaseProvider) (interface{}, error)

HandleRequest handles query tool requests

type Response added in v1.5.0

type Response struct {
	Content  []TextContent          `json:"content"`
	Metadata map[string]interface{} `json:"metadata,omitempty"`
}

Response is a standardized response format for MCP tools

func FromString added in v1.5.0

func FromString(text string) *Response

FromString creates a response from a string

func NewResponse added in v1.5.0

func NewResponse() *Response

NewResponse creates a new empty Response

Example
// Create a new response with text content
resp := NewResponse().WithText("Hello, world!")

// Add metadata
resp.WithMetadata("source", "example")

// Convert to map for JSON serialization
output, err := json.Marshal(resp)
if err != nil {
	// This is an example, but we should still check
	fmt.Println("Error marshaling:", err)
	return
}
fmt.Println(string(output))
Output:

{"content":[{"type":"text","text":"Hello, world!"}],"metadata":{"source":"example"}}

func (*Response) WithMetadata added in v1.5.0

func (r *Response) WithMetadata(key string, value interface{}) *Response

WithMetadata adds metadata to the response

func (*Response) WithText added in v1.5.0

func (r *Response) WithText(text string) *Response

WithText adds a text content item to the response

type SchemaTool added in v1.5.0

type SchemaTool struct {
	BaseToolType
}

SchemaTool handles database schema exploration

func NewSchemaTool added in v1.5.0

func NewSchemaTool() *SchemaTool

NewSchemaTool creates a new schema tool type

func (*SchemaTool) CreateTool added in v1.5.0

func (t *SchemaTool) CreateTool(name string, dbID string) interface{}

CreateTool creates a schema tool

func (*SchemaTool) HandleRequest added in v1.5.0

func (t *SchemaTool) HandleRequest(ctx context.Context, request server.ToolCallRequest, dbID string, useCase UseCaseProvider) (interface{}, error)

HandleRequest handles schema tool requests

type ServerWrapper added in v1.5.0

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

ServerWrapper provides a wrapper around server.MCPServer to handle type assertions

func NewServerWrapper added in v1.5.0

func NewServerWrapper(mcpServer *server.MCPServer) *ServerWrapper

NewServerWrapper creates a new ServerWrapper

func (*ServerWrapper) AddTool added in v1.5.0

func (sw *ServerWrapper) AddTool(ctx context.Context, tool interface{}, handler func(ctx context.Context, request server.ToolCallRequest) (interface{}, error)) error

AddTool adds a tool to the server

type TextContent added in v1.5.0

type TextContent struct {
	Type string `json:"type"`
	Text string `json:"text"`
}

TextContent represents a text content item in a response

type TimescaleDBCompletionProvider added in v1.8.0

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

TimescaleDBCompletionProvider provides code completion for TimescaleDB functions

func NewTimescaleDBCompletionProvider added in v1.8.0

func NewTimescaleDBCompletionProvider() *TimescaleDBCompletionProvider

NewTimescaleDBCompletionProvider creates a new TimescaleDB completion provider

func (*TimescaleDBCompletionProvider) GetAllFunctionCompletions added in v1.8.0

func (p *TimescaleDBCompletionProvider) GetAllFunctionCompletions(ctx context.Context, dbID string, useCase UseCaseProvider) ([]CompletionItem, error)

GetAllFunctionCompletions returns completions for all TimescaleDB functions

func (*TimescaleDBCompletionProvider) GetAnalyticsFunctionCompletions added in v1.8.0

func (p *TimescaleDBCompletionProvider) GetAnalyticsFunctionCompletions(ctx context.Context, dbID string, useCase UseCaseProvider) ([]CompletionItem, error)

GetAnalyticsFunctionCompletions returns completions for TimescaleDB's analytics functions

func (*TimescaleDBCompletionProvider) GetContinuousAggregateFunctionCompletions added in v1.8.0

func (p *TimescaleDBCompletionProvider) GetContinuousAggregateFunctionCompletions(ctx context.Context, dbID string, useCase UseCaseProvider) ([]CompletionItem, error)

GetContinuousAggregateFunctionCompletions returns completions for continuous aggregate functions

func (*TimescaleDBCompletionProvider) GetHypertableFunctionCompletions added in v1.8.0

func (p *TimescaleDBCompletionProvider) GetHypertableFunctionCompletions(ctx context.Context, dbID string, useCase UseCaseProvider) ([]CompletionItem, error)

GetHypertableFunctionCompletions returns completions for hypertable management functions

func (*TimescaleDBCompletionProvider) GetQuerySuggestions added in v1.8.0

func (p *TimescaleDBCompletionProvider) GetQuerySuggestions(ctx context.Context, dbID string, useCase UseCaseProvider) ([]QuerySuggestion, error)

GetQuerySuggestions returns TimescaleDB query suggestions based on the database schema

func (*TimescaleDBCompletionProvider) GetTimeBucketCompletions added in v1.8.0

func (p *TimescaleDBCompletionProvider) GetTimeBucketCompletions(ctx context.Context, dbID string, useCase UseCaseProvider) ([]CompletionItem, error)

GetTimeBucketCompletions returns completions for time_bucket functions

type TimescaleDBContextInfo added in v1.8.0

type TimescaleDBContextInfo struct {
	IsTimescaleDB bool                        `json:"isTimescaleDB"`
	Version       string                      `json:"version,omitempty"`
	Hypertables   []TimescaleDBHypertableInfo `json:"hypertables,omitempty"`
}

TimescaleDBContextInfo represents information about TimescaleDB for editor context

type TimescaleDBContextProvider added in v1.8.0

type TimescaleDBContextProvider struct{}

TimescaleDBContextProvider provides TimescaleDB information for editor context

func NewTimescaleDBContextProvider added in v1.8.0

func NewTimescaleDBContextProvider() *TimescaleDBContextProvider

NewTimescaleDBContextProvider creates a new TimescaleDB context provider

func (*TimescaleDBContextProvider) DetectTimescaleDB added in v1.8.0

func (p *TimescaleDBContextProvider) DetectTimescaleDB(ctx context.Context, dbID string, useCase UseCaseProvider) (*TimescaleDBContextInfo, error)

DetectTimescaleDB detects if TimescaleDB is installed in the given database

func (*TimescaleDBContextProvider) GetTimescaleDBContext added in v1.8.0

func (p *TimescaleDBContextProvider) GetTimescaleDBContext(ctx context.Context, dbID string, useCase UseCaseProvider) (*TimescaleDBContextInfo, error)

GetTimescaleDBContext gets comprehensive TimescaleDB context information

type TimescaleDBHypertableInfo added in v1.8.0

type TimescaleDBHypertableInfo struct {
	TableName     string `json:"tableName"`
	TimeColumn    string `json:"timeColumn"`
	ChunkInterval string `json:"chunkInterval"`
}

TimescaleDBHypertableInfo contains information about a hypertable

type TimescaleDBTool added in v1.8.0

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

TimescaleDBTool implements a tool for TimescaleDB operations

func NewTimescaleDBTool added in v1.8.0

func NewTimescaleDBTool() *TimescaleDBTool

NewTimescaleDBTool creates a new TimescaleDB tool

func (*TimescaleDBTool) CreateCompressionDisableTool added in v1.8.0

func (t *TimescaleDBTool) CreateCompressionDisableTool(name string, dbID string) interface{}

CreateCompressionDisableTool creates a tool for disabling compression on a hypertable

func (*TimescaleDBTool) CreateCompressionEnableTool added in v1.8.0

func (t *TimescaleDBTool) CreateCompressionEnableTool(name string, dbID string) interface{}

CreateCompressionEnableTool creates a tool for enabling compression on a hypertable

func (*TimescaleDBTool) CreateCompressionPolicyAddTool added in v1.8.0

func (t *TimescaleDBTool) CreateCompressionPolicyAddTool(name string, dbID string) interface{}

CreateCompressionPolicyAddTool creates a tool for adding a compression policy

func (*TimescaleDBTool) CreateCompressionPolicyRemoveTool added in v1.8.0

func (t *TimescaleDBTool) CreateCompressionPolicyRemoveTool(name string, dbID string) interface{}

CreateCompressionPolicyRemoveTool creates a tool for removing a compression policy

func (*TimescaleDBTool) CreateCompressionSettingsTool added in v1.8.0

func (t *TimescaleDBTool) CreateCompressionSettingsTool(name string, dbID string) interface{}

CreateCompressionSettingsTool creates a tool for retrieving compression settings

func (*TimescaleDBTool) CreateContinuousAggregateDropTool added in v1.8.0

func (t *TimescaleDBTool) CreateContinuousAggregateDropTool(name string, dbID string) interface{}

CreateContinuousAggregateDropTool creates a specific tool for dropping continuous aggregates

func (*TimescaleDBTool) CreateContinuousAggregateInfoTool added in v1.8.0

func (t *TimescaleDBTool) CreateContinuousAggregateInfoTool(name string, dbID string) interface{}

CreateContinuousAggregateInfoTool creates a specific tool for getting continuous aggregate information

func (*TimescaleDBTool) CreateContinuousAggregateListTool added in v1.8.0

func (t *TimescaleDBTool) CreateContinuousAggregateListTool(name string, dbID string) interface{}

CreateContinuousAggregateListTool creates a specific tool for listing continuous aggregates

func (*TimescaleDBTool) CreateContinuousAggregatePolicyAddTool added in v1.8.0

func (t *TimescaleDBTool) CreateContinuousAggregatePolicyAddTool(name string, dbID string) interface{}

CreateContinuousAggregatePolicyAddTool creates a specific tool for adding a refresh policy

func (*TimescaleDBTool) CreateContinuousAggregatePolicyRemoveTool added in v1.8.0

func (t *TimescaleDBTool) CreateContinuousAggregatePolicyRemoveTool(name string, dbID string) interface{}

CreateContinuousAggregatePolicyRemoveTool creates a specific tool for removing a refresh policy

func (*TimescaleDBTool) CreateContinuousAggregateRefreshTool added in v1.8.0

func (t *TimescaleDBTool) CreateContinuousAggregateRefreshTool(name string, dbID string) interface{}

CreateContinuousAggregateRefreshTool creates a specific tool for refreshing continuous aggregates

func (*TimescaleDBTool) CreateContinuousAggregateTool added in v1.8.0

func (t *TimescaleDBTool) CreateContinuousAggregateTool(name string, dbID string) interface{}

CreateContinuousAggregateTool creates a specific tool for creating continuous aggregates

func (*TimescaleDBTool) CreateHypertableTool added in v1.8.0

func (t *TimescaleDBTool) CreateHypertableTool(name string, dbID string) interface{}

CreateHypertableTool creates a specific tool for hypertable creation

func (*TimescaleDBTool) CreateListHypertablesTool added in v1.8.0

func (t *TimescaleDBTool) CreateListHypertablesTool(name string, dbID string) interface{}

CreateListHypertablesTool creates a specific tool for listing hypertables

func (*TimescaleDBTool) CreateRetentionPolicyTool added in v1.8.0

func (t *TimescaleDBTool) CreateRetentionPolicyTool(name string, dbID string) interface{}

CreateRetentionPolicyTool creates a specific tool for managing retention policies

func (*TimescaleDBTool) CreateTimeSeriesAnalyzeTool added in v1.8.0

func (t *TimescaleDBTool) CreateTimeSeriesAnalyzeTool(name string, dbID string) interface{}

CreateTimeSeriesAnalyzeTool creates a specific tool for analyzing time-series data

func (*TimescaleDBTool) CreateTimeSeriesQueryTool added in v1.8.0

func (t *TimescaleDBTool) CreateTimeSeriesQueryTool(name string, dbID string) interface{}

CreateTimeSeriesQueryTool creates a specific tool for time-series queries

func (*TimescaleDBTool) CreateTool added in v1.8.0

func (t *TimescaleDBTool) CreateTool(name string, dbID string) interface{}

CreateTool creates the TimescaleDB tool

func (*TimescaleDBTool) GetDescription added in v1.8.0

func (t *TimescaleDBTool) GetDescription(dbID string) string

GetDescription returns the description of the tool

func (*TimescaleDBTool) GetName added in v1.8.0

func (t *TimescaleDBTool) GetName() string

GetName returns the name of the tool

func (*TimescaleDBTool) HandleRequest added in v1.8.0

func (t *TimescaleDBTool) HandleRequest(ctx context.Context, request server.ToolCallRequest, dbID string, useCase UseCaseProvider) (interface{}, error)

HandleRequest handles a tool request

type ToolRegistry

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

ToolRegistry structure to handle tool registration

func NewToolRegistry

func NewToolRegistry(mcpServer *server.MCPServer) *ToolRegistry

NewToolRegistry creates a new tool registry

func (*ToolRegistry) RegisterAllTools

func (tr *ToolRegistry) RegisterAllTools(ctx context.Context, useCase UseCaseProvider) error

RegisterAllTools registers all tools with the server

func (*ToolRegistry) RegisterCursorCompatibleTools added in v1.5.0

func (tr *ToolRegistry) RegisterCursorCompatibleTools(ctx context.Context) error

RegisterCursorCompatibleTools is kept for backward compatibility but does nothing as we now register tools with simple names directly

func (*ToolRegistry) RegisterMockTools added in v1.4.1

func (tr *ToolRegistry) RegisterMockTools(ctx context.Context) error

RegisterMockTools registers mock tools with the server when no db connections available

type ToolType added in v1.5.0

type ToolType interface {
	// GetName returns the base name of the tool type (e.g., "query", "execute")
	GetName() string

	// GetDescription returns a description for this tool type
	GetDescription(dbID string) string

	// CreateTool creates a tool with the specified name
	// The returned tool must be compatible with server.MCPServer.AddTool's first parameter
	CreateTool(name string, dbID string) interface{}

	// HandleRequest handles tool requests for this tool type
	HandleRequest(ctx context.Context, request server.ToolCallRequest, dbID string, useCase UseCaseProvider) (interface{}, error)
}

ToolType interface defines the structure for different types of database tools

type ToolTypeFactory added in v1.5.0

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

ToolTypeFactory creates and manages tool types

func NewToolTypeFactory added in v1.5.0

func NewToolTypeFactory() *ToolTypeFactory

NewToolTypeFactory creates a new tool type factory with all registered tool types

func (*ToolTypeFactory) GetAllToolTypes added in v1.5.0

func (f *ToolTypeFactory) GetAllToolTypes() []ToolType

GetAllToolTypes returns all registered tool types

func (*ToolTypeFactory) GetToolType added in v1.5.0

func (f *ToolTypeFactory) GetToolType(name string) (ToolType, bool)

GetToolType returns a tool type by name

func (*ToolTypeFactory) GetToolTypeForSourceName added in v1.5.0

func (f *ToolTypeFactory) GetToolTypeForSourceName(sourceName string) (ToolType, string, bool)

GetToolTypeForSourceName finds the appropriate tool type for a source name

func (*ToolTypeFactory) Register added in v1.5.0

func (f *ToolTypeFactory) Register(toolType ToolType)

Register adds a tool type to the factory

type TransactionTool added in v1.5.0

type TransactionTool struct {
	BaseToolType
}

TransactionTool handles database transactions

func NewTransactionTool added in v1.5.0

func NewTransactionTool() *TransactionTool

NewTransactionTool creates a new transaction tool type

func (*TransactionTool) CreateTool added in v1.5.0

func (t *TransactionTool) CreateTool(name string, dbID string) interface{}

CreateTool creates a transaction tool

func (*TransactionTool) HandleRequest added in v1.5.0

func (t *TransactionTool) HandleRequest(ctx context.Context, request server.ToolCallRequest, dbID string, useCase UseCaseProvider) (interface{}, error)

HandleRequest handles transaction tool requests

type UseCaseProvider added in v1.5.0

type UseCaseProvider interface {
	ExecuteQuery(ctx context.Context, dbID, query string, params []interface{}) (string, error)
	ExecuteStatement(ctx context.Context, dbID, statement string, params []interface{}) (string, error)
	ExecuteTransaction(ctx context.Context, dbID, action string, txID string, statement string, params []interface{}, readOnly bool) (string, map[string]interface{}, error)
	GetDatabaseInfo(dbID string) (map[string]interface{}, error)
	ListDatabases() []string
	GetDatabaseType(dbID string) (string, error)
}

UseCaseProvider interface abstracts database use case operations

Jump to

Keyboard shortcuts

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