Lección 17: Alojar y consumir servidores MCP

MCP en ambos sentidos - consume servidores remotos desde Agent.bx, aloja los tuyos bajo mcp/.

En esta página

Alojar y consumir servidores MCP

El Model Context Protocol (MCP) funciona en dos direcciones dentro de un proyecto BxAgents, y nada las une - un agente que consume servidores remotos no tiene por qué alojar ninguno, y un servidor alojado solo es accesible si una entrada de gateways/ lo expone (consulta la Lección 13).

flowchart LR
    subgraph consume["CONSUMING - declared on Agent.bx"]
        direction LR
        AG["your agent"] -->|"calls out at runtime"| RM["a remote MCP server"]
    end
    subgraph host["HOSTING - one file per server under mcp/"]
        direction LR
        TL["tools/"] -->|"a named SUBSET"| MS["mcpServer('localServer')"]
        MS --> GW["gateways/ entry, exposes: mcp"]
    end
    style consume fill:#e7f1ff,stroke:#004085
    style host fill:#eaf6ec,stroke:#155724

Consumir un servidor remoto

Se declara directamente en Agent.bx mediante mcpServers - no es un archivo bajo mcp/:

function configure() {
	return {
		mcpServers : [
			"https://example.com/mcp",
			{ url : "https://other.com/mcp", name : "other" }
		]
	};
}

Nunca se intenta ninguna conexión de red en tiempo de build - la accesibilidad es una cuestión de tiempo de ejecución, así que un servidor inalcanzable durante el build no es un error de build. Los subagentes pueden declarar sus propios mcpServers de forma independiente.

Alojar un servidor local

Cada archivo mcp/*.bx es un servidor MCP local que aloja tu proyecto, y expone un subconjunto con nombre de tus tools/ (de la Lección 9) como tools MCP:

// mcp/localServer.bx
class {
	function configure() {
		return {
			description : "Internal tools MCP server",
			version     : "1.0.0",
			cors        : "*",             // optional
			tools       : [ "sayHello" ]   // names of tools already under tools/
		};
	}
}

El nombre descubierto de la entrada es su nombre de archivo (localServer.bx -> localServer), no ningún name dentro de configure(). En tiempo de build el archivo se copia literalmente, y se emite una sentencia de registro al arrancar.

Exponerlo por HTTP

Un servidor local no es accesible por sí solo - combínalo con la entrada de exposición de gateways/ que viste en la Lección 13:

// gateways/expose-mcp.bx
class {
	function configure() {
		return {
			exposes : "mcp",
			path    : "/mcp/tools",
			target  : "localServer"
		};
	}
}

Pruébalo

Aloja la tool GetTime que escribiste en la Lección 9 como su propio servidor MCP, exponla en /mcp/tools, construye y ejecuta serve - ahora es accesible para cualquier cliente MCP externo, con independencia de la interfaz de chat de tu propio agente.

Referencia completa: mcp/.

Siguiente: Lección 18 - Interceptores y dependencias de módulos

Editar esta página Descargar Markdown Última actualización Sep 17, 2026, 5:15:06 PM
Lesson 17 of 20 - Introduction to BxAgents