client.go

 1// Package client provides MCP (Model Control 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	// ListResources requests a list of available resources from the server
22	ListResources(
23		ctx context.Context,
24		request mcp.ListResourcesRequest,
25	) (*mcp.ListResourcesResult, error)
26
27	// ListResourceTemplates requests a list of available resource templates from the server
28	ListResourceTemplates(
29		ctx context.Context,
30		request mcp.ListResourceTemplatesRequest,
31	) (*mcp.ListResourceTemplatesResult,
32		error)
33
34	// ReadResource reads a specific resource from the server
35	ReadResource(
36		ctx context.Context,
37		request mcp.ReadResourceRequest,
38	) (*mcp.ReadResourceResult, error)
39
40	// Subscribe requests notifications for changes to a specific resource
41	Subscribe(ctx context.Context, request mcp.SubscribeRequest) error
42
43	// Unsubscribe cancels notifications for a specific resource
44	Unsubscribe(ctx context.Context, request mcp.UnsubscribeRequest) error
45
46	// ListPrompts requests a list of available prompts from the server
47	ListPrompts(
48		ctx context.Context,
49		request mcp.ListPromptsRequest,
50	) (*mcp.ListPromptsResult, error)
51
52	// GetPrompt retrieves a specific prompt from the server
53	GetPrompt(
54		ctx context.Context,
55		request mcp.GetPromptRequest,
56	) (*mcp.GetPromptResult, error)
57
58	// ListTools requests a list of available tools from the server
59	ListTools(
60		ctx context.Context,
61		request mcp.ListToolsRequest,
62	) (*mcp.ListToolsResult, error)
63
64	// CallTool invokes a specific tool on the server
65	CallTool(
66		ctx context.Context,
67		request mcp.CallToolRequest,
68	) (*mcp.CallToolResult, error)
69
70	// SetLevel sets the logging level for the server
71	SetLevel(ctx context.Context, request mcp.SetLevelRequest) error
72
73	// Complete requests completion options for a given argument
74	Complete(
75		ctx context.Context,
76		request mcp.CompleteRequest,
77	) (*mcp.CompleteResult, error)
78
79	// Close client connection and cleanup resources
80	Close() error
81
82	// OnNotification registers a handler for notifications
83	OnNotification(handler func(notification mcp.JSONRPCNotification))
84}