Skip to content

Commit 628e520

Browse files
authored
Merge pull request #255 from koic/use_autoload_to_defer_loading_of_unused_subsystems
Use `autoload` to defer loading of unused subsystems
2 parents 95200b5 + 0c729d0 commit 628e520

File tree

11 files changed

+42
-28
lines changed

11 files changed

+42
-28
lines changed

lib/mcp.rb

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,22 @@
11
# frozen_string_literal: true
22

33
require_relative "json_rpc_handler"
4-
require_relative "mcp/annotations"
54
require_relative "mcp/configuration"
6-
require_relative "mcp/content"
7-
require_relative "mcp/icon"
8-
require_relative "mcp/instrumentation"
9-
require_relative "mcp/methods"
10-
require_relative "mcp/progress"
11-
require_relative "mcp/prompt"
12-
require_relative "mcp/prompt/argument"
13-
require_relative "mcp/prompt/message"
14-
require_relative "mcp/prompt/result"
15-
require_relative "mcp/resource"
16-
require_relative "mcp/resource/contents"
17-
require_relative "mcp/resource/embedded"
18-
require_relative "mcp/resource_template"
19-
require_relative "mcp/server"
20-
require_relative "mcp/server_context"
21-
require_relative "mcp/server/transports/streamable_http_transport"
22-
require_relative "mcp/server/transports/stdio_transport"
235
require_relative "mcp/string_utils"
24-
require_relative "mcp/tool"
25-
require_relative "mcp/tool/input_schema"
26-
require_relative "mcp/tool/output_schema"
27-
require_relative "mcp/tool/response"
28-
require_relative "mcp/tool/annotations"
296
require_relative "mcp/transport"
307
require_relative "mcp/version"
31-
require_relative "mcp/client"
32-
require_relative "mcp/client/http"
33-
require_relative "mcp/client/tool"
348

359
module MCP
10+
autoload :Annotations, "mcp/annotations"
11+
autoload :Client, "mcp/client"
12+
autoload :Content, "mcp/content"
13+
autoload :Icon, "mcp/icon"
14+
autoload :Prompt, "mcp/prompt"
15+
autoload :Resource, "mcp/resource"
16+
autoload :ResourceTemplate, "mcp/resource_template"
17+
autoload :Server, "mcp/server"
18+
autoload :Tool, "mcp/tool"
19+
3620
class << self
3721
def configure
3822
yield(configuration)

lib/mcp/client.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# frozen_string_literal: true
22

3+
require_relative "client/http"
4+
require_relative "client/tool"
5+
36
module MCP
47
class Client
58
# Initializes a new MCP::Client instance.

lib/mcp/prompt.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# frozen_string_literal: true
22

3+
require_relative "prompt/argument"
4+
require_relative "prompt/message"
5+
require_relative "prompt/result"
6+
37
module MCP
48
class Prompt
59
class << self

lib/mcp/resource.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# frozen_string_literal: true
22

3+
require_relative "resource/contents"
4+
require_relative "resource/embedded"
5+
36
module MCP
47
class Resource
58
attr_reader :uri, :name, :title, :description, :icons, :mime_type

lib/mcp/server.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
require_relative "instrumentation"
55
require_relative "methods"
66
require_relative "logging_message_notification"
7+
require_relative "progress"
8+
require_relative "server_context"
9+
require_relative "server/transports"
710

811
module MCP
912
class ToolNotUnique < StandardError

lib/mcp/server/transports.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# frozen_string_literal: true
2+
3+
module MCP
4+
class Server
5+
module Transports
6+
autoload :StdioTransport, "mcp/server/transports/stdio_transport"
7+
autoload :StreamableHTTPTransport, "mcp/server/transports/streamable_http_transport"
8+
end
9+
end
10+
end

lib/mcp/server/transports/stdio_transport.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# frozen_string_literal: true
22

3-
require_relative "../../transport"
43
require "json"
4+
require_relative "../../transport"
55

66
module MCP
77
class Server

lib/mcp/server/transports/streamable_http_transport.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# frozen_string_literal: true
22

3-
require_relative "../../transport"
43
require "json"
54
require "securerandom"
5+
require_relative "../../transport"
66

77
module MCP
88
class Server

lib/mcp/tool.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# frozen_string_literal: true
22

3+
require_relative "tool/annotations"
4+
require_relative "tool/input_schema"
5+
require_relative "tool/output_schema"
6+
require_relative "tool/response"
7+
38
module MCP
49
class Tool
510
class << self

test/mcp/instrumentation_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# frozen_string_literal: true
22

33
require "test_helper"
4+
require "mcp/instrumentation"
45

56
module MCP
67
class InstrumentationTest < ActiveSupport::TestCase

0 commit comments

Comments
 (0)