mcp_toolkit 0.3.0 → 0.5.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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +432 -2
  3. data/README.md +315 -34
  4. data/config/routes.rb +20 -5
  5. data/lib/mcp_toolkit/auth/authority.rb +2 -2
  6. data/lib/mcp_toolkit/authority/composite_tool_provider.rb +32 -0
  7. data/lib/mcp_toolkit/authority/context.rb +45 -0
  8. data/lib/mcp_toolkit/authority/controller_methods.rb +423 -0
  9. data/lib/mcp_toolkit/authority/registry_tool_provider.rb +69 -0
  10. data/lib/mcp_toolkit/authority/single_tool_provider.rb +25 -0
  11. data/lib/mcp_toolkit/authority/token.rb +124 -0
  12. data/lib/mcp_toolkit/authority/tools/base.rb +150 -0
  13. data/lib/mcp_toolkit/authority/tools/get.rb +59 -0
  14. data/lib/mcp_toolkit/authority/tools/list.rb +132 -0
  15. data/lib/mcp_toolkit/authority/tools/resource_schema.rb +52 -0
  16. data/lib/mcp_toolkit/authority/tools/resources.rb +55 -0
  17. data/lib/mcp_toolkit/authority.rb +24 -0
  18. data/lib/mcp_toolkit/configuration.rb +362 -5
  19. data/lib/mcp_toolkit/dispatcher.rb +248 -0
  20. data/lib/mcp_toolkit/engine.rb +26 -8
  21. data/lib/mcp_toolkit/engine_controllers.rb +124 -0
  22. data/lib/mcp_toolkit/filtering.rb +168 -23
  23. data/lib/mcp_toolkit/gateway/aggregator.rb +142 -0
  24. data/lib/mcp_toolkit/gateway/client.rb +305 -0
  25. data/lib/mcp_toolkit/gateway/proxy.rb +70 -0
  26. data/lib/mcp_toolkit/gateway/unknown_upstream.rb +8 -0
  27. data/lib/mcp_toolkit/gateway/upstream_call_error.rb +23 -0
  28. data/lib/mcp_toolkit/gateway/upstream_registry.rb +79 -0
  29. data/lib/mcp_toolkit/list_executor.rb +65 -4
  30. data/lib/mcp_toolkit/protocol.rb +106 -0
  31. data/lib/mcp_toolkit/rate_limiter.rb +73 -0
  32. data/lib/mcp_toolkit/registry.rb +30 -2
  33. data/lib/mcp_toolkit/resource.rb +173 -6
  34. data/lib/mcp_toolkit/resource_schema.rb +135 -13
  35. data/lib/mcp_toolkit/serializer/association_descriptor.rb +11 -0
  36. data/lib/mcp_toolkit/serializer/base.rb +2 -2
  37. data/lib/mcp_toolkit/serializer/target_ref.rb +7 -0
  38. data/lib/mcp_toolkit/session.rb +18 -10
  39. data/lib/mcp_toolkit/tool_reference_rewriter.rb +33 -0
  40. data/lib/mcp_toolkit/tools/authority_base.rb +148 -0
  41. data/lib/mcp_toolkit/tools/base.rb +23 -3
  42. data/lib/mcp_toolkit/tools/get.rb +1 -1
  43. data/lib/mcp_toolkit/tools/list.rb +27 -9
  44. data/lib/mcp_toolkit/tools/resource_schema.rb +12 -3
  45. data/lib/mcp_toolkit/tools/resources.rb +30 -7
  46. data/lib/mcp_toolkit/transport/controller_methods.rb +2 -2
  47. data/lib/mcp_toolkit/usage_metering/recorder.rb +121 -0
  48. data/lib/mcp_toolkit/version.rb +1 -1
  49. data/lib/mcp_toolkit.rb +16 -3
  50. metadata +42 -2
  51. data/app/controllers/mcp_toolkit/server_controller.rb +0 -19
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mcp_toolkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karol Galanciak
@@ -65,6 +65,20 @@ dependencies:
65
65
  - - ">="
66
66
  - !ruby/object:Gem::Version
67
67
  version: '1.0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: concurrent-ruby
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '1.1'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '1.1'
68
82
  description: |
69
83
  mcp_toolkit extracts the shared MCP-server framework that Smily's apps grew
70
84
  independently: a Streamable-HTTP transport, cache-backed sessions, central-app
@@ -84,32 +98,57 @@ files:
84
98
  - LICENSE.txt
85
99
  - README.md
86
100
  - Rakefile
87
- - app/controllers/mcp_toolkit/server_controller.rb
88
101
  - config/routes.rb
89
102
  - lib/mcp_toolkit.rb
90
103
  - lib/mcp_toolkit/auth/authenticator.rb
91
104
  - lib/mcp_toolkit/auth/authority.rb
92
105
  - lib/mcp_toolkit/auth/authority_server_client.rb
93
106
  - lib/mcp_toolkit/auth/introspection.rb
107
+ - lib/mcp_toolkit/authority.rb
108
+ - lib/mcp_toolkit/authority/composite_tool_provider.rb
109
+ - lib/mcp_toolkit/authority/context.rb
110
+ - lib/mcp_toolkit/authority/controller_methods.rb
111
+ - lib/mcp_toolkit/authority/registry_tool_provider.rb
112
+ - lib/mcp_toolkit/authority/single_tool_provider.rb
113
+ - lib/mcp_toolkit/authority/token.rb
114
+ - lib/mcp_toolkit/authority/tools/base.rb
115
+ - lib/mcp_toolkit/authority/tools/get.rb
116
+ - lib/mcp_toolkit/authority/tools/list.rb
117
+ - lib/mcp_toolkit/authority/tools/resource_schema.rb
118
+ - lib/mcp_toolkit/authority/tools/resources.rb
94
119
  - lib/mcp_toolkit/configuration.rb
120
+ - lib/mcp_toolkit/dispatcher.rb
95
121
  - lib/mcp_toolkit/engine.rb
122
+ - lib/mcp_toolkit/engine_controllers.rb
96
123
  - lib/mcp_toolkit/errors/base.rb
97
124
  - lib/mcp_toolkit/errors/configuration_error.rb
98
125
  - lib/mcp_toolkit/errors/invalid_params.rb
99
126
  - lib/mcp_toolkit/errors/unauthorized.rb
100
127
  - lib/mcp_toolkit/field_selection.rb
101
128
  - lib/mcp_toolkit/filtering.rb
129
+ - lib/mcp_toolkit/gateway/aggregator.rb
130
+ - lib/mcp_toolkit/gateway/client.rb
131
+ - lib/mcp_toolkit/gateway/proxy.rb
132
+ - lib/mcp_toolkit/gateway/unknown_upstream.rb
133
+ - lib/mcp_toolkit/gateway/upstream_call_error.rb
134
+ - lib/mcp_toolkit/gateway/upstream_registry.rb
102
135
  - lib/mcp_toolkit/get_executor.rb
103
136
  - lib/mcp_toolkit/list_executor.rb
137
+ - lib/mcp_toolkit/protocol.rb
138
+ - lib/mcp_toolkit/rate_limiter.rb
104
139
  - lib/mcp_toolkit/registry.rb
105
140
  - lib/mcp_toolkit/resource.rb
106
141
  - lib/mcp_toolkit/resource_schema.rb
107
142
  - lib/mcp_toolkit/serialization.rb
143
+ - lib/mcp_toolkit/serializer/association_descriptor.rb
108
144
  - lib/mcp_toolkit/serializer/base.rb
145
+ - lib/mcp_toolkit/serializer/target_ref.rb
109
146
  - lib/mcp_toolkit/server.rb
110
147
  - lib/mcp_toolkit/session.rb
111
148
  - lib/mcp_toolkit/sql_sanitizer.rb
112
149
  - lib/mcp_toolkit/token_kinds.rb
150
+ - lib/mcp_toolkit/tool_reference_rewriter.rb
151
+ - lib/mcp_toolkit/tools/authority_base.rb
113
152
  - lib/mcp_toolkit/tools/base.rb
114
153
  - lib/mcp_toolkit/tools/get.rb
115
154
  - lib/mcp_toolkit/tools/list.rb
@@ -117,6 +156,7 @@ files:
117
156
  - lib/mcp_toolkit/tools/resources.rb
118
157
  - lib/mcp_toolkit/transport/controller_methods.rb
119
158
  - lib/mcp_toolkit/unknown_resource_message.rb
159
+ - lib/mcp_toolkit/usage_metering/recorder.rb
120
160
  - lib/mcp_toolkit/version.rb
121
161
  - sig/mcp_toolkit.rbs
122
162
  homepage: https://github.com/BookingSync/mcp_toolkit
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # The MCP transport controller, provided BY the gem so a satellite mounting
4
- # McpToolkit::Engine writes no controller of its own. It is the standalone
5
- # McpToolkit::Transport::ControllerMethods concern wired into a controller.
6
- #
7
- # Its parent class is configurable (Doorkeeper-style) via
8
- # `McpToolkit.config.parent_controller` (default "ActionController::Base"), so a
9
- # satellite can keep ActionController::Base (NOT ::API) for its logstasher
10
- # `helper_method` hook:
11
- #
12
- # c.parent_controller = "ApplicationController"
13
- #
14
- # Lives under the gem's app/controllers (an engine path), so it's loaded by Rails'
15
- # autoloader via the engine — never by the gem's own Zeitwerk loader, which only
16
- # manages lib/. Non-Rails consumers never see it.
17
- class McpToolkit::ServerController < McpToolkit.config.parent_controller.constantize
18
- include McpToolkit::Transport::ControllerMethods
19
- end