model-context-protocol-rb 0.5.0 → 0.6.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 +18 -1
- data/README.md +262 -191
- data/lib/model_context_protocol/server/cancellable.rb +5 -5
- data/lib/model_context_protocol/server/{mcp_logger.rb → client_logger.rb} +7 -10
- data/lib/model_context_protocol/server/configuration.rb +17 -34
- data/lib/model_context_protocol/server/global_config/server_logging.rb +78 -0
- data/lib/model_context_protocol/server/progressable.rb +43 -21
- data/lib/model_context_protocol/server/prompt.rb +12 -7
- data/lib/model_context_protocol/server/redis_pool_manager.rb +1 -1
- data/lib/model_context_protocol/server/resource.rb +7 -4
- data/lib/model_context_protocol/server/router.rb +8 -7
- data/lib/model_context_protocol/server/server_logger.rb +28 -0
- data/lib/model_context_protocol/server/stdio_transport/request_store.rb +17 -17
- data/lib/model_context_protocol/server/stdio_transport.rb +18 -12
- data/lib/model_context_protocol/server/streamable_http_transport/message_poller.rb +9 -9
- data/lib/model_context_protocol/server/streamable_http_transport/request_store.rb +36 -36
- data/lib/model_context_protocol/server/streamable_http_transport/server_request_store.rb +231 -0
- data/lib/model_context_protocol/server/streamable_http_transport.rb +423 -167
- data/lib/model_context_protocol/server/tool.rb +6 -5
- data/lib/model_context_protocol/server.rb +15 -13
- data/lib/model_context_protocol/version.rb +1 -1
- metadata +9 -6
|
@@ -9,13 +9,14 @@ module ModelContextProtocol
|
|
|
9
9
|
include ModelContextProtocol::Server::ContentHelpers
|
|
10
10
|
include ModelContextProtocol::Server::Progressable
|
|
11
11
|
|
|
12
|
-
attr_reader :arguments, :context, :
|
|
12
|
+
attr_reader :arguments, :context, :client_logger, :server_logger
|
|
13
13
|
|
|
14
|
-
def initialize(arguments,
|
|
14
|
+
def initialize(arguments, client_logger, server_logger, context = {})
|
|
15
15
|
validate!(arguments)
|
|
16
16
|
@arguments = arguments
|
|
17
17
|
@context = context
|
|
18
|
-
@
|
|
18
|
+
@client_logger = client_logger
|
|
19
|
+
@server_logger = server_logger
|
|
19
20
|
end
|
|
20
21
|
|
|
21
22
|
def call
|
|
@@ -103,8 +104,8 @@ module ModelContextProtocol
|
|
|
103
104
|
subclass.instance_variable_set(:@output_schema, @output_schema)
|
|
104
105
|
end
|
|
105
106
|
|
|
106
|
-
def call(arguments,
|
|
107
|
-
new(arguments,
|
|
107
|
+
def call(arguments, client_logger, server_logger, context = {})
|
|
108
|
+
new(arguments, client_logger, server_logger, context).call
|
|
108
109
|
rescue JSON::Schema::ValidationError => validation_error
|
|
109
110
|
raise ModelContextProtocol::Server::ParameterValidationError, validation_error.message
|
|
110
111
|
rescue OutputSchemaValidationError, ModelContextProtocol::Server::ResponseArgumentsError => tool_error
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
require "logger"
|
|
2
|
-
|
|
3
1
|
module ModelContextProtocol
|
|
4
2
|
class Server
|
|
5
3
|
# Raised when invalid response arguments are provided.
|
|
@@ -98,11 +96,11 @@ module ModelContextProtocol
|
|
|
98
96
|
router.map("logging/setLevel") do |message|
|
|
99
97
|
level = message["params"]["level"]
|
|
100
98
|
|
|
101
|
-
unless
|
|
102
|
-
raise ParameterValidationError, "Invalid log level: #{level}. Valid levels are: #{
|
|
99
|
+
unless ClientLogger::VALID_LOG_LEVELS.include?(level)
|
|
100
|
+
raise ParameterValidationError, "Invalid log level: #{level}. Valid levels are: #{ClientLogger::VALID_LOG_LEVELS.join(", ")}"
|
|
103
101
|
end
|
|
104
102
|
|
|
105
|
-
configuration.
|
|
103
|
+
configuration.client_logger.set_mcp_level(level)
|
|
106
104
|
LoggingSetLevelResponse[]
|
|
107
105
|
end
|
|
108
106
|
|
|
@@ -160,7 +158,7 @@ module ModelContextProtocol
|
|
|
160
158
|
raise ModelContextProtocol::Server::ParameterValidationError, "resource not found for #{uri}"
|
|
161
159
|
end
|
|
162
160
|
|
|
163
|
-
resource.call
|
|
161
|
+
resource.call(configuration.client_logger, configuration.server_logger, configuration.context)
|
|
164
162
|
end
|
|
165
163
|
|
|
166
164
|
router.map("resources/templates/list") do |message|
|
|
@@ -217,7 +215,7 @@ module ModelContextProtocol
|
|
|
217
215
|
configuration
|
|
218
216
|
.registry
|
|
219
217
|
.find_prompt(message["params"]["name"])
|
|
220
|
-
.call(symbolized_arguments, configuration.
|
|
218
|
+
.call(symbolized_arguments, configuration.client_logger, configuration.server_logger, configuration.context)
|
|
221
219
|
end
|
|
222
220
|
|
|
223
221
|
router.map("tools/list") do |message|
|
|
@@ -250,31 +248,31 @@ module ModelContextProtocol
|
|
|
250
248
|
configuration
|
|
251
249
|
.registry
|
|
252
250
|
.find_tool(message["params"]["name"])
|
|
253
|
-
.call(symbolized_arguments, configuration.
|
|
251
|
+
.call(symbolized_arguments, configuration.client_logger, configuration.server_logger, configuration.context)
|
|
254
252
|
end
|
|
255
253
|
end
|
|
256
254
|
|
|
257
255
|
def build_capabilities
|
|
258
256
|
{}.tap do |capabilities|
|
|
259
257
|
capabilities[:completions] = {}
|
|
260
|
-
capabilities[:logging] = {}
|
|
258
|
+
capabilities[:logging] = {}
|
|
261
259
|
|
|
262
260
|
registry = configuration.registry
|
|
263
261
|
|
|
264
|
-
if
|
|
262
|
+
if !registry.instance_variable_get(:@prompts).empty?
|
|
265
263
|
capabilities[:prompts] = {
|
|
266
264
|
listChanged: registry.prompts_options[:list_changed]
|
|
267
265
|
}.except(:completions).compact
|
|
268
266
|
end
|
|
269
267
|
|
|
270
|
-
if
|
|
268
|
+
if !registry.instance_variable_get(:@resources).empty?
|
|
271
269
|
capabilities[:resources] = {
|
|
272
270
|
subscribe: registry.resources_options[:subscribe],
|
|
273
271
|
listChanged: registry.resources_options[:list_changed]
|
|
274
272
|
}.compact
|
|
275
273
|
end
|
|
276
274
|
|
|
277
|
-
if
|
|
275
|
+
if !registry.instance_variable_get(:@tools).empty?
|
|
278
276
|
capabilities[:tools] = {
|
|
279
277
|
listChanged: registry.tools_options[:list_changed]
|
|
280
278
|
}.compact
|
|
@@ -284,7 +282,11 @@ module ModelContextProtocol
|
|
|
284
282
|
|
|
285
283
|
class << self
|
|
286
284
|
def configure_redis(&block)
|
|
287
|
-
RedisConfig.configure(&block)
|
|
285
|
+
ModelContextProtocol::Server::RedisConfig.configure(&block)
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
def configure_server_logging(&block)
|
|
289
|
+
ModelContextProtocol::Server::GlobalConfig::ServerLogging.configure(&block)
|
|
288
290
|
end
|
|
289
291
|
end
|
|
290
292
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: model-context-protocol-rb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dick Davis
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-01-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: json-schema
|
|
@@ -58,14 +58,14 @@ dependencies:
|
|
|
58
58
|
requirements:
|
|
59
59
|
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '
|
|
61
|
+
version: '3.0'
|
|
62
62
|
type: :runtime
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
66
|
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '
|
|
68
|
+
version: '3.0'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: concurrent-ruby
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -82,7 +82,7 @@ dependencies:
|
|
|
82
82
|
version: '1.3'
|
|
83
83
|
description:
|
|
84
84
|
email:
|
|
85
|
-
- dick
|
|
85
|
+
- webmaster@dick.codes
|
|
86
86
|
executables: []
|
|
87
87
|
extensions: []
|
|
88
88
|
extra_rdoc_files: []
|
|
@@ -99,11 +99,12 @@ files:
|
|
|
99
99
|
- lib/model_context_protocol.rb
|
|
100
100
|
- lib/model_context_protocol/server.rb
|
|
101
101
|
- lib/model_context_protocol/server/cancellable.rb
|
|
102
|
+
- lib/model_context_protocol/server/client_logger.rb
|
|
102
103
|
- lib/model_context_protocol/server/completion.rb
|
|
103
104
|
- lib/model_context_protocol/server/configuration.rb
|
|
104
105
|
- lib/model_context_protocol/server/content.rb
|
|
105
106
|
- lib/model_context_protocol/server/content_helpers.rb
|
|
106
|
-
- lib/model_context_protocol/server/
|
|
107
|
+
- lib/model_context_protocol/server/global_config/server_logging.rb
|
|
107
108
|
- lib/model_context_protocol/server/pagination.rb
|
|
108
109
|
- lib/model_context_protocol/server/progressable.rb
|
|
109
110
|
- lib/model_context_protocol/server/prompt.rb
|
|
@@ -114,6 +115,7 @@ files:
|
|
|
114
115
|
- lib/model_context_protocol/server/resource.rb
|
|
115
116
|
- lib/model_context_protocol/server/resource_template.rb
|
|
116
117
|
- lib/model_context_protocol/server/router.rb
|
|
118
|
+
- lib/model_context_protocol/server/server_logger.rb
|
|
117
119
|
- lib/model_context_protocol/server/stdio_transport.rb
|
|
118
120
|
- lib/model_context_protocol/server/stdio_transport/request_store.rb
|
|
119
121
|
- lib/model_context_protocol/server/streamable_http_transport.rb
|
|
@@ -121,6 +123,7 @@ files:
|
|
|
121
123
|
- lib/model_context_protocol/server/streamable_http_transport/message_poller.rb
|
|
122
124
|
- lib/model_context_protocol/server/streamable_http_transport/notification_queue.rb
|
|
123
125
|
- lib/model_context_protocol/server/streamable_http_transport/request_store.rb
|
|
126
|
+
- lib/model_context_protocol/server/streamable_http_transport/server_request_store.rb
|
|
124
127
|
- lib/model_context_protocol/server/streamable_http_transport/session_message_queue.rb
|
|
125
128
|
- lib/model_context_protocol/server/streamable_http_transport/session_store.rb
|
|
126
129
|
- lib/model_context_protocol/server/streamable_http_transport/stream_registry.rb
|