interface.go

  1// Package client provides MCP (Model Context Protocol) client implementations.
  2package client
  3
  4import (
  5	"context"
  6
  7	"github.com/mark3labs/mcp-go/mcp"
  8)
  9
 10// MCPClient represents an MCP client interface
 11type MCPClient interface {
 12	// Initialize sends the initial connection request to the server
 13	Initialize(
 14		ctx context.Context,
 15		request mcp.InitializeRequest,
 16	) (*mcp.InitializeResult, error)
 17
 18	// Ping checks if the server is alive
 19	Ping(ctx context.Context) error
 20
 21	// ListResourcesByPage manually list resources by page.
 22	ListResourcesByPage(
 23		ctx context.Context,
 24		request mcp.ListResourcesRequest,
 25	) (*mcp.ListResourcesResult, error)
 26
 27	// ListResources requests a list of available resources from the server
 28	ListResources(
 29		ctx context.Context,
 30		request mcp.ListResourcesRequest,
 31	) (*mcp.ListResourcesResult, error)
 32
 33	// ListResourceTemplatesByPage manually list resource templates by page.
 34	ListResourceTemplatesByPage(
 35		ctx context.Context,
 36		request mcp.ListResourceTemplatesRequest,
 37	) (*mcp.ListResourceTemplatesResult,
 38		error)
 39
 40	// ListResourceTemplates requests a list of available resource templates from the server
 41	ListResourceTemplates(
 42		ctx context.Context,
 43		request mcp.ListResourceTemplatesRequest,
 44	) (*mcp.ListResourceTemplatesResult,
 45		error)
 46
 47	// ReadResource reads a specific resource from the server
 48	ReadResource(
 49		ctx context.Context,
 50		request mcp.ReadResourceRequest,
 51	) (*mcp.ReadResourceResult, error)
 52
 53	// Subscribe requests notifications for changes to a specific resource
 54	Subscribe(ctx context.Context, request mcp.SubscribeRequest) error
 55
 56	// Unsubscribe cancels notifications for a specific resource
 57	Unsubscribe(ctx context.Context, request mcp.UnsubscribeRequest) error
 58
 59	// ListPromptsByPage manually list prompts by page.
 60	ListPromptsByPage(
 61		ctx context.Context,
 62		request mcp.ListPromptsRequest,
 63	) (*mcp.ListPromptsResult, error)
 64
 65	// ListPrompts requests a list of available prompts from the server
 66	ListPrompts(
 67		ctx context.Context,
 68		request mcp.ListPromptsRequest,
 69	) (*mcp.ListPromptsResult, error)
 70
 71	// GetPrompt retrieves a specific prompt from the server
 72	GetPrompt(
 73		ctx context.Context,
 74		request mcp.GetPromptRequest,
 75	) (*mcp.GetPromptResult, error)
 76
 77	// ListToolsByPage manually list tools by page.
 78	ListToolsByPage(
 79		ctx context.Context,
 80		request mcp.ListToolsRequest,
 81	) (*mcp.ListToolsResult, error)
 82
 83	// ListTools requests a list of available tools from the server
 84	ListTools(
 85		ctx context.Context,
 86		request mcp.ListToolsRequest,
 87	) (*mcp.ListToolsResult, error)
 88
 89	// CallTool invokes a specific tool on the server
 90	CallTool(
 91		ctx context.Context,
 92		request mcp.CallToolRequest,
 93	) (*mcp.CallToolResult, error)
 94
 95	// SetLevel sets the logging level for the server
 96	SetLevel(ctx context.Context, request mcp.SetLevelRequest) error
 97
 98	// Complete requests completion options for a given argument
 99	Complete(
100		ctx context.Context,
101		request mcp.CompleteRequest,
102	) (*mcp.CompleteResult, error)
103
104	// Close client connection and cleanup resources
105	Close() error
106
107	// OnNotification registers a handler for notifications
108	OnNotification(handler func(notification mcp.JSONRPCNotification))
109}