Merge pull request #27 from jcat4/refactor-for-client-support
Refactor in preparation for client support
This commit is contained in:
commit
dcc31ca6fd
3 changed files with 183 additions and 51 deletions
27
lib/mcp.rb
27
lib/mcp.rb
|
|
@ -1,23 +1,26 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require_relative "mcp/server"
|
||||
require_relative "mcp/string_utils"
|
||||
require_relative "mcp/tool"
|
||||
require_relative "mcp/tool/input_schema"
|
||||
require_relative "mcp/tool/annotations"
|
||||
require_relative "mcp/tool/response"
|
||||
require_relative "mcp/configuration"
|
||||
require_relative "mcp/content"
|
||||
require_relative "mcp/resource"
|
||||
require_relative "mcp/resource/contents"
|
||||
require_relative "mcp/resource/embedded"
|
||||
require_relative "mcp/resource_template"
|
||||
require_relative "mcp/instrumentation"
|
||||
require_relative "mcp/methods"
|
||||
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/transports/stdio"
|
||||
require_relative "mcp/string_utils"
|
||||
require_relative "mcp/tool"
|
||||
require_relative "mcp/tool/input_schema"
|
||||
require_relative "mcp/tool/response"
|
||||
require_relative "mcp/tool/annotations"
|
||||
require_relative "mcp/transport"
|
||||
require_relative "mcp/version"
|
||||
require_relative "mcp/configuration"
|
||||
require_relative "mcp/methods"
|
||||
|
||||
module MCP
|
||||
class << self
|
||||
|
|
|
|||
37
lib/mcp/server/transports/stdio.rb
Normal file
37
lib/mcp/server/transports/stdio.rb
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require_relative "../../transport"
|
||||
require "json"
|
||||
|
||||
module MCP
|
||||
class Server
|
||||
module Transports
|
||||
class StdioTransport < Transport
|
||||
def initialize(server)
|
||||
@server = server
|
||||
@open = false
|
||||
$stdin.set_encoding("UTF-8")
|
||||
$stdout.set_encoding("UTF-8")
|
||||
super
|
||||
end
|
||||
|
||||
def open
|
||||
@open = true
|
||||
while @open && (line = $stdin.gets)
|
||||
handle_json_request(line.strip)
|
||||
end
|
||||
end
|
||||
|
||||
def close
|
||||
@open = false
|
||||
end
|
||||
|
||||
def send_response(message)
|
||||
json_message = message.is_a?(String) ? message : JSON.generate(message)
|
||||
$stdout.puts(json_message)
|
||||
$stdout.flush
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require_relative "../transport"
|
||||
require "json"
|
||||
|
||||
module MCP
|
||||
module Transports
|
||||
class StdioTransport < Transport
|
||||
def initialize(server)
|
||||
@server = server
|
||||
@open = false
|
||||
$stdin.set_encoding("UTF-8")
|
||||
$stdout.set_encoding("UTF-8")
|
||||
super
|
||||
end
|
||||
|
||||
def open
|
||||
@open = true
|
||||
while @open && (line = $stdin.gets)
|
||||
handle_json_request(line.strip)
|
||||
end
|
||||
end
|
||||
|
||||
def close
|
||||
@open = false
|
||||
end
|
||||
|
||||
def send_response(message)
|
||||
json_message = message.is_a?(String) ? message : JSON.generate(message)
|
||||
$stdout.puts(json_message)
|
||||
$stdout.flush
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Reference in a new issue