mcp_toolkit 0.3.0 → 0.4.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +201 -2
- data/README.md +315 -34
- data/config/routes.rb +19 -4
- data/lib/mcp_toolkit/auth/authority.rb +2 -2
- data/lib/mcp_toolkit/authority/composite_tool_provider.rb +32 -0
- data/lib/mcp_toolkit/authority/context.rb +45 -0
- data/lib/mcp_toolkit/authority/controller_methods.rb +408 -0
- data/lib/mcp_toolkit/authority/registry_tool_provider.rb +70 -0
- data/lib/mcp_toolkit/authority/token.rb +124 -0
- data/lib/mcp_toolkit/authority/tools/base.rb +122 -0
- data/lib/mcp_toolkit/authority/tools/get.rb +58 -0
- data/lib/mcp_toolkit/authority/tools/list.rb +84 -0
- data/lib/mcp_toolkit/authority/tools/resource_schema.rb +44 -0
- data/lib/mcp_toolkit/authority/tools/resources.rb +33 -0
- data/lib/mcp_toolkit/authority.rb +24 -0
- data/lib/mcp_toolkit/configuration.rb +205 -2
- data/lib/mcp_toolkit/dispatcher.rb +234 -0
- data/lib/mcp_toolkit/engine.rb +22 -7
- data/lib/mcp_toolkit/engine_controllers.rb +116 -0
- data/lib/mcp_toolkit/gateway/aggregator.rb +122 -0
- data/lib/mcp_toolkit/gateway/client.rb +305 -0
- data/lib/mcp_toolkit/gateway/proxy.rb +70 -0
- data/lib/mcp_toolkit/gateway/unknown_upstream.rb +8 -0
- data/lib/mcp_toolkit/gateway/upstream_call_error.rb +23 -0
- data/lib/mcp_toolkit/gateway/upstream_registry.rb +79 -0
- data/lib/mcp_toolkit/list_executor.rb +17 -0
- data/lib/mcp_toolkit/protocol.rb +106 -0
- data/lib/mcp_toolkit/rate_limiter.rb +73 -0
- data/lib/mcp_toolkit/registry.rb +30 -2
- data/lib/mcp_toolkit/resource.rb +125 -7
- data/lib/mcp_toolkit/resource_schema.rb +14 -1
- data/lib/mcp_toolkit/serializer/base.rb +2 -2
- data/lib/mcp_toolkit/session.rb +17 -9
- data/lib/mcp_toolkit/tools/authority_base.rb +127 -0
- data/lib/mcp_toolkit/transport/controller_methods.rb +2 -2
- data/lib/mcp_toolkit/usage_metering/recorder.rb +95 -0
- data/lib/mcp_toolkit/version.rb +1 -1
- data/lib/mcp_toolkit.rb +16 -3
- metadata +38 -2
- data/app/controllers/mcp_toolkit/server_controller.rb +0 -19
data/lib/mcp_toolkit.rb
CHANGED
|
@@ -15,9 +15,12 @@ require "zeitwerk"
|
|
|
15
15
|
# active_support/concern - Transport::ControllerMethods is an includable concern
|
|
16
16
|
# active_support/cache - the default MemoryStore cache_store
|
|
17
17
|
#
|
|
18
|
-
#
|
|
19
|
-
#
|
|
20
|
-
# connection
|
|
18
|
+
# Two third-party libs are the exception to the centralize-here rule: each is
|
|
19
|
+
# required alongside its owner file rather than up front.
|
|
20
|
+
# faraday - the HTTP client, required by the objects that build a connection
|
|
21
|
+
# (Auth::AuthorityServerClient and Gateway::Client).
|
|
22
|
+
# concurrent - concurrent-ruby's futures, required by its sole owner
|
|
23
|
+
# Gateway::Aggregator (which pulls upstreams in parallel).
|
|
21
24
|
require "json"
|
|
22
25
|
require "digest"
|
|
23
26
|
require "time"
|
|
@@ -63,8 +66,18 @@ loader.ignore("#{__dir__}/mcp_toolkit/version.rb")
|
|
|
63
66
|
# under `app/controllers` (outside this lib-rooted loader), so it needs no ignore;
|
|
64
67
|
# it is loaded by Rails' autoloader via the engine when mounted.
|
|
65
68
|
loader.ignore("#{__dir__}/mcp_toolkit/engine.rb")
|
|
69
|
+
# `engine_controllers.rb` reopens `McpToolkit` to add the lazy `parent_controller`
|
|
70
|
+
# builder + `const_missing` (it defines module methods, not a file-named
|
|
71
|
+
# constant), so it is required explicitly below rather than autoloaded.
|
|
72
|
+
loader.ignore("#{__dir__}/mcp_toolkit/engine_controllers.rb")
|
|
66
73
|
loader.setup
|
|
67
74
|
|
|
75
|
+
# The lazy `parent_controller` builder (McpToolkit.build_engine_controllers! /
|
|
76
|
+
# reset_engine_controllers! / const_missing). Required unconditionally (it names no
|
|
77
|
+
# Rails constant at load time); it only builds controllers when one is referenced,
|
|
78
|
+
# which happens only under Rails.
|
|
79
|
+
require_relative "mcp_toolkit/engine_controllers"
|
|
80
|
+
|
|
68
81
|
# The toolkit for building account-scoped, read-only MCP servers on top of the
|
|
69
82
|
# official `mcp` gem. See README.md for the satellite + authority quickstarts.
|
|
70
83
|
#
|
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.
|
|
4
|
+
version: 0.4.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,23 +98,43 @@ 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/token.rb
|
|
113
|
+
- lib/mcp_toolkit/authority/tools/base.rb
|
|
114
|
+
- lib/mcp_toolkit/authority/tools/get.rb
|
|
115
|
+
- lib/mcp_toolkit/authority/tools/list.rb
|
|
116
|
+
- lib/mcp_toolkit/authority/tools/resource_schema.rb
|
|
117
|
+
- lib/mcp_toolkit/authority/tools/resources.rb
|
|
94
118
|
- lib/mcp_toolkit/configuration.rb
|
|
119
|
+
- lib/mcp_toolkit/dispatcher.rb
|
|
95
120
|
- lib/mcp_toolkit/engine.rb
|
|
121
|
+
- lib/mcp_toolkit/engine_controllers.rb
|
|
96
122
|
- lib/mcp_toolkit/errors/base.rb
|
|
97
123
|
- lib/mcp_toolkit/errors/configuration_error.rb
|
|
98
124
|
- lib/mcp_toolkit/errors/invalid_params.rb
|
|
99
125
|
- lib/mcp_toolkit/errors/unauthorized.rb
|
|
100
126
|
- lib/mcp_toolkit/field_selection.rb
|
|
101
127
|
- lib/mcp_toolkit/filtering.rb
|
|
128
|
+
- lib/mcp_toolkit/gateway/aggregator.rb
|
|
129
|
+
- lib/mcp_toolkit/gateway/client.rb
|
|
130
|
+
- lib/mcp_toolkit/gateway/proxy.rb
|
|
131
|
+
- lib/mcp_toolkit/gateway/unknown_upstream.rb
|
|
132
|
+
- lib/mcp_toolkit/gateway/upstream_call_error.rb
|
|
133
|
+
- lib/mcp_toolkit/gateway/upstream_registry.rb
|
|
102
134
|
- lib/mcp_toolkit/get_executor.rb
|
|
103
135
|
- lib/mcp_toolkit/list_executor.rb
|
|
136
|
+
- lib/mcp_toolkit/protocol.rb
|
|
137
|
+
- lib/mcp_toolkit/rate_limiter.rb
|
|
104
138
|
- lib/mcp_toolkit/registry.rb
|
|
105
139
|
- lib/mcp_toolkit/resource.rb
|
|
106
140
|
- lib/mcp_toolkit/resource_schema.rb
|
|
@@ -110,6 +144,7 @@ files:
|
|
|
110
144
|
- lib/mcp_toolkit/session.rb
|
|
111
145
|
- lib/mcp_toolkit/sql_sanitizer.rb
|
|
112
146
|
- lib/mcp_toolkit/token_kinds.rb
|
|
147
|
+
- lib/mcp_toolkit/tools/authority_base.rb
|
|
113
148
|
- lib/mcp_toolkit/tools/base.rb
|
|
114
149
|
- lib/mcp_toolkit/tools/get.rb
|
|
115
150
|
- lib/mcp_toolkit/tools/list.rb
|
|
@@ -117,6 +152,7 @@ files:
|
|
|
117
152
|
- lib/mcp_toolkit/tools/resources.rb
|
|
118
153
|
- lib/mcp_toolkit/transport/controller_methods.rb
|
|
119
154
|
- lib/mcp_toolkit/unknown_resource_message.rb
|
|
155
|
+
- lib/mcp_toolkit/usage_metering/recorder.rb
|
|
120
156
|
- lib/mcp_toolkit/version.rb
|
|
121
157
|
- sig/mcp_toolkit.rbs
|
|
122
158
|
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
|