# Spec: mcp-server ## ADDED Requirements ### Requirement: Arranque del servidor por defecto Cuando el binario se ejecuta sin argumentos, el sistema SHALL iniciar el servidor MCP usando transporte stdio. #### Scenario: Ejecución sin argumentos - **WHEN** el usuario ejecuta el binario sin ningún argumento - **THEN** el sistema arranca el servidor MCP en modo stdio y queda a la espera de mensajes del cliente ### Requirement: Comando version El sistema SHALL exponer el comando `version` que imprime la versión del binario. #### Scenario: Consulta de versión - **WHEN** el usuario ejecuta el binario con el argumento `version` - **THEN** el sistema imprime por stdout la versión inyectada en tiempo de compilación mediante `-ldflags` ### Requirement: Comando update El sistema SHALL exponer el comando `update` que ejecuta el proceso de auto-actualización del binario. #### Scenario: Ejecución de actualización - **WHEN** el usuario ejecuta el binario con el argumento `update` - **THEN** el sistema consulta la última release de Gitea y aplica la actualización si existe una versión superior ### Requirement: Metadatos de build inyectados El sistema SHALL definir variables globales (`Version`, `GiteaURL`, `RepoOwner`, `RepoName`) que MUST ser inyectables en tiempo de compilación mediante `-ldflags -X`. #### Scenario: Compilación con ldflags - **WHEN** el binario se compila pasando valores para `main.Version`, `main.GiteaURL`, `main.RepoOwner` y `main.RepoName` vía `-ldflags` - **THEN** el comando `version` y la lógica de auto-update utilizan esos valores en tiempo de ejecución ### Requirement: Registro de herramientas MCP El servidor MCP SHALL registrar las herramientas `outline_list_collections`, `outline_search`, `outline_get_document` y `outline_create_document` y MUST exponerlas vía el protocolo MCP. #### Scenario: Listado de herramientas desde un cliente MCP - **WHEN** un cliente MCP solicita la lista de herramientas disponibles - **THEN** el servidor responde incluyendo las cuatro herramientas de Outline con sus esquemas de entrada definidos