diff --git a/Gemfile b/Gemfile index db107734..203b7438 100644 --- a/Gemfile +++ b/Gemfile @@ -28,7 +28,7 @@ gem 'addressable' # better URI checking gem 'combined_time_select' gem 'jekyll-timeago' -gem "rails-html-sanitizer", "~> 1.6" +gem "rails-html-sanitizer", "~> 1.7" gem 'tzinfo-data' # email parsing @@ -127,7 +127,7 @@ end gem 'rack-timeout' -gem "mcp", "~> 0.13.0" +gem "mcp", "~> 0.23.0" gem "doorkeeper", "~> 5.9" gem "rack-cors", "~> 2.0", group: :development diff --git a/Gemfile.lock b/Gemfile.lock index e7eda2d8..01e28a53 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -233,6 +233,7 @@ GEM haml (5.2.2) temple (>= 0.8.0) tilt + hana (1.3.7) hashdiff (1.0.1) hashie (5.1.0) logger @@ -263,9 +264,11 @@ GEM railties (>= 4.2.0) thor (>= 0.14, < 2.0) json (2.21.1) - json-schema (6.2.0) - addressable (~> 2.8) - bigdecimal (>= 3.1, < 5) + json_schemer (2.5.0) + bigdecimal + hana (~> 1.3) + regexp_parser (~> 2.0) + simpleidn (~> 0.2) jwt (3.2.0) base64 kaminari (1.2.1) @@ -286,7 +289,7 @@ GEM rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) logger (1.7.0) - loofah (2.25.1) + loofah (2.25.2) crass (~> 1.0.2) nokogiri (>= 1.12.0) mail (2.9.0) @@ -301,8 +304,8 @@ GEM rest-client (>= 1.6.7) marcel (1.0.4) matrix (0.4.2) - mcp (0.13.0) - json-schema (>= 4.1) + mcp (0.23.0) + json_schemer (>= 2.4) memory_profiler (1.0.0) meta_request (0.8.3) rack-contrib (>= 1.1, < 3) @@ -390,8 +393,8 @@ GEM activesupport (>= 5.0.0) minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.7.0) - loofah (~> 2.25) + rails-html-sanitizer (1.7.1) + loofah (~> 2.25, >= 2.25.2) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) railties (6.1.7.10) actionpack (= 6.1.7.10) @@ -505,6 +508,7 @@ GEM simplecov_json_formatter (~> 0.1) simplecov-html (0.13.1) simplecov_json_formatter (0.1.4) + simpleidn (0.2.3) spring (2.1.0) spring-commands-rspec (1.0.4) spring (>= 0.9.1) @@ -567,7 +571,7 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) websocket (1.2.11) - websocket-driver (0.8.1) + websocket-driver (0.8.2) base64 websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) @@ -624,7 +628,7 @@ DEPENDENCIES logger loofah (>= 2.5) mailgun_rails - mcp (~> 0.13.0) + mcp (~> 0.23.0) meta_request mutex_m ostruct @@ -636,7 +640,7 @@ DEPENDENCIES rack-timeout rack-utf8_sanitizer (~> 1.8) rails (~> 6.1.7.10) - rails-html-sanitizer (~> 1.6) + rails-html-sanitizer (~> 1.7) randomized_field (~> 1.0) rdoc redcarpet diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb index 2d40b4ab..0ef2b676 100644 --- a/app/controllers/welcome_controller.rb +++ b/app/controllers/welcome_controller.rb @@ -23,7 +23,7 @@ def support def mcp_server @mcp_tools = Mcp::DabbleServer::TOOLS.map do |tool| - schema = tool.input_schema.schema + schema = tool.input_schema.to_h { name: tool.tool_name, title: tool.title, diff --git a/spec/controllers/welcome_controller_spec.rb b/spec/controllers/welcome_controller_spec.rb index 25a172bf..b8af9805 100644 --- a/spec/controllers/welcome_controller_spec.rb +++ b/spec/controllers/welcome_controller_spec.rb @@ -19,4 +19,17 @@ expect(response).to redirect_to(latest_entry_url) end end + + describe 'mcp_server' do + it 'renders documentation from the MCP tool schemas' do + get :mcp_server + + expect(response).to have_http_status(:ok) + expect(response.body).to include( + '