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}