Merge pull request #255 from koic/use_autoload_to_defer_loading_of_unused_subsystems

Use `autoload` to defer loading of unused subsystems
This commit is contained in:
Koichi ITO 2026-03-16 00:06:27 +09:00 • committed by GitHub
commit 628e5203d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 42 additions and 28 deletions

View file

@ -1,38 +1,22 @@
# frozen_string_literal: true
require_relative "json_rpc_handler"
require_relative "mcp/annotations"
require_relative "mcp/configuration"
require_relative "mcp/content"
require_relative "mcp/icon"
require_relative "mcp/instrumentation"
require_relative "mcp/methods"
require_relative "mcp/progress"
require_relative "mcp/prompt"
require_relative "mcp/prompt/argument"
require_relative "mcp/prompt/message"
require_relative "mcp/prompt/result"
require_relative "mcp/resource"
require_relative "mcp/resource/contents"
require_relative "mcp/resource/embedded"
require_relative "mcp/resource_template"
require_relative "mcp/server"
require_relative "mcp/server_context"
require_relative "mcp/server/transports/streamable_http_transport"
require_relative "mcp/server/transports/stdio_transport"
require_relative "mcp/string_utils"
require_relative "mcp/tool"
require_relative "mcp/tool/input_schema"
require_relative "mcp/tool/output_schema"
require_relative "mcp/tool/response"
require_relative "mcp/tool/annotations"
require_relative "mcp/transport"
require_relative "mcp/version"
require_relative "mcp/client"
require_relative "mcp/client/http"
require_relative "mcp/client/tool"
module MCP
autoload :Annotations, "mcp/annotations"
autoload :Client, "mcp/client"
autoload :Content, "mcp/content"
autoload :Icon, "mcp/icon"
autoload :Prompt, "mcp/prompt"
autoload :Resource, "mcp/resource"
autoload :ResourceTemplate, "mcp/resource_template"
autoload :Server, "mcp/server"
autoload :Tool, "mcp/tool"
class << self
def configure
yield(configuration)

View file

@ -1,5 +1,8 @@
# frozen_string_literal: true
require_relative "client/http"
require_relative "client/tool"
module MCP
class Client
# Initializes a new MCP::Client instance.

View file

@ -1,5 +1,9 @@
# frozen_string_literal: true
require_relative "prompt/argument"
require_relative "prompt/message"
require_relative "prompt/result"
module MCP
class Prompt
class << self

View file

@ -1,5 +1,8 @@
# frozen_string_literal: true
require_relative "resource/contents"
require_relative "resource/embedded"
module MCP
class Resource
attr_reader :uri, :name, :title, :description, :icons, :mime_type

View file

@ -4,6 +4,9 @@ require_relative "../json_rpc_handler"
require_relative "instrumentation"
require_relative "methods"
require_relative "logging_message_notification"
require_relative "progress"
require_relative "server_context"
require_relative "server/transports"
module MCP
class ToolNotUnique < StandardError

View file

@ -0,0 +1,10 @@
# frozen_string_literal: true
module MCP
class Server
module Transports
autoload :StdioTransport, "mcp/server/transports/stdio_transport"
autoload :StreamableHTTPTransport, "mcp/server/transports/streamable_http_transport"
end
end
end

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
require_relative "../../transport"
require "json"
require_relative "../../transport"
module MCP
class Server

View file

@ -1,8 +1,8 @@
# frozen_string_literal: true
require_relative "../../transport"
require "json"
require "securerandom"
require_relative "../../transport"
module MCP
class Server

View file

@ -1,5 +1,10 @@
# frozen_string_literal: true
require_relative "tool/annotations"
require_relative "tool/input_schema"
require_relative "tool/output_schema"
require_relative "tool/response"
module MCP
class Tool
class << self

View file

@ -1,6 +1,7 @@
# frozen_string_literal: true
require "test_helper"
require "mcp/instrumentation"
module MCP
class InstrumentationTest < ActiveSupport::TestCase

View file

@ -1,6 +1,7 @@
# frozen_string_literal: true
require "test_helper"
require "mcp/methods"
module MCP
class MethodsTest < ActiveSupport::TestCase