LocalAiMCP
OfficialLocalAiMCP
Un plano de control FastMCP asíncrono y sin estado para LocalAI. El Swagger de LocalAI incluido contiene 114 rutas / 123 operaciones, y las 123 siguen siendo utilizables mediante invocables tipados y validados. Para evitar enviar aproximadamente 123 esquemas de operación al modelo en cada solicitud MCP, solo se anuncia directamente un conjunto seleccionado; todo lo demás es descubrible y ejecutable bajo demanda.
Dos operaciones WebSocket de Swagger se implementan como intercambios acotados de una sola llamada, las rutas multipart admiten subida de archivos y las respuestas binarias pueden guardarse en ./data/output y devolverse en línea como base64 cuando son lo bastante pequeñas.
Ejecución
git clone https://github.com/twinlunarstarz-dev/LocalAiMCP.git
cd LocalAiMCP
cp .env.example .env
# Edit LOCALAI_BASE_URL / LOCALAI_API_KEY if needed.
docker compose up -d --buildEl endpoint MCP es:
http://localhost:8000/mcpPara VS Code/Zoo Code u otro cliente MCP Streamable HTTP, usa esa URL como endpoint del servidor MCP remoto. El contenedor usa por defecto host.docker.internal:8080 para LocalAI e incluye la asignación host-gateway de Linux.
Related MCP server: LM Studio MCP Bridge
Superficie de herramientas seleccionadas
El servidor no anuncia las 123 operaciones de LocalAI por defecto. El ajuste predefinido anuncia 20 herramientas de operación de uso común más cinco ayudas fijas de descubrimiento/sistema.
Herramientas de operación expuestas directamente por defecto:
# System/model information
get_system_info
get_metrics
get_token_metrics
list_models
list_model_capabilities
get_backend_monitor
# Generation/media
chat
complete_text
generate_image
inpaint_image
generate_sound
generate_video
text_to_speech
text_to_speech_with_voice
# Voice
list_voice_profiles
create_voice_profile
analyze_voice
verify_speakers
# 3D
generate_3d_asset
remesh_3d_assetLas cinco ayudas MCP fijas son:
list_additional_tools
search_additional_tools
execute_additional_tool
server_health
schema_auditPor tanto, la superficie tools/list por defecto es de 25 herramientas, en lugar de unas 128. El número exacto es configurable.
Configurar qué operaciones de LocalAI son visibles directamente
Establece LOCALAI_MCP_EXPOSED_TOOLS como una lista separada por comas de nombres semánticos de operación:
LOCALAI_MCP_EXPOSED_TOOLS=chat,list_models,generate_image,text_to_speech,generate_3d_assetValores especiales:
* expose all 123 Swagger operations directly
none expose no Swagger operations directly; use only the gateway/system helpers
gateway-only same as noneUn valor vacío o no establecido usa el ajuste predefinido integrado de 20 operaciones. Los nombres no válidos provocan un fallo al arrancar en lugar de desaparecer silenciosamente.
Cambiar la exposición directa solo afecta a lo que los clientes MCP reciben en tools/list; no elimina la operación oculta de LocalAiMCP.
Puerta de enlace de herramientas adicionales
Las herramientas menos comunes permanecen en un registro interno tipado y se accede a ellas mediante tres herramientas pequeñas.
list_additional_tools
Devuelve la lista ordenada completa de nombres de herramientas ocultas y nada con mucho esquema. Es intencionadamente compacta para que un modelo pueda inspeccionar todo el catálogo oculto bajo demanda sin llevar permanentemente esos esquemas en cada solicitud.
search_additional_tools
Busca solo entre las herramientas ocultas usando un objetivo en lenguaje natural o un nombre de herramienta exacto. Cada coincidencia devuelve:
nombre semántico de la herramienta
descripción detallada de propósito/entrada/salida
etiquetas
esquema JSON de entrada completo
Ejemplos:
search_additional_tools(query="detokenize token ids")
search_additional_tools(query="transcribe audio")
search_additional_tools(query="install a backend")
search_additional_tools(query="inspect request traces")execute_additional_tool
Ejecuta una capacidad oculta por nombre semántico:
{
"tool_name": "detokenize",
"arguments": {
"request": {
"model": "my-model",
"tokens": [1, 42, 9001]
}
}
}El objeto arguments se valida contra el mismo esquema Pydantic generado que usa una operación expuesta directamente. Los campos no válidos o desconocidos devuelven un error de validación y el esquema de entrada esperado antes de realizar cualquier solicitud a LocalAI. Esto no es un despachador al estilo curl: el modelo usa nombres semánticos de herramienta y argumentos tipados en lugar de métodos/rutas HTTP.
Las operaciones expuestas directamente son rechazadas intencionadamente por execute_additional_tool; el cliente debe llamar directamente a su herramienta MCP normal.
La antigua vía de escape avanzada raw_request y la ayuda probe_safe_endpoints se conservan como herramientas adicionales ocultas, de modo que reducir tools/list no elimina esas capacidades.
Descripciones orientadas a LLM
El registro está diseñado para que un modelo no necesite conocimientos previos de la API de LocalAI:
Los nombres de las herramientas describen tareas en lugar de reflejar rutas o métodos HTTP.
Cada operación HTTP tipada indica su propósito, las entradas esperadas y la salida en caso de éxito.
Los esquemas JSON de solicitud incluyen descripciones a nivel de campo, con orientación conservadora de respaldo cuando Swagger solo dice cosas como
Requesto deja un campo sin documentar.Los objetos de solicitud referenciados muestran campos de nivel superior útiles directamente en las descripciones.
Las descripciones de respuesta explican si los datos aparecen en
data,text,events,base64osaved_path.La búsqueda devuelve el esquema de entrada completo solo cuando la herramienta oculta es relevante.
La infraestructura interna del envoltorio, como las cabeceras personalizadas y los tiempos de espera por llamada, queda fuera de las operaciones tipadas normales.
Por ejemplo, la herramienta oculta detokenize explica que su solicitud contiene:
tokens: IDs de token enteros para convertir de vuelta a textomodel: nombre o alias del modelo LocalAI cuyo tokenizador debe usarse
y que la respuesta JSON contiene content, el texto destokenizado.
Diseño
FastMCP 3.4.7, fijado para reproducibilidad.
Streamable HTTP + modo sin estado. Varios workers de Uvicorn son seguros porque el descubrimiento y la ejecución usan un registro inmutable local al proceso en lugar de estado conversacional/de sesión.
E/S asíncrona de LocalAI con
httpx; las llamadas independientes pueden ejecutarse de forma concurrente.123 invocables de operación Swagger tipados con nombres semánticos y validación de entrada generada; solo el subconjunto configurado se registra directamente con FastMCP.
Puerta de enlace bajo demanda para operaciones ocultas, que conserva toda la funcionalidad de LocalAI sin anunciar cada esquema en cada solicitud.
Soporte multipart para audio, imágenes, archivos GLB, recursos de marca y perfiles de voz. Los argumentos de archivo aceptan URIs
data:,base64:<data>, URLs HTTP(S) o archivos en/data.Soporte binario para respuestas de audio/imágenes/GLB. Los payloads pequeños se devuelven como base64; los payloads binarios también pueden guardarse en
/data/output.Gestión de respuestas compatible con SSE que agrega los eventos SSE de LocalAI en un resultado estructurado.
Soporte WebSocket para la transmisión de registros del backend y transformaciones de audio en tiempo real mediante intercambios acotados.
Autenticación Bearer mediante
LOCALAI_API_KEY; no se almacena ningún token en el código ni se devuelve a los clientes MCP.
Envoltorio de respuesta
Las operaciones HTTP tipadas devuelven un envoltorio predecible:
ok: si LocalAI devolvió un estado HTTP correctostatus_code: estado HTTP de LocalAIelapsed_ms: duración de la solicituddata: cuerpos de respuesta JSON analizadostext: respuestas de textoevents: payloadsdata:de SSE recopiladosbase64,size_bytes,mime_type,saved_path: metadatos/contenido de respuesta binaria cuando corresponda
Comprueba siempre ok antes de consumir el cuerpo de la respuesta.
Entradas de archivo
Para las herramientas multipart, un argumento de archivo puede ser cualquiera de los siguientes:
data:<mime>;base64,<payload>base64:<payload>una URL
http://ohttps://que el contenedor MCP pueda obteneruna ruta local bajo
LOCALAI_MCP_FILE_ROOT(/dataen Compose)
El archivo de Compose monta ./data en /data.
Comportamiento de streaming de LocalAI
Los cuerpos de solicitud de LocalAI que establecen stream=true se reenvían sin cambios. Si LocalAI responde con text/event-stream, la llamada MCP recopila los eventos data: de SSE y los devuelve cuando termina el stream de LocalAI.
Las dos rutas WebSocket de Swagger se asignan de forma especial:
stream_backend_logs: recopila mensajes de registro del backend para un modelo hastamax_messagesy luego cierra.stream_audio_transform: envía un objeto de sesión/configuración más tramas PCM en base64, recopila mensajes transformados hastamax_messagesy luego cierra.
Pueden ser directas u ocultas según LOCALAI_MCP_EXPOSED_TOOLS; las herramientas WebSocket ocultas siguen siendo ejecutables mediante execute_additional_tool.
Verificación
Las pruebas del repositorio verifican:
cobertura exacta de Swagger: 114 rutas / 123 operaciones
123 nombres semánticos únicos revisados
el recuento de la exposición seleccionada por defecto y el recuento de
tools/listde MCPel catálogo completo de nombres ocultos
la búsqueda oculta que devuelve descripciones reales y esquemas de entrada generados
la ejecución oculta que valida argumentos antes del acceso a la red
que cada descripción de operación no WebSocket explica entradas y salidas
que los esquemas de solicitud/respuesta referenciados muestran campos reales
que
detokenizeexpone orientación útil sobre token/modelo/contenido bajo demandala detección de WebSocket, el envoltorio de respuestas y la gestión de binarios
que las ruedas construidas contienen las cuatro partes del payload de Swagger incluidas
Ejecuta localmente con las dependencias instaladas:
python -m pip install -e '.[test]'
pytestValidación del contenedor:
docker compose config
docker compose buildUn cliente MCP debe realizar el handshake initialize normal de MCP contra http://localhost:8000/mcp.
Configuración
Variable | Valor por defecto | Propósito |
|
| URL base de LocalAI visible para el contenedor |
| vacío | Token bearer opcional de LocalAI |
| ajuste predefinido integrado de 20 herramientas | Nombres de operación Swagger expuestos directamente separados por comas; |
|
| Tiempo de espera total de solicitud a LocalAI en segundos |
|
| Tiempo de espera de conexión en segundos |
|
| Tamaño máximo de archivo obtenido/subido |
|
| Tamaño máximo de respuesta de LocalAI almacenada en búfer |
|
| Bytes binarios permitidos en línea como base64 |
|
| Guardar las respuestas binarias en el directorio de salida |
|
| Puerto de host publicado |
|
| Número de workers de Uvicorn |
Nota de seguridad
La puerta de enlace de herramientas adicionales aún puede ejecutar operaciones administrativas/destructivas de LocalAI, incluida la instalación/eliminación de modelos/backends, controles de tareas/trabajos, borrado de trazas/registros, marca, presupuestos de nodos y administración de perfiles de voz. Ocultar una herramienta de tools/list reduce el tamaño del contexto; no es una frontera de autorización. No publiques el puerto 8000 en una red no fiable sin autenticación y controles de acceso a la red por delante.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
471Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceExposes MCP tools that enable remote LLMs to query local Docker containers, OS processes, and system services in real time.-
- FlicenseCqualityDmaintenanceEnables MCP clients to interact with local LLMs via LM Studio, supporting dynamic chat, vision, RAG, file interaction, and model orchestration.28-
- FlicenseAqualityCmaintenanceMCP server that connects LLM agents to a local LM Studio instance, enabling model management, OpenAI-compatible chat completions, text completions, and embeddings through a set of tools.91-
- AlicenseAqualityBmaintenanceAn MCP server exposing 72 tools across 26 homelab services, enabling LLMs to monitor and manage infrastructure, media, storage, and networking with a single endpoint.16MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/twinlunarstarz-dev/LocalAiMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server