Sha256: ac8654870e6e991f3365af6a8a193dc65c237c0a5c75577a7d7e0675d9695b8a
Contents?: true
Size: 1.57 KB
Versions: 1
Compression:
Stored size: 1.57 KB
Contents
require "json" module ModelContextProtocol class Server class Configuration attr_accessor :enable_log, :name, :router, :version def logging_enabled? enable_log || false end def validate! raise InvalidServerNameError unless valid_name? raise InvalidRouterError unless valid_router? raise InvalidServerVersionError unless valid_version? end private def valid_name? true end def valid_router? true end def valid_version? true end end PROTOCOL_VERSION = "2024-11-05".freeze attr_reader :configuration def initialize @configuration = Configuration.new yield(@configuration) if block_given? @configuration.router.server = self if @configuration.router end def start log("Server starting") configuration.validate! loop do line = $stdin.gets break unless line message = JSON.parse(line.chomp) log("Received message: #{message.inspect}") response = configuration.router.route(message) send_response(message["id"], response) if response end rescue => e log("Error: #{e.message}") log(e.backtrace) end private def log(output) warn(output) if configuration.logging_enabled? end def send_response(id, result) return unless result response = { jsonrpc: "2.0", id: id, result: result } $stdout.puts(JSON.generate(response)) $stdout.flush end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
model-context-protocol-rb-0.2.0 | lib/model_context_protocol/server.rb |