model-context-protocol-rb 0.5.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +37 -1
  3. data/README.md +181 -950
  4. data/lib/model_context_protocol/rspec/helpers.rb +54 -0
  5. data/lib/model_context_protocol/rspec/matchers/be_mcp_error_response.rb +123 -0
  6. data/lib/model_context_protocol/rspec/matchers/be_valid_mcp_class.rb +103 -0
  7. data/lib/model_context_protocol/rspec/matchers/be_valid_mcp_prompt_response.rb +126 -0
  8. data/lib/model_context_protocol/rspec/matchers/be_valid_mcp_resource_response.rb +121 -0
  9. data/lib/model_context_protocol/rspec/matchers/be_valid_mcp_tool_response.rb +135 -0
  10. data/lib/model_context_protocol/rspec/matchers/have_audio_content.rb +109 -0
  11. data/lib/model_context_protocol/rspec/matchers/have_embedded_resource_content.rb +150 -0
  12. data/lib/model_context_protocol/rspec/matchers/have_image_content.rb +109 -0
  13. data/lib/model_context_protocol/rspec/matchers/have_message_count.rb +87 -0
  14. data/lib/model_context_protocol/rspec/matchers/have_message_with_role.rb +152 -0
  15. data/lib/model_context_protocol/rspec/matchers/have_resource_annotations.rb +135 -0
  16. data/lib/model_context_protocol/rspec/matchers/have_resource_blob.rb +108 -0
  17. data/lib/model_context_protocol/rspec/matchers/have_resource_link_content.rb +138 -0
  18. data/lib/model_context_protocol/rspec/matchers/have_resource_mime_type.rb +103 -0
  19. data/lib/model_context_protocol/rspec/matchers/have_resource_text.rb +112 -0
  20. data/lib/model_context_protocol/rspec/matchers/have_structured_content.rb +88 -0
  21. data/lib/model_context_protocol/rspec/matchers/have_text_content.rb +113 -0
  22. data/lib/model_context_protocol/rspec/matchers.rb +31 -0
  23. data/lib/model_context_protocol/rspec.rb +23 -0
  24. data/lib/model_context_protocol/server/cancellable.rb +5 -5
  25. data/lib/model_context_protocol/server/{mcp_logger.rb → client_logger.rb} +8 -11
  26. data/lib/model_context_protocol/server/configuration.rb +196 -109
  27. data/lib/model_context_protocol/server/content_helpers.rb +1 -1
  28. data/lib/model_context_protocol/server/global_config/server_logging.rb +78 -0
  29. data/lib/model_context_protocol/server/progressable.rb +43 -21
  30. data/lib/model_context_protocol/server/prompt.rb +12 -21
  31. data/lib/model_context_protocol/server/redis_client_proxy.rb +2 -14
  32. data/lib/model_context_protocol/server/redis_config.rb +5 -7
  33. data/lib/model_context_protocol/server/redis_pool_manager.rb +11 -14
  34. data/lib/model_context_protocol/server/registry.rb +8 -0
  35. data/lib/model_context_protocol/server/resource.rb +7 -4
  36. data/lib/model_context_protocol/server/router.rb +285 -9
  37. data/lib/model_context_protocol/server/server_logger.rb +31 -0
  38. data/lib/model_context_protocol/server/stdio_configuration.rb +114 -0
  39. data/lib/model_context_protocol/server/stdio_transport/request_store.rb +12 -53
  40. data/lib/model_context_protocol/server/stdio_transport.rb +18 -12
  41. data/lib/model_context_protocol/server/streamable_http_configuration.rb +218 -0
  42. data/lib/model_context_protocol/server/streamable_http_transport/event_counter.rb +0 -13
  43. data/lib/model_context_protocol/server/streamable_http_transport/message_poller.rb +9 -9
  44. data/lib/model_context_protocol/server/streamable_http_transport/notification_queue.rb +0 -41
  45. data/lib/model_context_protocol/server/streamable_http_transport/request_store.rb +21 -124
  46. data/lib/model_context_protocol/server/streamable_http_transport/server_request_store.rb +167 -0
  47. data/lib/model_context_protocol/server/streamable_http_transport/session_message_queue.rb +0 -58
  48. data/lib/model_context_protocol/server/streamable_http_transport/session_store.rb +17 -31
  49. data/lib/model_context_protocol/server/streamable_http_transport/stream_registry.rb +0 -34
  50. data/lib/model_context_protocol/server/streamable_http_transport.rb +589 -215
  51. data/lib/model_context_protocol/server/tool.rb +73 -6
  52. data/lib/model_context_protocol/server.rb +204 -261
  53. data/lib/model_context_protocol/version.rb +1 -1
  54. data/lib/model_context_protocol.rb +4 -1
  55. data/lib/puma/plugin/mcp.rb +39 -0
  56. data/tasks/mcp.rake +26 -0
  57. data/tasks/templates/dev-http-puma.erb +251 -0
  58. data/tasks/templates/dev-http.erb +166 -184
  59. data/tasks/templates/dev.erb +29 -7
  60. metadata +33 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8fd0681c65b47196375ec7f4934cadf226ed01b1b289caf296348698808ef5cb
4
- data.tar.gz: 4ce234855d56b724b6f69b97851ff1ee4db65370b7361ea0a65c43a929c448b7
3
+ metadata.gz: d3d19a73cf5bc0b39d04e9f511089813926c8ae59c4d090061ca8ab8a059bebb
4
+ data.tar.gz: 28afc6cf8c197ce5b78888d31feff9617157ec9923cb0684ce07a6cf93e56a46
5
5
  SHA512:
6
- metadata.gz: b3bafa3fe92aa05ff380ad5fc311c0143d5e1bb6c3a91e50893115eb01ad2ea8b2d93dde89240815b50629fcb3b3b3467585766ac42d2c7087cd0be55b431455
7
- data.tar.gz: 9d1c4f1c5f93352bf9392f9aeaf63253534348787aecb0866abe160dbf7cebc302bfec751955b19d0a06d9d60675c450960d401af2538aa9b100fe076bc7fd94
6
+ metadata.gz: d7a3b496a50787e354277fde4f1f65e007c5e704ba55419a2ffadbe2634c8f3a61668152ff612fc1735c58add0b2eb1a635977b149a2f2483d74f782b463494c
7
+ data.tar.gz: c62606a10f0327fd144480bf35e17f484db5d2bf095392275706098b0ad2538a10564e5d39cb7b9b9464979d272ce7542d199297f6641288c4594eb8fd453392
data/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.7.0] - 2026-03-13
4
+
5
+ - (Breaking) Refactor server to use factory methods and singleton pattern.
6
+ - Use `Server.with_stdio_transport` or `Server.with_streamable_http_transport` to configure.
7
+ - Use `Server.start` to activate the transport.
8
+ - Use `Server.serve(env:, session_context:)` to handle HTTP requests.
9
+ - Use `Server.shutdown` for cleanup on exit.
10
+ - (Breaking) Sessions are now required by default for streamable HTTP transport. Set `require_sessions = false` to opt out.
11
+ - (Breaking) Simplify Redis and registry configuration APIs.
12
+ - Add Puma plugin (`puma/plugin/mcp`) to manage server lifecycle automatically.
13
+ - Add RSpec matchers for testing MCP handlers (e.g., `be_valid_mcp_tool_response`, `have_text_content`).
14
+ - Add tool annotations and security schemes.
15
+ - Add spec-compliant session management.
16
+ - Add list changed notifications for prompts, resources, and tools (streamable HTTP transport only).
17
+ - Add `session_context` parameter to `Server.serve` for per-request context (e.g., user_id from authentication).
18
+ - Add `ssl_params` configuration option for Redis connections.
19
+ - Skip environment variable manipulation for streamable HTTP transport (thread-unsafe in multi-threaded servers).
20
+ - Use thread-safe data structures for session protocol version tracking.
21
+ - Remove dead code across the codebase.
22
+ - (Fix) Fix logdev references in server logger.
23
+ - (Fix) Ensure context hash keys are symbolized when retrieved from session.
24
+ - (Fix) Fix `resource_link` content helper to return a Content object like all other content helpers.
25
+
26
+ ## [0.6.0] - 2026-01-26
27
+
28
+ - Implement server logging capability for internal server diagnostics.
29
+ - Add informational and debug logging in streamable HTTP transport.
30
+ - (Fix) Ensure stream monitor thread shuts down quickly.
31
+ - (Fix) Ensure streams are closed when the server shuts down.
32
+ - (Fix) Fix stream handling in streamable HTTP transport.
33
+ - (Fix) Ensure empty options don't break the registry.
34
+ - (Fix) Ensure progressable timer tasks do not run indefinitely.
35
+ - (Breaking) Update connection pool dependency; requires updating other gems that depend on connection_pool.
36
+
3
37
  ## [0.5.1] - 2025-09-23
4
38
 
5
39
  - (Fix) Ensure streams are properly closed when clients disconnect.
@@ -78,7 +112,9 @@
78
112
 
79
113
  - Initial release
80
114
 
81
- [Unreleased]: https://github.com/dickdavis/model-context-protocol-rb/compare/v0.5.0...HEAD
115
+ [Unreleased]: https://github.com/dickdavis/model-context-protocol-rb/compare/v0.7.0...HEAD
116
+ [0.7.0]: https://github.com/dickdavis/model-context-protocol-rb/compare/v0.6.0...v0.7.0
117
+ [0.6.0]: https://github.com/dickdavis/model-context-protocol-rb/compare/v0.5.1...v0.6.0
82
118
  [0.5.1]: https://github.com/dickdavis/model-context-protocol-rb/compare/v0.5.0...v0.5.1
83
119
  [0.5.0]: https://github.com/dickdavis/model-context-protocol-rb/compare/v0.4.0...v0.5.0
84
120
  [0.4.0]: https://github.com/dickdavis/model-context-protocol-rb/compare/v0.3.4...v0.4.0