Skip to content
docsv0.10.0

McpClientService

Facade over a {@see ToolRegistry} that shapes it for {@see AgentOrchestrator}: summaries for the LLM's tool list and context-aware invocation.

McpClientService::__construct()

public function __construct(Milpa\ToolRuntime\ToolRegistry $internalRegistry, ?Milpa\AiGateway\ToolCallGate $gate = null, ?Milpa\AiGateway\ToolCallRecorder $recorder = null, ?Milpa\AiGateway\OptionTable $mesa = null):

Parameters

Parameters of __construct()
NameTypeDescription
$internalRegistryMilpa\ToolRuntime\ToolRegistry
$gate(ToolCallGate | null)se consulta antes de cada llamada y puede negarla. Sin compuerta, el bucle corre como corría: la ausencia de política no puede ser una política nueva.
$recorder(ToolCallRecorder | null)se le avisa después, con lo que la herramienta contestó
$mesa(OptionTable | null)qué opciones siguen enfrente. Sin mesa, el catálogo es el registro entero, que es como corría antes

McpClientService::setContext()

public function setContext(Milpa\ToolRuntime\Contracts\ToolContext $context): void

Set the execution context for tool calls. This should be called before processing a request to set the user's identity and scopes.

Parameters

Parameters of setContext()
NameTypeDescription
$contextMilpa\ToolRuntime\Contracts\ToolContext

McpClientService::getContext()

public function getContext(): ?Milpa\ToolRuntime\Contracts\ToolContext

Get the current context.

McpClientService::getToolSummaries()

public function getToolSummaries(): array

Get the plain-array tool summaries for LLM/MCP exposure. Delegates to {@see ToolRegistry::getToolSummaries()} — named to match that vocabulary since tool-runtime 0.2 (was `getTools()` through 0.1). In the future, merge with external tools fetched via HTTP/SSE. ── ESTO ES UNA PROYECCIÓN, Y POR ESO SE VUELVE A PEDIR ───────────────────────────────────── El catálogo no es un dato: se DERIVA del registro menos lo que ya salió de la mesa. Por eso {@see OptionTable::removed()} se consulta en cada llamada y no en el constructor — y por eso {@see AgentOrchestrator} pregunta esto en cada paso del bucle en vez de una sola vez al empezar. Sin esas dos cosas juntas, quitar una opción no cambia nada de lo que el modelo ve: el hecho se apenda, el fold lo refleja, y el catálogo sigue siendo la foto que se tomó antes de empezar.

McpClientService::callTool()

public function callTool(string $name, array $args): ?mixed

Execute a tool by name through the underlying registry pipeline.

Parameters

Parameters of callTool()
NameTypeDescription
$namestring
$argsarray<string, mixed>