Module: Boxcars::MCP

Defined in:
lib/boxcars/mcp.rb,
lib/boxcars/mcp/client.rb,
lib/boxcars/mcp/tool_boxcar.rb,
lib/boxcars/mcp/stdio_client.rb,
lib/boxcars/mcp/tool_registry.rb

Overview

Model Context Protocol integration namespace.

Defined Under Namespace

Classes: Client, StdioClient, ToolBoxcar, ToolRegistry

Class Method Summary collapse

Class Method Details

.boxcars_from_client(client) ⇒ Object



6
7
8
# File 'lib/boxcars/mcp.rb', line 6

def self.boxcars_from_client(client, **)
  ToolRegistry.boxcars_from_client(client, **)
end

.stdio(command:, args: []) ⇒ Object



10
11
12
# File 'lib/boxcars/mcp.rb', line 10

def self.stdio(command:, args: [], **)
  StdioClient.new(command:, args:, **).connect!
end

.tool_calling_trainObject

Backwards-compatible helper alias for initial v0.10 naming.



40
41
42
# File 'lib/boxcars/mcp.rb', line 40

def self.tool_calling_train(...)
  tool_train(...)
end

.tool_train(engine:, boxcars: [], clients: [], client_name_prefixes: {}, mcp_return_direct: false, **train_kwargs) ⇒ Object

Build a ToolTrain from local Boxcars plus tools discovered from one or more MCP clients.

Parameters:

  • engine (Boxcars::Engine)

    Tool-calling capable engine (required)

  • boxcars (Array<Boxcars::Boxcar>) (defaults to: [])

    Local Boxcars to include

  • clients (Array<Boxcars::MCP::Client>) (defaults to: [])

    MCP clients to discover tools from

  • client_name_prefixes (Hash, Integer=>String) (defaults to: {})

    Optional prefixes by client index or object_id

  • mcp_return_direct (Boolean) (defaults to: false)

    Whether discovered MCP boxcars return direct

  • train_kwargs (Hash)

    Additional args for Boxcars::ToolTrain



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/boxcars/mcp.rb', line 23

def self.tool_train(engine:, boxcars: [], clients: [], client_name_prefixes: {}, mcp_return_direct: false, **train_kwargs)
  unless defined?(Boxcars::ToolTrain)
    raise Boxcars::Error, "Boxcars::ToolTrain is not loaded. Require 'boxcars' before using MCP helpers."
  end

  combined_boxcars = Array(boxcars).dup
  Array(clients).each_with_index do |client, index|
    prefix = mcp_client_prefix(client, index, client_name_prefixes)
    combined_boxcars.concat(
      boxcars_from_client(client, name_prefix: prefix, return_direct: mcp_return_direct)
    )
  end

  Boxcars::ToolTrain.new(boxcars: combined_boxcars, engine:, **train_kwargs)
end