Class: LanguageOperator::Dsl::McpServerDefinition

Inherits:
Object
  • Object
show all
Defined in:
lib/language_operator/dsl/mcp_server_definition.rb

Overview

MCP server definition for agents

Allows agents to expose their own tools via the MCP protocol. Tools defined here can be called by other agents or MCP clients.

Examples:

Define tools in an agent

agent "data-processor" do
  as_mcp_server do
    tool "process_csv" do
      description "Process CSV data"
      parameter :url do
        type :string
        required true
      end
      execute do |params|
        # Processing logic
      end
    end
  end
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(agent_name) ⇒ McpServerDefinition

Returns a new instance of McpServerDefinition.



30
31
32
33
34
# File 'lib/language_operator/dsl/mcp_server_definition.rb', line 30

def initialize(agent_name)
  @agent_name = agent_name
  @server_name = "#{agent_name}-mcp"
  @tools = {}
end

Instance Attribute Details

#server_nameObject (readonly)

Returns the value of attribute server_name.



28
29
30
# File 'lib/language_operator/dsl/mcp_server_definition.rb', line 28

def server_name
  @server_name
end

#toolsObject (readonly)

Returns the value of attribute tools.



28
29
30
# File 'lib/language_operator/dsl/mcp_server_definition.rb', line 28

def tools
  @tools
end

Instance Method Details

#all_toolsArray<ToolDefinition>

Get all tool definitions

Returns:



61
62
63
# File 'lib/language_operator/dsl/mcp_server_definition.rb', line 61

def all_tools
  @tools.values
end

#name(name = nil) ⇒ String

Set custom server name

Parameters:

  • name (String) (defaults to: nil)

    Server name

Returns:

  • (String)

    Current server name



52
53
54
55
56
# File 'lib/language_operator/dsl/mcp_server_definition.rb', line 52

def name(name = nil)
  return @server_name if name.nil?

  @server_name = name
end

#tool(name) { ... } ⇒ ToolDefinition

Define a tool that this agent exposes

Parameters:

  • name (String)

    Tool name

Yields:

  • Tool definition block

Returns:



41
42
43
44
45
46
# File 'lib/language_operator/dsl/mcp_server_definition.rb', line 41

def tool(name, &block)
  tool_def = ToolDefinition.new(name)
  tool_def.instance_eval(&block) if block
  @tools[name] = tool_def
  tool_def
end

#tools?Boolean

Check if any tools are defined

Returns:

  • (Boolean)

    True if tools are defined



68
69
70
# File 'lib/language_operator/dsl/mcp_server_definition.rb', line 68

def tools?
  !@tools.empty?
end