Skip to content

Commit d4fc68d

Browse files
committed
Test README resources read handler example
1 parent 2d9dbe6 commit d4fc68d

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,7 @@ server = MCP::Server.new(
491491

492492
The server must register a handler for the `resources/read` method to retrieve a resource dynamically.
493493

494+
<!-- SNIPPET ID: resources_read_handler -->
494495
```ruby
495496
server.resources_read_handler do |params|
496497
[{
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# frozen_string_literal: true
2+
3+
require "mcp"
4+
5+
server = MCP::Server.new
6+
7+
b = binding
8+
eval(File.read("code_snippet.rb"), b) # rubocop:disable Security/Eval -- We need the snippet to have access to the server variable
9+
10+
puts server.handle_json({
11+
jsonrpc: "2.0",
12+
id: "1",
13+
method: "resources/read",
14+
params: { uri: "https://example.com/test_resource" },
15+
}.to_json)

test/integration/readme_code_snippets_test.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,27 @@ class ReadmeCodeSnippetsTest < ActiveSupport::TestCase
270270
)
271271
end
272272

273+
test "Resources Read Handler example works exactly as documented in README" do
274+
assert_json_lines(
275+
[
276+
{
277+
jsonrpc: "2.0",
278+
id: "1",
279+
result: {
280+
contents: [
281+
{
282+
uri: "https://example.com/test_resource",
283+
mimeType: "text/plain",
284+
text: "https://example.com/test_resource",
285+
},
286+
],
287+
},
288+
},
289+
],
290+
run_code_snippet("resources_read_handler"),
291+
)
292+
end
293+
273294
private
274295

275296
def assert_json_lines(expected, actual, message = "Expected the given JSON lines")

0 commit comments

Comments
 (0)