Internal Release 0.2.5

changes in this release:
- fix ping response #17
- add prompts and resources support to init response #18
- Bump json from 2.10.1 to 2.10.2 #14
This commit is contained in:
Topher Bullock 2025-03-18 15:35:35 -04:00
commit f5a3567494
4 changed files with 35 additions and 24 deletions

View file

@ -1,7 +1,7 @@
PATH PATH
remote: . remote: .
specs: specs:
model_context_protocol (0.2.4) model_context_protocol (0.2.5)
json_rpc_handler (~> 0.1) json_rpc_handler (~> 0.1)
GEM GEM

View file

@ -23,7 +23,7 @@ module ModelContextProtocol
"prompts/list" => method(:list_prompts), "prompts/list" => method(:list_prompts),
"prompts/get" => method(:get_prompt), "prompts/get" => method(:get_prompt),
"initialize" => method(:init), "initialize" => method(:init),
"ping" => method(:ping), "ping" => ->(_) { {} },
} }
end end
@ -72,13 +72,10 @@ module ModelContextProtocol
def capabilities def capabilities
@capabilities ||= { @capabilities ||= {
experimental: nil, prompts: {},
logging: nil, resources: {},
prompts: nil,
resources: nil,
tools: {}, tools: {},
model_config: nil, }
}.compact
end end
def server_info def server_info
@ -96,10 +93,6 @@ module ModelContextProtocol
} }
end end
def ping(request)
"pong"
end
def list_tools(request) def list_tools(request)
@tools.map { |_, tool| tool.to_h } @tools.map { |_, tool| tool.to_h }
end end

View file

@ -1,5 +1,5 @@
# frozen_string_literal: true # frozen_string_literal: true
module ModelContextProtocol module ModelContextProtocol
VERSION = "0.2.4" VERSION = "0.2.5"
end end

View file

@ -34,18 +34,23 @@ module ModelContextProtocol
@server = Server.new(name: @server_name, tools: [@tool], prompts: [@prompt], resources: [@resource]) @server = Server.new(name: @server_name, tools: [@tool], prompts: [@prompt], resources: [@resource])
end end
test "#handle ping request returns pong" do # https://spec.modelcontextprotocol.io/specification/2024-11-05/basic/utilities/ping/#behavior-requirements
test "#handle ping request returns empty response" do
request = { request = {
jsonrpc: "2.0", jsonrpc: "2.0",
method: "ping", method: "ping",
id: 1, id: "123",
} }
response = @server.handle(request) response = @server.handle(request)
refute_nil response assert_equal(
{
assert_equal "pong", response[:result] "jsonrpc": "2.0",
assert_equal 1, response[:id] "id": "123",
"result": {},
},
response,
)
end end
test "#handle initialize request returns protocol info, server info, and capabilities" do test "#handle initialize request returns protocol info, server info, and capabilities" do
@ -58,11 +63,24 @@ module ModelContextProtocol
response = @server.handle(request) response = @server.handle(request)
refute_nil response refute_nil response
result = response[:result] expected_result = {
assert_equal Server::PROTOCOL_VERSION, result[:protocolVersion] "jsonrpc": "2.0",
assert_kind_of Hash, result[:capabilities] "id": 1,
assert_equal @server_name, result[:serverInfo][:name] "result": {
assert_equal ModelContextProtocol::VERSION, result[:serverInfo][:version] "protocolVersion": "2024-11-05",
"capabilities": {
"prompts": {},
"resources": {},
"tools": {},
},
"serverInfo": {
"name": @server_name,
"version": ModelContextProtocol::VERSION,
},
},
}
assert_equal expected_result, response
end end
test "#handle returns nil for notification requests" do test "#handle returns nil for notification requests" do