> For the complete documentation index, see [llms.txt](https://docs.neuron-ai.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.neuron-ai.dev/neuron-v3-es/agente/mcp-connector.md).

# MCP

MCP (Model Context Protocol) es un estándar de código abierto diseñado por Anthropic para conectar tus agentes a proveedores de servicios externos, como la base de datos de tu aplicación o APIs externas.

Gracias a este protocolo puedes poner a disposición de tu agente las herramientas expuestas por un servidor externo.

Las empresas pueden crear servidores MCP para permitir a los desarrolladores conectar agentes a sus plataformas. Aquí tienes un par de directorios con los servidores MCP más usados:

* GitHub oficial de MCP - <https://github.com/modelcontextprotocol/servers>
* Registro MCP-GET - <https://mcp-get.com/>

### Cómo funciona

Neuron te proporciona el `McpConnector` clase que puedes instanciar pasando la configuración del servidor MCP.

```php
use NeuronAI\MCP\McpConnector;

class MyAgent extends Agent 
{
    ...
    
    protected function tools(): array
    {
        return [
            ...McpConnector::make([
                'command' => 'php',
                'args' => ['/home/code/mcp_server.php'],
            ])->tools(),
        ];
    }
}
```

Debes crear una `McpConnector` instancia para cada servidor MCP con el que quieras interactuar.

Neuron descubre automáticamente las herramientas expuestas por el servidor y las conecta a tu agente.

Cuando el agente decide ejecutar una herramienta, Neuron generará la solicitud adecuada para llamar a la herramienta en los servidores MCP y devolverá el resultado al LLM para continuar la tarea. Se siente exactamente igual que con tus propias herramientas definidas, pero puedes acceder a un enorme catálogo de acciones predefinidas que tu agente puede realizar con solo una línea de código.

### Servidor MCP local

Si quieres conectarte con un servidor MCP instalado localmente en tu máquina o VM, puedes usar la configuración de estilo "command".

```php
use NeuronAI\MCP\McpConnector;

class MyAgent extends Agent 
{
    ...
    
    protected function tools(): array
    {
        return [
            ...McpConnector::make([
                'command' => 'php',
                'args' => ['/home/code/mcp_server.php'],
            ])->tools(),
        ];
    }
}
```

## Servidor MCP remoto

### Servidor HTTP transmisible

Los servidores remotos son accesibles mediante URLs y normalmente requieren autenticación. Puedes usar el `token` campo en el arreglo de configuración, que se usará como el token de autorización para autenticarse en el servidor:

```php
use NeuronAI\MCP\McpConnector;

class MyAgent extends Agent 
{
    ...
    
    protected function tools(): array
    {
        return [
            ...McpConnector::make([
                'url' => 'https://mcp.example.com',
                'token' => 'BEARER_TOKEN',
                'timeout' => 30,
                'headers' => [
                    //'x-cutom-header' => 'value'
                ]
            ])->tools(),
        ];
    }
}
```

### Transporte HTTP SSE

SSE ([Eventos enviados por el servidor](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events)) es un mecanismo que permite a los clientes web recibir actualizaciones automáticas desde un servidor. Esas actualizaciones se conocen como "eventos" y se envían a través de una única conexión HTTP de larga duración.

Para usar el transporte SSE necesitas configurar `async ⇒ true` en los parámetros de configuración.

```php
use NeuronAI\MCP\McpConnector;

class MyAgent extends Agent 
{
    ...
    
    protected function tools(): array
    {
        return [
            ...McpConnector::make([
                'url' => 'https://mcp.example.com',
                'token' => 'BEARER_TOKEN',
                'timeout' => 30,
                'async' => true
            ])->tools(),
        ];
    }
}
```

## Monitorización y depuración

Muchas de las aplicaciones que construyas con Neuron contendrán varios pasos con múltiples invocaciones de llamadas a LLM. A medida que estas aplicaciones se vuelven cada vez más complejas, resulta crucial poder inspeccionar exactamente qué está ocurriendo dentro de tu sistema agéntico. La mejor manera de hacerlo es con [Inspector](https://inspector.dev/).

{% embed url="<https://docs.inspector.dev/guides/neuron-ai>" %}

## Filtra la lista de herramientas

Durante la conexión con servidores MCP complejos, pueden incluir herramientas que podrían dar lugar a un comportamiento no deseado en contextos específicos. Los `exclude()` y `only()` métodos abordan este desafío de forma elegante, permitiendo a los desarrolladores conectarse con servidores MCP completos mientras mantienen un control detallado sobre las capacidades disponibles que deseas proporcionar a tu agente.

Esto resulta especialmente útil cuando se trabaja con agentes especializados que necesitan capacidades específicas, pero quieres reducir la probabilidad de un error del agente y reducir el consumo de tokens.

Estos métodos aceptan una lista de nombres de herramientas que quieres o no quieres asociar con el agente.

```php
class MyAgent extends Agent 
{
    ...
    
    protected function tools()
    {
        return [
            // EXCLUIR: descarta ciertas herramientas
            ...McpConnector::make([
                'url' => 'https://mcp.example.com',
            ])->exclude([
                'tool_name_1',
                'tool_name_2',
            ])->tools(),
            
            // SOLO: Selecciona las herramientas que quieres incluir
            ...McpConnector::make([
                'url' => 'https://mcp.example.com',
            ])->only([
                'tool_name_1',
                'tool_name_2',
            ])->tools(),
        ];
    }
}
```
