Skip to content

Commit 2d9dbe6

Browse files
committed
Test README resources example
1 parent 0cfd107 commit 2d9dbe6

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,7 @@ MCP spec includes [Resources](https://modelcontextprotocol.io/docs/concepts/reso
474474

475475
The `MCP::Resource` class provides a way to register resources with the server.
476476

477+
<!-- SNIPPET ID: resources -->
477478
```ruby
478479
resource = MCP::Resource.new(
479480
uri: "https://example.com/my_resource",
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# frozen_string_literal: true
2+
3+
require "mcp"
4+
5+
b = binding
6+
eval(File.read("code_snippet.rb"), b) # rubocop:disable Security/Eval -- We need to be able to extract the server local variable
7+
server = b.local_variable_get(:server)
8+
9+
puts server.handle_json({ jsonrpc: "2.0", id: "1", method: "resources/list" }.to_json)

test/integration/readme_code_snippets_test.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,28 @@ class ReadmeCodeSnippetsTest < ActiveSupport::TestCase
248248
STDOUT
249249
end
250250

251+
test "Resources examples work exactly as documented in README" do
252+
assert_json_lines(
253+
[
254+
{
255+
jsonrpc: "2.0",
256+
id: "1",
257+
result: {
258+
resources: [
259+
{
260+
uri: "https://example.com/my_resource",
261+
name: "My Resource",
262+
description: "Lorem ipsum dolor sit amet",
263+
mimeType: "text/html",
264+
},
265+
],
266+
},
267+
},
268+
],
269+
run_code_snippet("resources"),
270+
)
271+
end
272+
251273
private
252274

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

0 commit comments

Comments
 (0)