fm-mcp

Permite que los agentes de codificación deleguen el resumen, la extracción de campos, la clasificación y el OCR al modelo en el dispositivo para Apple Foundation Models (macOS 27), gratis y sin conexión.

Documentación

fm-mcp

Listed on ClaudePluginHub

Un servidor MCP que permite a agentes de codificación como Claude Code y Codex delegar trabajo sencillo de texto al modelo integrado de Apple Foundation Models, el fm que viene con macOS 27. Es gratuito, privado y funciona sin conexión.

mcp-name: io.github.yrangana/fm-mcp

Sitio: yrangana.github.io/fm-mcp, con lo que aprendimos al construirlo: los límites medidos del modelo integrado.

Por qué

Los agentes de codificación gastan tokens remotos de pago en tareas sencillas, como resumir un registro o extraer campos de un documento. Un modelo pequeño que ya está en tu Mac puede hacer gran parte de eso sin costo, y tu texto nunca sale de la máquina. fm-mcp permite que el agente delegue ese trabajo y le indica claramente lo que el modelo pequeño no puede hacer.

Claude Code asked what went wrong in a log: it calls fm-mcp's summarise, checks the summary against the log, and answers.

Instalación

fm-mcp es una beta pública (0.1.x): funciona y está probado, pero los detalles de las herramientas pueden cambiar entre versiones. CHANGELOG.md enumera los cambios.

Necesitas una Mac con Apple Silicon (las Mac con Intel no son compatibles), macOS 27 con Apple Intelligence activado, y aceptar una vez la licencia de fm (fm license). Esa es toda la política de soporte: fm-mcp doctor verifica cada uno de estos requisitos, y nada más es compatible.

¿Aún no tienes Homebrew? Instálalo primero desde brew.sh. Su instalador pedirá instalar las herramientas de línea de comandos de Xcode: acéptalo y deja que termine.

brew install yrangana/tap/fm-mcp
fm-mcp install    # sets up Claude Code and Codex
fm-mcp doctor     # checks everything fm-mcp needs

brew install, fm-mcp install and fm-mcp doctor, recorded in a terminal

Luego inicia una nueva sesión de Claude Code o Codex. fm-mcp inicia el servidor del modelo (fm serve) por sí mismo la primera vez que se llama a una herramienta, y lo detiene cuando la sesión termina.

Otras formas de obtener el binario:

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/yrangana/fm-mcp/releases/latest/download/fm-mcp-installer.sh | sh
cargo install fm-mcp

Qué cambia fm-mcp install

  • Claude Code: añade el servidor MCP fm-mcp a ~/.claude.json (a través de claude mcp add cuando el comando claude está presente), e instala la habilidad fm-delegate en ~/.claude/skills/.
  • Codex: añade [mcp_servers.fm-mcp] a ~/.codex/config.toml, y una sección marcada en ~/.codex/AGENTS.md (o en AGENTS.override.md, si usas uno).

Hace una copia de seguridad de cada archivo antes de modificarlo e imprime cada ruta que toca; ejecutarlo de nuevo no cambia nada. --claude o --codex elige un agente, --dry-run muestra los cambios sin escribir, y --no-guidance omite la habilidad y la sección de AGENTS.md. fm-mcp install --uninstall elimina todo lo que añadió.

La habilidad y la sección de AGENTS.md le indican al agente cuándo delegar. Sin ellas, el agente solo ve las descripciones de las herramientas y delega peor.

O: el plugin de Claude Code

El plugin le da a Claude Code el servidor MCP y la habilidad, sin fm-mcp install. Aún necesita el binario en tu PATH, así que instálalo primero (Homebrew arriba); de lo contrario, Claude Code informará que el servidor no pudo conectarse.

/plugin marketplace add yrangana/fm-mcp
/plugin install fm-mcp@fm-mcp

Usa el plugin o fm-mcp install para Claude Code, no ambos: juntos le dan a Claude Code dos servidores fm-mcp. Con el plugin, ejecuta fm-mcp install --codex para configurar solo Codex.

Otros clientes MCP

fm-mcp es un servidor MCP stdio estándar, por lo que otros clientes que ejecuten servidores locales en la misma Mac pueden usarlo. fm-mcp install no los configura, y no reciben la guía de delegación: el agente decide solo con las descripciones de las herramientas. Cada cliente siguiente se probó en una Mac real; otros pueden funcionar pero no están probados.

Claude Desktop (probado con 2.31226.1, 2026-10-11). En Configuración › Desarrollador › Editar configuración, añade esto a mcpServers en claude_desktop_config.json, luego cierra y vuelve a abrir Claude Desktop:

"fm-mcp": {
  "command": "/opt/homebrew/bin/fm-mcp",
  "args": []
}

Usa la ruta completa (which fm-mcp la imprime). fm-mcp ayuda más con archivos en tu Mac: dale a Claude la ruta del archivo y este pasa path, así el texto nunca pasa por Claude. Para una página web, Claude Desktop lee la página primero, así que delegarla no ahorra nada.

Devin (antes Windsurf) (probado con Devin.app 3.8.20, 2026-10-11). Añade esto a mcpServers en ~/.config/devin/mcp_config.json:

"fm-mcp": {
  "type": "stdio",
  "command": "/opt/homebrew/bin/fm-mcp",
  "args": []
}

Herramientas

HerramientaQué haceCuánto admite
summariseCondensa registros, documentos, notas y transcripciones en un resumen: un párrafo, o como máximo 7 viñetas. No es un registro completo.Alrededor de 30,000 palabras de prosa, pero solo unas 1,000 líneas de un registro denso. La entrada larga se divide y combina, lo que toma uno o dos minutos y puede perder detalles.
extractExtrae campos con nombre de un texto como JSON, a partir de un JSON Schema que tú proporcionas. Funciona mejor con un esquema plano.Alrededor de 3,500 palabras de prosa.
classifyClasifica un texto en etiquetas que tú eliges (una etiqueta, o varias con multi).Alrededor de 3,500 palabras de prosa.
ocrLee el texto de una imagen PNG, JPEG, HEIC, TIFF, GIF o BMP. No PDF.Una imagen.

summarise, extract y classify aceptan text, o una path a un archivo de texto (hasta 1 MB) para que el agente nunca tenga que leer el archivo por sí mismo. docs/TOOLS.md enumera cada parámetro, con ejemplos de llamadas.

Límites

  • Modelo pequeño, contexto pequeño: alrededor de 8K tokens, compartidos entre la entrada y la respuesta. Los registros llenos de IDs y números usan muchos más tokens por palabra que la prosa.
  • No es para código, matemáticas, razonamiento, hechos que el texto no contiene, ni nada donde una respuesta incorrecta sea costosa y no puedas verificarla.
  • Comete errores. Los resúmenes pueden omitir o distorsionar detalles. extract a menudo devuelve null para un campo que el texto no contiene, pero no de forma fiable: en facturas cortas, un número de orden de compra faltante tomó el nombre del proveedor en 10 de 25 ejecuciones. Cuando el modelo se atasca en un campo, fm-mcp conserva los campos completados, establece el atascado en null y lo indica; esa llamada toma unos 15 s. Pide solo campos que el texto probablemente tenga. Los esquemas anidados son menos fiables que los planos. Verifica lo que importa.
  • Una solicitud a la vez. El modelo es compartido por cada sesión en la Mac, por lo que las llamadas se ponen en cola: un extract corto toma 1–2 s, un summarise largo un minuto o más.
  • Filtro de seguridad: el modelo integrado a veces rechaza entrada inofensiva. fm-mcp lo informa claramente, y el agente hace la tarea por sí mismo.

Privacidad

Todo se ejecuta en tu Mac. fm-mcp se comunica con fm serve a través de un socket Unix local y no envía nada por la red. Tu texto va solo al modelo integrado. SECURITY.md tiene los detalles y cómo informar un problema de seguridad de forma privada.

Solución de problemas

Ejecuta fm-mcp doctor. Verifica la Mac, macOS, fm, la licencia, el modelo, una solicitud de prueba y la configuración de ambos agentes, y dice cómo arreglar cualquier fallo.

ProblemaSolución
Licencia no aceptadaEjecuta fm license una vez.
Modelo no disponibleActiva Apple Intelligence en Configuración del Sistema y espera a que el modelo termine de descargarse.
Una herramienta dice que el modelo "se atascó"Generalmente un esquema con campos que el texto no contiene, u otra sesión usando el modelo. Prueba un esquema más plano.
Una herramienta agota el tiempo en entrada largaAumenta el límite: establece FM_MCP_REQUEST_TIMEOUT_SECS (predeterminado 120) en el entorno del servidor MCP.
Necesitas más detalleEstablece FM_MCP_LOG=debug en el entorno del servidor MCP. fm-mcp registra solo en stderr (stdout lleva el protocolo MCP).

Desinstalación

fm-mcp install --uninstall
brew uninstall fm-mcp

Desarrollo

git clone https://github.com/yrangana/fm-mcp.git
cd fm-mcp
cargo build --release
./target/release/fm-mcp install    # points your agents at this build

cargo test --features fake-fm      # needs no Apple Intelligence: uses a fake fm
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --check
scripts/real_fm_smoke.sh           # checks against the real fm on this Mac

AGENTS.md tiene la arquitectura, los hechos probados sobre fm serve y las reglas del proyecto. docs/MANUAL_TEST.md es la lista de verificación para cada versión.

Licencia

MIT. fm-mcp no está afiliado ni respaldado por Apple. Llama a la herramienta fm instalada en tu Mac y no incluye nada de Apple.