openlocal
openlocal
Herramientas abiertas. Cerebros locales. Cero nube.
Un cinturón de herramientas que los modelos locales pequeños pueden usar realmente — y los recibos que lo demuestran.
pip install openlocal
openlocal quickstartEso es todo. quickstart encuentra el servidor de modelos que ya ejecutas — ollama, LM Studio, llama.cpp, vLLM — escribe tu configuración, mide qué protocolo de llamada a herramientas puede manejar realmente tu modelo, y ejecuta una tarea real para que lo veas funcionar:
$ openlocal quickstart
openlocal quickstart - looking for a model server...
found ollama at http://127.0.0.1:11434/v1 with 6 model(s)
wrote ~/.openlocal/models.toml
default model: qwen3-4b (served as qwen3:4b)
measuring which tool protocol this model can drive...
-> native tool calling
demo: Read notes.md and tell me how many lines it has.
tool file_read
final
The file notes.md has 3 lines.
You are set up. Try:
openlocal run "list the files here and summarise what this project is"
openlocal eval # score this model on 15 deterministic tool tasks
openlocal mcp # serve these tools to Claude Code over MCPPor qué openlocal
🪶 Cero dependencias | Biblioteca estándar pura. Se instala en segundos, funciona en una Raspberry Pi y no puede ser rota por el lanzamiento de otro. |
🔌 Funciona con lo que tienes | Cualquier cosa que hable la API |
📊 Medido, no afirmado | 10 modelos de 9 proveedores, puntuados en 17 tareas deterministas. Sin juez LLM — cada verificación es un diff de archivo o una expresión regular. |
🧰 Un registro, dos superficies | Las mismas 8 herramientas alimentan un servidor MCP (Claude Code, cualquier cliente MCP) y un bucle de agente de modelo local. |
🩹 Ajustado en fallos reales | Cada regla ergonómica aquí fue pagada por un modelo que se rompió. La tabla de lecciones es la parte que no puedes conseguir en ningún otro lado. |
🧩 Añade un proveedor editando TOML | ¿Nueva familia de modelos? Edita |
Related MCP server: Hermes MCP Server
La tabla de clasificación
Mismas tareas, mismas herramientas, un modelo a la vez, dos ejecuciones cada uno. tools es el protocolo que cada modelo fue medido manejando — no el que sus documentos afirman.
model | vendor | tools | passed | pass rate | bad json | tok/s |
| Alibaba | native | 17/17 | 100% | 0 | 40.4 |
| z.ai | native | 17/17 | 100% | 0 | 39.9 |
| Alibaba | native | 17/17 | 100% | 0 | 16.6 |
| NVIDIA | native | 16/17 | 94% | 0 | 54.9 |
| native | 16/17 | 94% | 0 | 50.3 | |
| OpenAI | native | 16/17 | 94% | 2¹ | 45.3 |
| IBM | native | 15/17 | 88% | 4 | 66.0 |
| Meta | native | 14/17 | 85% | 2 | 33.4 |
| Mistral | native | 14/17 | 82% | 0 | 11.1 |
| Microsoft | native | 13/17 | 79% | 0 | 61.5 |
¹ El analizador harmony de gpt-oss rechaza algunas de sus propias llamadas a herramientas (llama.cpp responde 500). La escalera de reintentos del cliente recupera cada una — la columna retries en RESULTS.md mantiene eso honesto.
Reprodúcelo: openlocal leaderboard --repeat 2
Por qué tu modelo pequeño falla en herramientas
Un modelo de 3B no falla porque sea estúpido. Falla porque la salida de la herramienta es un prompt, y la mayoría de la salida de herramientas está escrita para humanos. Todo lo siguiente fue medido — mantenido cuando la puntuación subió, revertido cuando no.
qué se rompió | la solución | efecto medido |
"¿Qué es la línea 300?" → el modelo respondió línea 311 | numerar cada línea: | arreglado en un turno, en todos los modelos |
El modelo recorrió un archivo de 500 líneas una línea por turno | los pies de página indican hechos, nunca comandos ("el archivo continúa" ≠ "llama de nuevo con…") | phi: 12 pasos desperdiciados → 2 |
Prosa en lugar de una llamada a herramienta | prosa sin herramienta = la respuesta final (solo nativo) | phi: 51 respuestas malformadas → 5 |
…pero "Claro, usaré file_grep" es un plan | detección de intención: los planes reciben un empujón, las respuestas se aceptan | las ejecuciones dejaron de terminar en intenciones |
| la sintaxis de llamada en prosa se analiza y ejecuta | turnos desperdiciados eliminados |
| reparación JSON: escaneo de llaves, cierre de cola, literales de Python, fusión de fragmentos | phi bad_json 5 → 0 |
El modelo escribió el archivo antes de leer la fuente | detección de escritura obsoleta al finalizar | llama: 13 → 15 / 15 |
El modelo adivinó "44" y lo repitió cuando se le empujó | un turno de | granite recuperó la tarea |
Leyó un CSV de 4 líneas perfectamente, dijo que la suma era 40 | un comando | phi: 51 malformadas → 5 |
Úsalo desde Claude Code (o cualquier cliente MCP)
pip install "openlocal[mcp]"
claude mcp add openlocal -- openlocal mcpLas mismas 10 herramientas que usa tu modelo local, ahora en Claude Code. finish se queda atrás — es control de bucle, no una capacidad.
Comandos
openlocal quickstart # find a server, configure, probe, demo
openlocal run "goal" # agent loop over your tools
openlocal run "goal" --url http://host:1234/v1 # no config at all
openlocal chat "hello" # one plain turn, no tools
openlocal tools # what the model can call
openlocal probe # measure native vs JSON tool calling
openlocal eval # 17 deterministic tasks, pass/fail
openlocal eval --via-mcp # same tasks, tools served over a REAL MCP server
openlocal leaderboard --repeat 2 # every configured model, one table
openlocal mcp # stdio MCP server
openlocal models / serve / stop / status / pull # local llama-server managementsmol es un alias más corto para la misma CLI.
Configuración
Tu espacio de trabajo es ~/.openlocal (o cualquier directorio que contenga models.toml, o $OPENLOCAL_HOME). Contiene models.toml, state.json, registros, descargas y resultados de evaluación — nunca el paquete instalado.
[engine.ollama]
type = "external"
base_url = "http://127.0.0.1:11434/v1"
[[model]]
id = "qwen"
engine = "ollama"
family = "qwen" # tells openlocal this vendor's tool-calling quirks
served_model = "qwen3:4b" # the exact name the backend knows
default = trueenv | default | significado |
|
| directorio de trabajo |
| – | apunta cada comando a un servidor |
| cwd | raíz del sandbox para las herramientas de archivo y shell |
| 8000 | límite máximo para un resultado de herramienta |
| comandos de desarrollo | lista separada por comas, o |
| 120 | segundos antes de abandonar una llamada a herramienta MCP |
Las herramientas
file_list(path=".") list files and folders
file_read(path, start_line=1, limit=200) read a file, one page at a time
file_write(path, content) write a file
file_edit(path, find, replace) replace text exactly, leave the rest alone
file_append(path, content) add to the end without touching what exists
file_grep(pattern, path=".") search files
web_search(query, limit=5) search the web (DuckDuckGo, or Tavily via key)
web_read(url, offset=0, max_chars=4000) read a page as text
shell_run(command, timeout=60) run one allowlisted command
calc(expression) exact arithmetic - models cannot count
finish(answer) agent loop only: end the taskReglas de la casa, aplicadas por pruebas: argumentos planos con valores predeterminados, un ejemplo de llamada en cada descripción, encabezados de resultado de una línea, salida con límite máximo y una pista de continuación veraz, y errores que nombran el siguiente paso — no such file: x - call file_list(".") to see the files that exist.
Arquitectura
tools/ one registry → mcp_server.py (Claude Code speaks MCP to it)
→ agent.py (a local model calls the same tools)
_http.py the entire network layer, on urllib (this is why deps = 0)
runner.py external servers, or llama-server processes it starts and owns
protocol.py native tool_calls → loose JSON → repair → symptom-specific nudge
families.toml per-vendor quirks as DATA - the file contributors edit
evals/ 17 deterministic tasks + a leaderboard across modelsContribuir
Agregar una familia de modelos no requiere Python: edita families.toml, añade tu modelo a models.toml, luego
openlocal probe --model your-model
openlocal eval --model your-modely pega la fila resultante en el PR. Consulta CONTRIBUTING.md.
Ejecutar modelos GGUF locales en hardware AMD (ROCmFP4 + decodificación especulativa MTP) está documentado en docs/ENGINE.md — opcional, y no es necesario para nada de lo anterior.
Licencia
MIT © DevXV3
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 Servers
- AlicenseNot gradedqualityNot gradedmaintenanceA lightweight and fast MCP server that enables AI agents to efficiently discover and execute tools through progressive disclosure, minimizing context consumption while supporting safe code execution in external environments.12
- FlicenseNot gradedqualityBmaintenanceA lightweight Node.js MCP server with zero dependencies offering 9 built-in tools for system info, web fetching, GitHub search, file operations, shell execution, and key-value memory, enabling AI agents to perform these tasks via the Model Context Protocol.
- AlicenseNot gradedqualityBmaintenanceA plug-and-play MCP server that adds zero-boilerplate tools like file search, reliability scoring, and prompt injection detection to any MCP-compatible agent.MIT
- FlicenseBqualityCmaintenanceA lightweight MCP server that enables AI assistants to interact with the local machine through terminal, filesystem, and Python execution tools.91
Related MCP Connectors
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
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/DevXV3/openlocal'
If you have feedback or need assistance with the MCP directory API, please join our Discord server