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}