|
| 1 | +// Package client provides MCP (Model Control Protocol) client implementations. |
| 2 | +package client |
| 3 | + |
| 4 | +import ( |
| 5 | + "context" |
| 6 | + |
| 7 | + "github.com/mark3labs/mcp-go/mcp" |
| 8 | +) |
| 9 | + |
| 10 | +// MCPClient represents an MCP client interface |
| 11 | +type 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 | +} |
0 commit comments