Class: ThingsMcp::Server
- Inherits:
-
Object
- Object
- ThingsMcp::Server
- Defined in:
- lib/things_mcp/server.rb
Overview
MCP server implementation for Things 3 integration
This class creates and runs an MCP server that provides tools for interacting with Things 3. It sets up tool definitions, handles tool calls, and manages the stdio transport.
Instance Method Summary collapse
-
#initialize ⇒ Server
constructor
A new instance of Server.
- #run ⇒ Object
Constructor Details
#initialize ⇒ Server
Returns a new instance of Server.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/things_mcp/server.rb', line 17 def initialize # Check Ruby version first check_ruby_version @logger = Logger.new($stderr) @logger.level = Logger::INFO # Create all tool classes create_tool_classes @server = MCP::Server.new( name: "things", version: "0.1.0", tools: @tool_classes, ) rescue => e $stderr.puts "ERROR during initialization: #{e.class}: #{e.message}" $stderr.puts "Backtrace:" e.backtrace.each { |line| $stderr.puts " #{line}" } $stderr.flush raise end |
Instance Method Details
#run ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/things_mcp/server.rb', line 40 def run @logger.info("Starting Things MCP server...") # Check if Things app is available unless ThingsMcp::Database.things_app_available? @logger.warn("Things app is not running. Will attempt to launch when needed.") end # Run the server using stdio transport = MCP::Transports::StdioTransport.new(@server) transport.open rescue => e # Output to stderr so Claude can see the error $stderr.puts "ERROR: #{e.class}: #{e.message}" $stderr.puts "Backtrace:" e.backtrace.each { |line| $stderr.puts " #{line}" } $stderr.flush raise end |