diff --git a/lib/mcp.rb b/lib/mcp.rb index c92306e0..98551e77 100644 --- a/lib/mcp.rb +++ b/lib/mcp.rb @@ -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) diff --git a/lib/mcp/client.rb b/lib/mcp/client.rb index 5008790d..04ca3cce 100644 --- a/lib/mcp/client.rb +++ b/lib/mcp/client.rb @@ -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. diff --git a/lib/mcp/prompt.rb b/lib/mcp/prompt.rb index 3253faa9..598a3d0d 100644 --- a/lib/mcp/prompt.rb +++ b/lib/mcp/prompt.rb @@ -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 diff --git a/lib/mcp/resource.rb b/lib/mcp/resource.rb index 6f06d361..51d92e96 100644 --- a/lib/mcp/resource.rb +++ b/lib/mcp/resource.rb @@ -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 diff --git a/lib/mcp/server.rb b/lib/mcp/server.rb index 9c537ff2..52552072 100644 --- a/lib/mcp/server.rb +++ b/lib/mcp/server.rb @@ -4,6 +4,9 @@ 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 diff --git a/lib/mcp/server/transports.rb b/lib/mcp/server/transports.rb new file mode 100644 index 00000000..1c4bc1c3 --- /dev/null +++ b/lib/mcp/server/transports.rb @@ -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 diff --git a/lib/mcp/server/transports/stdio_transport.rb b/lib/mcp/server/transports/stdio_transport.rb index 702af087..d6d52dd9 100644 --- a/lib/mcp/server/transports/stdio_transport.rb +++ b/lib/mcp/server/transports/stdio_transport.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true -require_relative "../../transport" require "json" +require_relative "../../transport" module MCP class Server diff --git a/lib/mcp/server/transports/streamable_http_transport.rb b/lib/mcp/server/transports/streamable_http_transport.rb index ff9977d9..e9f377fc 100644 --- a/lib/mcp/server/transports/streamable_http_transport.rb +++ b/lib/mcp/server/transports/streamable_http_transport.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true -require_relative "../../transport" require "json" require "securerandom" +require_relative "../../transport" module MCP class Server diff --git a/lib/mcp/tool.rb b/lib/mcp/tool.rb index 6c86ce53..37c5d927 100644 --- a/lib/mcp/tool.rb +++ b/lib/mcp/tool.rb @@ -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 diff --git a/test/mcp/instrumentation_test.rb b/test/mcp/instrumentation_test.rb index e1ecf519..f314d164 100644 --- a/test/mcp/instrumentation_test.rb +++ b/test/mcp/instrumentation_test.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "test_helper" +require "mcp/instrumentation" module MCP class InstrumentationTest < ActiveSupport::TestCase diff --git a/test/mcp/methods_test.rb b/test/mcp/methods_test.rb index 0f765d97..230fb315 100644 --- a/test/mcp/methods_test.rb +++ b/test/mcp/methods_test.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "test_helper" +require "mcp/methods" module MCP class MethodsTest < ActiveSupport::TestCase