MCPcopy Create free account
hub / github.com/modelcontextprotocol/go-sdk / Example_resources

Function Example_resources

mcp/server_example_test.go:150–218  ·  view source on GitHub ↗

!-logging !+resources

()

Source from the content-addressed store, hash-verified

148
149// !+resources
150func Example_resources() {
151 ctx := context.Background()
152
153 resources := map[string]string{
154 "file:///a": "a",
155 "file:///dir/x": "x",
156 "file:///dir/y": "y",
157 }
158
159 handler := func(_ context.Context, req *mcp.ReadResourceRequest) (*mcp.ReadResourceResult, error) {
160 uri := req.Params.URI
161 c, ok := resources[uri]
162 if !ok {
163 return nil, mcp.ResourceNotFoundError(uri)
164 }
165 return &mcp.ReadResourceResult{
166 Contents: []*mcp.ResourceContents{{URI: uri, Text: c}},
167 }, nil
168 }
169
170 // Create a server with a single resource.
171 s := mcp.NewServer(&mcp.Implementation{Name: "server", Version: "v0.0.1"}, nil)
172 s.AddResource(&mcp.Resource{URI: "file:///a"}, handler)
173 s.AddResourceTemplate(&mcp.ResourceTemplate{URITemplate: "file:///dir/{f}"}, handler)
174
175 // Create a client.
176 c := mcp.NewClient(&mcp.Implementation{Name: "client", Version: "v0.0.1"}, nil)
177
178 // Connect the server and client.
179 t1, t2 := mcp.NewInMemoryTransports()
180 if _, err := s.Connect(ctx, t1, nil); err != nil {
181 log.Fatal(err)
182 }
183 cs, err := c.Connect(ctx, t2, nil)
184 if err != nil {
185 log.Fatal(err)
186 }
187 defer cs.Close()
188
189 // List resources and resource templates.
190 for r, err := range cs.Resources(ctx, nil) {
191 if err != nil {
192 log.Fatal(err)
193 }
194 fmt.Println(r.URI)
195 }
196 for r, err := range cs.ResourceTemplates(ctx, nil) {
197 if err != nil {
198 log.Fatal(err)
199 }
200 fmt.Println(r.URITemplate)
201 }
202
203 // Read resources.
204 for _, path := range []string{"a", "dir/x", "b"} {
205 res, err := cs.ReadResource(ctx, &mcp.ReadResourceParams{URI: "file:///" + path})
206 if err != nil {
207 fmt.Println(err)

Callers

nothing calls this directly

Calls 12

AddResourceMethod · 0.95
AddResourceTemplateMethod · 0.95
ConnectMethod · 0.95
ConnectMethod · 0.95
ResourceNotFoundErrorFunction · 0.92
NewServerFunction · 0.92
NewClientFunction · 0.92
NewInMemoryTransportsFunction · 0.92
ResourcesMethod · 0.80
ResourceTemplatesMethod · 0.80
ReadResourceMethod · 0.80
CloseMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…