x
This commit is contained in:
74
internal/mcp/resource.go
Normal file
74
internal/mcp/resource.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package mcp
|
||||
|
||||
// Document: https://modelcontextprotocol.io/docs/concepts/resources
|
||||
|
||||
const (
|
||||
// Client => Server
|
||||
MethodResourcesList = "resources/list"
|
||||
MethodResourcesTemplateList = "resources/templates/list"
|
||||
MethodResourcesRead = "resources/read"
|
||||
MethodResourcesSubscribe = "resources/subscribe"
|
||||
MethodResourcesUnsubscribe = "resources/unsubscribe"
|
||||
|
||||
// Server => Client
|
||||
NotificationResourcesListChanged = "notifications/resources/list_changed"
|
||||
NofiticationResourcesUpdated = "notifications/resources/updated"
|
||||
)
|
||||
|
||||
// Direct resources
|
||||
//
|
||||
// {
|
||||
// uri: string; // Unique identifier for the resource
|
||||
// name: string; // Human-readable name
|
||||
// description?: string; // Optional description
|
||||
// mimeType?: string; // Optional MIME type
|
||||
// }
|
||||
type Resource struct {
|
||||
URI string `json:"uri"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description,omitempty"`
|
||||
MimeType string `json:"mimeType,omitempty"`
|
||||
}
|
||||
|
||||
// Resource templates
|
||||
//
|
||||
// {
|
||||
// uriTemplate: string; // URI template following RFC 6570
|
||||
// name: string; // Human-readable name for this type
|
||||
// description?: string; // Optional description
|
||||
// mimeType?: string; // Optional MIME type for all matching resources
|
||||
// }
|
||||
type ResourceTemplate struct {
|
||||
URITemplate string `json:"uriTemplate"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description,omitempty"`
|
||||
MimeType string `json:"mimeType,omitempty"`
|
||||
}
|
||||
|
||||
// Reading resources
|
||||
// {
|
||||
// contents: [
|
||||
// {
|
||||
// uri: string; // The URI of the resource
|
||||
// mimeType?: string; // Optional MIME type
|
||||
|
||||
// // One of:
|
||||
// text?: string; // For text resources
|
||||
// blob?: string; // For binary resources (base64 encoded)
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
type ReadingResource struct {
|
||||
Contents []ReadingResourceContent `json:"contents"`
|
||||
}
|
||||
|
||||
type ResourcesReadRequest struct {
|
||||
URI string `json:"uri"`
|
||||
}
|
||||
|
||||
type ReadingResourceContent struct {
|
||||
URI string `json:"uri"`
|
||||
MimeType string `json:"mimeType,omitempty"`
|
||||
Text string `json:"text,omitempty"`
|
||||
Blob string `json:"blob,omitempty"`
|
||||
}
|
||||
Reference in New Issue
Block a user