Module: Legion::MCP

Extended by:
Logging::Helper
Defined in:
lib/legion/mcp.rb,
lib/legion/mcp/auth.rb,
lib/legion/mcp/audit.rb,
lib/legion/mcp/utils.rb,
lib/legion/mcp/client.rb,
lib/legion/mcp/server.rb,
lib/legion/mcp/version.rb,
lib/legion/mcp/observer.rb,
lib/legion/mcp/settings.rb,
lib/legion/mcp/cold_start.rb,
lib/legion/mcp/client/pool.rb,
lib/legion/mcp/tier_router.rb,
lib/legion/mcp/gap_detector.rb,
lib/legion/mcp/tool_adapter.rb,
lib/legion/mcp/tool_quality.rb,
lib/legion/mcp/tools/skills.rb,
lib/legion/mcp/usage_filter.rb,
lib/legion/mcp/context_guard.rb,
lib/legion/mcp/self_generate.rb,
lib/legion/mcp/state_tracker.rb,
lib/legion/mcp/patterns/store.rb,
lib/legion/mcp/tools/get_task.rb,
lib/legion/mcp/tools/run_task.rb,
lib/legion/mcp/embedding_index.rb,
lib/legion/mcp/patterns/gossip.rb,
lib/legion/mcp/patterns/schema.rb,
lib/legion/mcp/tool_governance.rb,
lib/legion/mcp/tools/do_action.rb,
lib/legion/mcp/tracing_context.rb,
lib/legion/mcp/context_compiler.rb,
lib/legion/mcp/dynamic_injector.rb,
lib/legion/mcp/structural_index.rb,
lib/legion/mcp/tools/list_tasks.rb,
lib/legion/mcp/tools/state_diff.rb,
lib/legion/mcp/tools/tool_audit.rb,
lib/legion/mcp/client/connection.rb,
lib/legion/mcp/deferred_registry.rb,
lib/legion/mcp/patterns/compiler.rb,
lib/legion/mcp/patterns/exchange.rb,
lib/legion/mcp/tools/delete_task.rb,
lib/legion/mcp/tools/list_chains.rb,
lib/legion/mcp/tools/plan_action.rb,
lib/legion/mcp/catalog_dispatcher.rb,
lib/legion/mcp/function_discovery.rb,
lib/legion/mcp/override_broadcast.rb,
lib/legion/mcp/tools/create_chain.rb,
lib/legion/mcp/tools/delete_chain.rb,
lib/legion/mcp/tools/update_chain.rb,
lib/legion/mcp/tools/get_task_logs.rb,
lib/legion/mcp/tools/discover_tools.rb,
lib/legion/mcp/tools/list_schedules.rb,
lib/legion/mcp/tools/create_schedule.rb,
lib/legion/mcp/tools/delete_schedule.rb,
lib/legion/mcp/tools/describe_runner.rb,
lib/legion/mcp/tools/search_sessions.rb,
lib/legion/mcp/tools/update_schedule.rb,
lib/legion/mcp/client/server_registry.rb,
lib/legion/mcp/tools/structural_index.rb,
lib/legion/mcp/resources/extension_info.rb,
lib/legion/mcp/resources/runner_catalog.rb,
lib/legion/mcp/tools/list_relationships.rb,
lib/legion/mcp/tools/create_relationship.rb,
lib/legion/mcp/tools/delete_relationship.rb,
lib/legion/mcp/tools/update_relationship.rb,
lib/legion/mcp/transport/exchanges/audit.rb,
lib/legion/mcp/actors/self_generate_cycle.rb,
lib/legion/mcp/transport/messages/tool_call_event.rb,
lib/legion/mcp/transport/messages/governance_event.rb,
lib/legion/mcp/transport/messages/client_call_event.rb

Defined Under Namespace

Modules: Actor, Audit, Auth, CatalogDispatcher, Client, ColdStart, ContextCompiler, ContextGuard, DeferredRegistry, DynamicInjector, EmbeddingIndex, FunctionDiscovery, GapDetector, Observer, OverrideBroadcast, Patterns, Resources, SelfGenerate, Server, Settings, StateTracker, StructuralIndex, TierRouter, ToolGovernance, ToolQuality, Tools, TracingContext, Transport, UsageFilter, Utils Classes: ToolAdapter

Constant Summary collapse

VERSION =
'0.9.1'
PatternStore =

Backward compatibility — old flat names delegate to new namespace

Legion::MCP::Patterns::Store
PatternSchema =
Legion::MCP::Patterns::Schema
PatternCompiler =
Legion::MCP::Patterns::Compiler
PatternExchange =
Legion::MCP::Patterns::Exchange
PatternGossip =
Legion::MCP::Patterns::Gossip

Class Method Summary collapse

Class Method Details

.reset!Object



52
53
54
55
# File 'lib/legion/mcp.rb', line 52

def reset!
  log.info 'Resetting Legion::MCP server cache' if @server
  @server = nil
end

.serverObject



31
32
33
34
35
36
37
# File 'lib/legion/mcp.rb', line 31

def server
  log.debug 'Building Legion::MCP server' unless @server
  @server ||= Server.build
rescue StandardError => e
  handle_exception(e, level: :error, operation: 'mcp.server')
  raise
end

.server_for(token: nil, identity: nil) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/legion/mcp.rb', line 39

def server_for(token: nil, identity: nil)
  log.debug { "Authenticating MCP server request token_present=#{!token.to_s.empty?}" }

  identity ||= resolve_identity(token)
  return identity if identity.is_a?(Hash) && identity.key?(:error)

  log.info { "Building identity-scoped MCP server identity=#{identity}" }
  Server.build(identity: identity)
rescue StandardError => e
  handle_exception(e, level: :error, operation: 'mcp.server_for', token_present: !token.to_s.empty?)
  { error: e.message }
end