ollama-intern-mcp 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.es.md +256 -0
- package/README.fr.md +256 -0
- package/README.hi.md +256 -0
- package/README.it.md +256 -0
- package/README.ja.md +256 -0
- package/README.md +4 -0
- package/README.pt-BR.md +256 -0
- package/README.zh.md +256 -0
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/guardrails/bannedPhrases.d.ts +38 -0
- package/dist/guardrails/bannedPhrases.d.ts.map +1 -0
- package/dist/guardrails/bannedPhrases.js +83 -0
- package/dist/guardrails/bannedPhrases.js.map +1 -0
- package/dist/guardrails/stringifiedArrayGuard.d.ts +45 -0
- package/dist/guardrails/stringifiedArrayGuard.d.ts.map +1 -0
- package/dist/guardrails/stringifiedArrayGuard.js +88 -0
- package/dist/guardrails/stringifiedArrayGuard.js.map +1 -0
- package/dist/tools/changeBrief.d.ts +2 -2
- package/dist/tools/classify.d.ts +14 -9
- package/dist/tools/classify.d.ts.map +1 -1
- package/dist/tools/classify.js +26 -13
- package/dist/tools/classify.js.map +1 -1
- package/dist/tools/draft.d.ts +4 -0
- package/dist/tools/draft.d.ts.map +1 -1
- package/dist/tools/draft.js +54 -1
- package/dist/tools/draft.js.map +1 -1
- package/dist/tools/extract.d.ts +13 -5
- package/dist/tools/extract.d.ts.map +1 -1
- package/dist/tools/extract.js +24 -9
- package/dist/tools/extract.js.map +1 -1
- package/dist/tools/incidentBrief.d.ts +2 -2
- package/dist/tools/packs/changePack.d.ts +3 -3
- package/dist/tools/packs/changePack.d.ts.map +1 -1
- package/dist/tools/packs/changePack.js +2 -1
- package/dist/tools/packs/changePack.js.map +1 -1
- package/dist/tools/packs/incidentPack.d.ts +3 -3
- package/dist/tools/packs/incidentPack.d.ts.map +1 -1
- package/dist/tools/packs/incidentPack.js +2 -1
- package/dist/tools/packs/incidentPack.js.map +1 -1
- package/dist/tools/research.d.ts +3 -3
- package/dist/tools/research.d.ts.map +1 -1
- package/dist/tools/research.js +2 -1
- package/dist/tools/research.js.map +1 -1
- package/dist/tools/summarizeDeep.d.ts +3 -3
- package/dist/tools/summarizeDeep.d.ts.map +1 -1
- package/dist/tools/summarizeDeep.js +2 -3
- package/dist/tools/summarizeDeep.js.map +1 -1
- package/dist/tools/triageLogs.d.ts +1 -1
- package/dist/tools/triageLogs.d.ts.map +1 -1
- package/dist/tools/triageLogs.js +2 -1
- package/dist/tools/triageLogs.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/README.es.md
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.md">English</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/ollama-intern-mcp/readme.png" alt="Ollama Intern MCP" width="500">
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://github.com/mcp-tool-shop-org/ollama-intern-mcp/actions"><img alt="CI" src="https://github.com/mcp-tool-shop-org/ollama-intern-mcp/actions/workflows/ci.yml/badge.svg"></a>
|
|
11
|
+
<a href="LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/license-MIT-blue.svg"></a>
|
|
12
|
+
<a href="https://mcp-tool-shop-org.github.io/ollama-intern-mcp/"><img alt="Landing Page" src="https://img.shields.io/badge/landing-page-8b5cf6"></a>
|
|
13
|
+
<a href="https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/"><img alt="Handbook" src="https://img.shields.io/badge/handbook-docs-10b981"></a>
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
> **El "becario" local para Claude Code.** 28 herramientas estructuradas, informes basados en evidencia, artefactos duraderos.
|
|
17
|
+
|
|
18
|
+
Un servidor MCP que proporciona a Claude Code un **"becario" local** con reglas, niveles, un escritorio y un archivador. Claude elige la _herramienta_; la herramienta elige el _nivel_ (Instantáneo / Potente / Profundo / Incorporado); el nivel escribe un archivo que puedes abrir la semana que viene.
|
|
19
|
+
|
|
20
|
+
Sin nube. Sin telemetría. Nada de funciones "autónomas". Cada llamada muestra su trabajo.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Ejemplo principal: una llamada, un artefacto
|
|
25
|
+
|
|
26
|
+
```jsonc
|
|
27
|
+
// Claude → ollama-intern-mcp
|
|
28
|
+
{
|
|
29
|
+
"tool": "ollama_incident_pack",
|
|
30
|
+
"arguments": {
|
|
31
|
+
"title": "sprite pipeline 5 AM paging regression",
|
|
32
|
+
"logs": "[2026-04-16 05:07] worker-3 OOM killed\n[2026-04-16 05:07] ollama /api/ps reports evicted=true size=8.1GB\n...",
|
|
33
|
+
"source_paths": ["F:/AI/sprite-foundry/src/worker.ts", "memory/sprite-foundry-visual-mastery.md"]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Devuelve un "sobre" que apunta a un archivo en el disco:
|
|
39
|
+
|
|
40
|
+
```jsonc
|
|
41
|
+
{
|
|
42
|
+
"result": {
|
|
43
|
+
"pack": "incident",
|
|
44
|
+
"slug": "2026-04-16-sprite-pipeline-5-am-paging-regression",
|
|
45
|
+
"artifact_md": "~/.ollama-intern/artifacts/incident/2026-04-16-sprite-pipeline-5-am-paging-regression.md",
|
|
46
|
+
"artifact_json": "~/.ollama-intern/artifacts/incident/2026-04-16-sprite-pipeline-5-am-paging-regression.json",
|
|
47
|
+
"weak": false,
|
|
48
|
+
"evidence_count": 6,
|
|
49
|
+
"next_checks": ["residency.evicted across last 24h", "OLLAMA_MAX_LOADED_MODELS vs loaded size"]
|
|
50
|
+
},
|
|
51
|
+
"tier_used": "deep",
|
|
52
|
+
"model": "qwen2.5:14b-instruct-q4_K_M",
|
|
53
|
+
"hardware_profile": "dev-rtx5080",
|
|
54
|
+
"tokens_in": 4180, "tokens_out": 612,
|
|
55
|
+
"elapsed_ms": 8410,
|
|
56
|
+
"residency": { "in_vram": true, "evicted": false }
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Ese archivo Markdown es el resultado del "becario" en su escritorio: encabezados, bloque de evidencia con identificadores citados, comandos de investigación `next_checks`, y un indicador `weak: true` si la evidencia es limitada. Es determinista: el renderizador es código, no una instrucción. Ábrelo mañana, compáralo la semana que viene y expórtalo a un manual con `ollama_artifact_export_to_path`.
|
|
61
|
+
|
|
62
|
+
Todos los competidores en esta categoría destacan la función de "ahorro de tokens". Nosotros destacamos el hecho de que _aquí está el archivo que el becario escribió_.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## ¿Qué hay aquí? Cuatro niveles, 28 herramientas
|
|
67
|
+
|
|
68
|
+
| Nivel | Cantidad | Qué hay aquí |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| **Atoms** | 15 | Elementos básicos estructurados para tareas específicas. `classify` (clasificar), `extract` (extraer), `triage_logs` (triaje de registros), `summarize_fast` / `deep` (resumir rápido / profundo), `draft` (borrador), `research` (investigación), `corpus_search` (búsqueda en corpus), `answer` (responder), `index` (indexar), `refresh` (actualizar), `list` (listar), `embed_search` (búsqueda de incrustaciones), `embed` (incrustar), `chat` (chat). Los elementos básicos que admiten procesamiento por lotes (`classify`, `extract`, `triage_logs`) aceptan `items: [{id, text}]`. |
|
|
71
|
+
| **Briefs** | 3 | Informes estructurados basados en evidencia. `incident_brief` (informe de incidente), `repo_brief` (informe de repositorio), `change_brief` (informe de cambio). Cada afirmación cita un identificador de evidencia; la información desconocida se elimina en el servidor. La evidencia débil muestra `weak: true` en lugar de una narrativa falsa. |
|
|
72
|
+
| **Packs** | 3 | Tareas compuestas con un flujo de trabajo fijo que escriben archivos Markdown + JSON duraderos en `~/.ollama-intern/artifacts/`. `incident_pack` (paquete de incidente), `repo_pack` (paquete de repositorio), `change_pack` (paquete de cambio). Renderizadores deterministas: no hay llamadas a modelos en la forma del artefacto. |
|
|
73
|
+
| **Artifacts** | 7 | Interfaz de consistencia sobre los resultados de los paquetes. `artifact_list` (lista de artefactos), `read` (leer), `diff` (comparar), `export_to_path` (exportar a ruta), más tres fragmentos deterministas: `incident_note` (nota de incidente), `onboarding_section` (sección de incorporación), `release_note` (nota de lanzamiento). |
|
|
74
|
+
|
|
75
|
+
Total: **18 elementos básicos + 3 paquetes + 7 herramientas de artefacto = 28**.
|
|
76
|
+
|
|
77
|
+
Líneas congeladas:
|
|
78
|
+
- Los elementos básicos están congelados en 18 (elementos básicos + informes). No hay nuevas herramientas de elemento básico.
|
|
79
|
+
- Los paquetes están congelados en 3. No hay nuevos tipos de paquete.
|
|
80
|
+
- El nivel de artefacto está congelado en 7.
|
|
81
|
+
|
|
82
|
+
La referencia completa de las herramientas se encuentra en el [manual](https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/reference/).
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Instalación
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npm install -g ollama-intern-mcp
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Requiere [Ollama](https://ollama.com) instalado localmente y los modelos de nivel descargados.
|
|
93
|
+
|
|
94
|
+
### Claude Code
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"mcpServers": {
|
|
99
|
+
"ollama-intern": {
|
|
100
|
+
"command": "npx",
|
|
101
|
+
"args": ["-y", "ollama-intern-mcp"],
|
|
102
|
+
"env": {
|
|
103
|
+
"OLLAMA_HOST": "http://127.0.0.1:11434",
|
|
104
|
+
"INTERN_PROFILE": "dev-rtx5080"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Claude Desktop
|
|
112
|
+
|
|
113
|
+
El mismo archivo, escrito en `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) o `%APPDATA%\Claude\claude_desktop_config.json` (Windows).
|
|
114
|
+
|
|
115
|
+
### Descarga de modelos
|
|
116
|
+
|
|
117
|
+
**Perfil de desarrollo predeterminado (RTX 5080 16GB y similar):**
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
ollama pull qwen2.5:7b-instruct-q4_K_M
|
|
121
|
+
ollama pull qwen2.5-coder:7b-instruct-q4_K_M
|
|
122
|
+
ollama pull qwen2.5:14b-instruct-q4_K_M
|
|
123
|
+
ollama pull nomic-embed-text
|
|
124
|
+
export OLLAMA_MAX_LOADED_MODELS=4
|
|
125
|
+
export OLLAMA_KEEP_ALIVE=-1
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Perfil M5 Max (128GB unificados):**
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
ollama pull qwen2.5:14b-instruct-q4_K_M
|
|
132
|
+
ollama pull qwen2.5-coder:32b-instruct-q4_K_M
|
|
133
|
+
ollama pull llama3.3:70b-instruct-q4_K_M
|
|
134
|
+
ollama pull nomic-embed-text
|
|
135
|
+
export INTERN_PROFILE=m5-max
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Las variables de entorno por nivel (`INTERN_TIER_INSTANT`, `INTERN_TIER_WORKHORSE`, `INTERN_TIER_DEEP`, `INTERN_EMBED_MODEL`) aún anulan las selecciones del perfil para casos individuales.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## "Sobre" uniforme
|
|
143
|
+
|
|
144
|
+
Cada herramienta devuelve la misma estructura:
|
|
145
|
+
|
|
146
|
+
```ts
|
|
147
|
+
{
|
|
148
|
+
result: <tool-specific>,
|
|
149
|
+
tier_used: "instant" | "workhorse" | "deep" | "embed",
|
|
150
|
+
model: string,
|
|
151
|
+
hardware_profile: string, // "dev-rtx5080" | "dev-rtx5080-llama" | "m5-max"
|
|
152
|
+
tokens_in: number,
|
|
153
|
+
tokens_out: number,
|
|
154
|
+
elapsed_ms: number,
|
|
155
|
+
residency: {
|
|
156
|
+
in_vram: boolean,
|
|
157
|
+
size_bytes: number,
|
|
158
|
+
size_vram_bytes: number,
|
|
159
|
+
evicted: boolean
|
|
160
|
+
} | null
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
La información de `residency` (residencia) proviene de `/api/ps` de Ollama. Cuando `evicted: true` (desalojado) o `size_vram < size` (tamaño de la VRAM menor que el tamaño), el modelo se carga en el disco y la inferencia se reduce entre 5 y 10 veces. Muestra esta información al usuario para que sepa que debe reiniciar Ollama o reducir el número de modelos cargados.
|
|
165
|
+
|
|
166
|
+
Cada llamada se registra como una línea en formato NDJSON en `~/.ollama-intern/log.ndjson`. Filtra por `hardware_profile` para mantener los datos de desarrollo fuera de los puntos de referencia publicados.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Perfiles de hardware
|
|
171
|
+
|
|
172
|
+
| Perfil | Instantáneo | Potente | Profundo | Incorporado |
|
|
173
|
+
|---|---|---|---|---|
|
|
174
|
+
| **`dev-rtx5080`** (predeterminado) | qwen2.5 7B | qwen2.5-coder 7B | qwen2.5 14B | nomic-embed-text |
|
|
175
|
+
| `dev-rtx5080-llama` | qwen2.5 7B | qwen2.5-coder 7B | **llama3.1 8B** | nomic-embed-text |
|
|
176
|
+
| `m5-max` | qwen2.5 14B | qwen2.5-coder 32B | llama3.3 70B | nomic-embed-text |
|
|
177
|
+
|
|
178
|
+
**Dentro de la misma familia, en la configuración predeterminada:** Los resultados deficientes son problemas de diseño o de la herramienta, no de incompatibilidades entre diferentes modelos. `dev-rtx5080-llama` es el punto de referencia: ejecute las mismas evaluaciones de referencia con Llama 8B antes de implementar Llama en M5 Max.
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Normas de evidencia
|
|
183
|
+
|
|
184
|
+
Estas normas se aplican en el servidor, no en la solicitud:
|
|
185
|
+
|
|
186
|
+
- **Se requieren citas.** Cada afirmación breve cita un identificador de evidencia.
|
|
187
|
+
- **Información desconocida se elimina en el servidor.** Los modelos que citan identificadores que no están en el paquete de evidencia tienen esos identificadores eliminados, con una advertencia, antes de que se devuelva el resultado.
|
|
188
|
+
- **Lo débil es lo débil.** La evidencia débil se marca como `weak: true` con notas de cobertura. Nunca se suaviza para crear una narrativa falsa.
|
|
189
|
+
- **Investigación, no prescripción.** Solo `next_checks` / `read_next` / `likely_breakpoints`. Las solicitudes prohíben "aplicar esta corrección".
|
|
190
|
+
- **Renderizadores deterministas.** La forma del marcador de texto de los artefactos es código, no una solicitud. `draft` se reserva para el texto donde la redacción del modelo es importante.
|
|
191
|
+
- **Solo diferencias dentro del mismo paquete.** Se rechaza explícitamente la función `artifact_diff` entre diferentes paquetes; los paquetes permanecen distintos.
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Artefactos y continuidad
|
|
196
|
+
|
|
197
|
+
Los paquetes escriben en `~/.ollama-intern/artifacts/{incident,repo,change}/<slug>.(md|json)`. La capa de artefactos proporciona una superficie de continuidad sin convertir esto en una herramienta de gestión de archivos:
|
|
198
|
+
|
|
199
|
+
- `artifact_list` — índice de metadatos, filtrable por paquete, fecha, patrón de slug
|
|
200
|
+
- `artifact_read` — lectura tipada por `{pack, slug}` o `{json_path}`
|
|
201
|
+
- `artifact_diff` — comparación estructurada dentro del mismo paquete; se muestra la inversión de la debilidad
|
|
202
|
+
- `artifact_export_to_path` — escribe un artefacto existente (con un encabezado de procedencia) en una ubicación declarada por el usuario (`allowed_roots`). Rechaza archivos existentes a menos que `overwrite: true`.
|
|
203
|
+
- `artifact_incident_note_snippet` — fragmento de nota del operador
|
|
204
|
+
- `artifact_onboarding_section_snippet` — fragmento del manual
|
|
205
|
+
- `artifact_release_note_snippet` — fragmento de nota de la versión (BORRADOR)
|
|
206
|
+
|
|
207
|
+
No hay llamadas a modelos en esta capa. Todo se renderiza a partir de contenido almacenado.
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Modelo de amenazas y telemetría
|
|
212
|
+
|
|
213
|
+
**Datos accedidos:** rutas de archivos que el usuario proporciona explícitamente (`ollama_research`, herramientas de corpus), texto incrustado y artefactos que el usuario solicita que se escriban en `~/.ollama-intern/artifacts/` o en una ubicación declarada por el usuario (`allowed_roots`).
|
|
214
|
+
|
|
215
|
+
**Datos NO accedidos:** cualquier cosa fuera de `source_paths` / `allowed_roots`. Se rechaza `..` antes de la normalización. `artifact_export_to_path` rechaza archivos existentes a menos que `overwrite: true`. Los borradores dirigidos a rutas protegidas (`memory/`, `.claude/`, `docs/canon/`, etc.) requieren explícitamente `confirm_write: true`, lo que se aplica en el servidor.
|
|
216
|
+
|
|
217
|
+
**Tráfico de salida de la red:** **desactivado de forma predeterminada.** El único tráfico de salida es al punto final HTTP local de Ollama. No hay llamadas a la nube, ni notificaciones de actualización, ni informes de fallos.
|
|
218
|
+
|
|
219
|
+
**Telemetría:** **ninguna.** Cada llamada se registra como una línea en formato NDJSON en `~/.ollama-intern/log.ndjson` en su máquina. Nada sale del sistema.
|
|
220
|
+
|
|
221
|
+
**Errores:** formato estructurado `{ code, message, hint, retryable }`. Los rastros de pila nunca se muestran en los resultados de la herramienta.
|
|
222
|
+
|
|
223
|
+
Política completa: [SECURITY.md](SECURITY.md).
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## Estándares
|
|
228
|
+
|
|
229
|
+
Construido según los estándares de [Shipcheck](https://github.com/mcp-tool-shop-org/shipcheck). Se superan las pruebas A–D; consulte [SHIP_GATE.md](SHIP_GATE.md) y [SCORECARD.md](SCORECARD.md).
|
|
230
|
+
|
|
231
|
+
- **A. Seguridad** — SECURITY.md, modelo de amenazas, sin telemetría, seguridad de rutas, `confirm_write` en rutas protegidas
|
|
232
|
+
- **B. Errores** — formato estructurado en todos los resultados de la herramienta; sin trazas de pila sin formato
|
|
233
|
+
- **C. Documentación** — README actualizado, CHANGELOG, LICENSE; esquemas de herramientas con autocomentarios
|
|
234
|
+
- **D. Higiene** — `npm run verify` (395 pruebas), CI con análisis de dependencias, Dependabot, archivo de bloqueo, `engines.node`
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## Hoja de ruta (fortalecimiento, no ampliación del alcance)
|
|
239
|
+
|
|
240
|
+
- **Fase 1: Núcleo de delegación** ✓ Implementado: interfaz de átomos, envoltorio uniforme, enrutamiento por niveles, mecanismos de seguridad.
|
|
241
|
+
- **Fase 2: Núcleo de veracidad** ✓ Implementado: fragmentación de esquemas v2, BM25 + RRF, corpus vivos, resúmenes con respaldo de evidencia, paquete de evaluación de recuperación.
|
|
242
|
+
- **Fase 3: Núcleo de empaquetado y artefactos** ✓ Implementado: paquetes con flujo de trabajo definido y artefactos duraderos + nivel de continuidad.
|
|
243
|
+
- **Fase 4: Núcleo de adopción** — Observación del uso real en la RTX 5080, fortalecimiento de los aspectos problemáticos que surgen.
|
|
244
|
+
- **Fase 5: Pruebas de rendimiento de M5 Max** — Publicación de resultados una vez que el hardware esté disponible (aproximadamente 24 de abril de 2026).
|
|
245
|
+
|
|
246
|
+
Fase por capa de fortalecimiento. La interfaz de átomos/paquetes/artefactos permanece inalterada.
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Licencia
|
|
251
|
+
|
|
252
|
+
MIT — ver [LICENSE](LICENSE).
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
<p align="center">Built by <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a></p>
|
package/README.fr.md
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.md">English</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/ollama-intern-mcp/readme.png" alt="Ollama Intern MCP" width="500">
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://github.com/mcp-tool-shop-org/ollama-intern-mcp/actions"><img alt="CI" src="https://github.com/mcp-tool-shop-org/ollama-intern-mcp/actions/workflows/ci.yml/badge.svg"></a>
|
|
11
|
+
<a href="LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/license-MIT-blue.svg"></a>
|
|
12
|
+
<a href="https://mcp-tool-shop-org.github.io/ollama-intern-mcp/"><img alt="Landing Page" src="https://img.shields.io/badge/landing-page-8b5cf6"></a>
|
|
13
|
+
<a href="https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/"><img alt="Handbook" src="https://img.shields.io/badge/handbook-docs-10b981"></a>
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
> **L'assistant local pour Claude Code.** 28 outils structurés, rapports basés sur des preuves, artefacts durables.
|
|
17
|
+
|
|
18
|
+
Un serveur MCP qui fournit à Claude Code un **assistant local** avec des règles, des niveaux, un bureau et un classeur. Claude choisit l' _outil_ ; l'outil choisit le _niveau_ (Instantané / Polyvalent / Approfondi / Intégration) ; le niveau écrit un fichier que vous pourrez ouvrir la semaine prochaine.
|
|
19
|
+
|
|
20
|
+
Pas de cloud. Pas de télémétrie. Rien d'"autonome". Chaque appel montre son travail.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Exemple principal — un appel, un artefact
|
|
25
|
+
|
|
26
|
+
```jsonc
|
|
27
|
+
// Claude → ollama-intern-mcp
|
|
28
|
+
{
|
|
29
|
+
"tool": "ollama_incident_pack",
|
|
30
|
+
"arguments": {
|
|
31
|
+
"title": "sprite pipeline 5 AM paging regression",
|
|
32
|
+
"logs": "[2026-04-16 05:07] worker-3 OOM killed\n[2026-04-16 05:07] ollama /api/ps reports evicted=true size=8.1GB\n...",
|
|
33
|
+
"source_paths": ["F:/AI/sprite-foundry/src/worker.ts", "memory/sprite-foundry-visual-mastery.md"]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Renvoie une enveloppe pointant vers un fichier sur le disque :
|
|
39
|
+
|
|
40
|
+
```jsonc
|
|
41
|
+
{
|
|
42
|
+
"result": {
|
|
43
|
+
"pack": "incident",
|
|
44
|
+
"slug": "2026-04-16-sprite-pipeline-5-am-paging-regression",
|
|
45
|
+
"artifact_md": "~/.ollama-intern/artifacts/incident/2026-04-16-sprite-pipeline-5-am-paging-regression.md",
|
|
46
|
+
"artifact_json": "~/.ollama-intern/artifacts/incident/2026-04-16-sprite-pipeline-5-am-paging-regression.json",
|
|
47
|
+
"weak": false,
|
|
48
|
+
"evidence_count": 6,
|
|
49
|
+
"next_checks": ["residency.evicted across last 24h", "OLLAMA_MAX_LOADED_MODELS vs loaded size"]
|
|
50
|
+
},
|
|
51
|
+
"tier_used": "deep",
|
|
52
|
+
"model": "qwen2.5:14b-instruct-q4_K_M",
|
|
53
|
+
"hardware_profile": "dev-rtx5080",
|
|
54
|
+
"tokens_in": 4180, "tokens_out": 612,
|
|
55
|
+
"elapsed_ms": 8410,
|
|
56
|
+
"residency": { "in_vram": true, "evicted": false }
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Ce fichier Markdown est la sortie du bureau de l'assistant — titres, bloc de preuves avec identifiants cités, instructions d'investigation `next_checks`, bannière `faible : vrai` si les preuves sont limitées. Il est déterministe : le rendu est du code, pas une invite. Ouvrez-le demain, comparez-le la semaine prochaine, exportez-le dans un manuel avec `ollama_artifact_export_to_path`.
|
|
61
|
+
|
|
62
|
+
Chaque concurrent dans cette catégorie commence par "économiser les jetons". Nous commençons par _voici le fichier que l'assistant a écrit_.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Ce qu'il y a ici — quatre niveaux, 28 outils
|
|
67
|
+
|
|
68
|
+
| Niveau | Nombre | Ce qui se trouve ici |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| **Atoms** | 15 | Primitives structurées. `classifier`, `extraire`, `trier_journaux`, `résumer_rapide` / `approfondi`, `brouillon`, `recherche`, `recherche_corpus` / `répondre` / `indexer` / `actualiser` / `lister`, `recherche_intégration`, `intégration`, `chat`. Les opérations par lots (`classifier`, `extraire`, `trier_journaux`) acceptent `items: [{id, text}]`. |
|
|
71
|
+
| **Briefs** | 3 | Rapports structurés basés sur des preuves. `rapport_incident`, `rapport_dépôt`, `rapport_modification`. Chaque affirmation cite un identifiant de preuve ; les inconnues sont supprimées côté serveur. Les preuves faibles affichent `faible : vrai` plutôt qu'une narration fausse. |
|
|
72
|
+
| **Packs** | 3 | Tâches composées avec un pipeline fixe qui écrit du Markdown + JSON durables dans `~/.ollama-intern/artifacts/`. `paquet_incident`, `paquet_dépôt`, `paquet_modification`. Rendu déterministe — aucun appel de modèle sur la forme de l'artefact. |
|
|
73
|
+
| **Artifacts** | 7 | Interface de continuité sur les sorties des paquets. `liste_artefacts` / `lire` / `différencier` / `exporter_vers_chemin`, plus trois extraits déterministes : `note_incident`, `section_intégration`, `note_version`. |
|
|
74
|
+
|
|
75
|
+
Total : **18 primitives + 3 paquets + 7 outils d'artefact = 28**.
|
|
76
|
+
|
|
77
|
+
Lignes figées :
|
|
78
|
+
- Les primitives sont figées à 18 (primitives + rapports). Aucun nouvel outil de primitive.
|
|
79
|
+
- Les paquets sont figés à 3. Aucun nouveau type de paquet.
|
|
80
|
+
- Le niveau d'artefact est figé à 7.
|
|
81
|
+
|
|
82
|
+
La référence complète des outils se trouve dans le [manuel](https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/reference/).
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Installation
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npm install -g ollama-intern-mcp
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Nécessite [Ollama](https://ollama.com) installé localement et les modèles de niveau téléchargés.
|
|
93
|
+
|
|
94
|
+
### Claude Code
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"mcpServers": {
|
|
99
|
+
"ollama-intern": {
|
|
100
|
+
"command": "npx",
|
|
101
|
+
"args": ["-y", "ollama-intern-mcp"],
|
|
102
|
+
"env": {
|
|
103
|
+
"OLLAMA_HOST": "http://127.0.0.1:11434",
|
|
104
|
+
"INTERN_PROFILE": "dev-rtx5080"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Claude Desktop
|
|
112
|
+
|
|
113
|
+
Le même bloc, écrit dans `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) ou `%APPDATA%\Claude\claude_desktop_config.json` (Windows).
|
|
114
|
+
|
|
115
|
+
### Téléchargement des modèles
|
|
116
|
+
|
|
117
|
+
**Profil de développement par défaut (RTX 5080 16 Go et similaire) :**
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
ollama pull qwen2.5:7b-instruct-q4_K_M
|
|
121
|
+
ollama pull qwen2.5-coder:7b-instruct-q4_K_M
|
|
122
|
+
ollama pull qwen2.5:14b-instruct-q4_K_M
|
|
123
|
+
ollama pull nomic-embed-text
|
|
124
|
+
export OLLAMA_MAX_LOADED_MODELS=4
|
|
125
|
+
export OLLAMA_KEEP_ALIVE=-1
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Profil M5 Max (128 Go unifiés) :**
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
ollama pull qwen2.5:14b-instruct-q4_K_M
|
|
132
|
+
ollama pull qwen2.5-coder:32b-instruct-q4_K_M
|
|
133
|
+
ollama pull llama3.3:70b-instruct-q4_K_M
|
|
134
|
+
ollama pull nomic-embed-text
|
|
135
|
+
export INTERN_PROFILE=m5-max
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Les variables d'environnement par niveau (`INTERN_TIER_INSTANT`, `INTERN_TIER_WORKHORSE`, `INTERN_TIER_DEEP`, `INTERN_EMBED_MODEL`) remplacent toujours les choix de profil pour les cas ponctuels.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Enveloppe uniforme
|
|
143
|
+
|
|
144
|
+
Chaque outil renvoie la même structure :
|
|
145
|
+
|
|
146
|
+
```ts
|
|
147
|
+
{
|
|
148
|
+
result: <tool-specific>,
|
|
149
|
+
tier_used: "instant" | "workhorse" | "deep" | "embed",
|
|
150
|
+
model: string,
|
|
151
|
+
hardware_profile: string, // "dev-rtx5080" | "dev-rtx5080-llama" | "m5-max"
|
|
152
|
+
tokens_in: number,
|
|
153
|
+
tokens_out: number,
|
|
154
|
+
elapsed_ms: number,
|
|
155
|
+
residency: {
|
|
156
|
+
in_vram: boolean,
|
|
157
|
+
size_bytes: number,
|
|
158
|
+
size_vram_bytes: number,
|
|
159
|
+
evicted: boolean
|
|
160
|
+
} | null
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
`résidence` provient de l'API Ollama `/api/ps`. Lorsque `évincé : vrai` ou `taille_vram < taille`, le modèle est paginé sur le disque et l'inférence est réduite de 5 à 10 fois — affichez cela à l'utilisateur pour qu'il sache de redémarrer Ollama ou de réduire le nombre de modèles chargés.
|
|
165
|
+
|
|
166
|
+
Chaque appel est enregistré sous forme d'une seule ligne NDJSON dans `~/.ollama-intern/log.ndjson`. Filtrez par `hardware_profile` pour empêcher les chiffres de développement d'être inclus dans les benchmarks publiés.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Profils matériels
|
|
171
|
+
|
|
172
|
+
| Profil | Instantané | Polyvalent | Approfondi | Intégration |
|
|
173
|
+
|---|---|---|---|---|
|
|
174
|
+
| **`dev-rtx5080`** (par défaut) | qwen2.5 7B | qwen2.5-coder 7B | qwen2.5 14B | nomic-embed-text |
|
|
175
|
+
| `dev-rtx5080-llama` | qwen2.5 7B | qwen2.5-coder 7B | **llama3.1 8B** | nomic-embed-text |
|
|
176
|
+
| `m5-max` | qwen2.5 14B | qwen2.5-coder 32B | llama3.3 70B | nomic-embed-text |
|
|
177
|
+
|
|
178
|
+
**Comparaison au sein de la même famille sur l'environnement de développement par défaut** : les résultats médiocres sont donc des problèmes de conception ou d'outils, et non des incompatibilités entre différentes familles de modèles. `dev-rtx5080-llama` est la référence : exécutez les mêmes évaluations de référence avec Llama 8B avant de déployer Llama sur M5 Max.
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Principes directeurs
|
|
183
|
+
|
|
184
|
+
Ces règles sont appliquées côté serveur, et non dans la requête :
|
|
185
|
+
|
|
186
|
+
- **Citations obligatoires.** Chaque affirmation est étayée par un identifiant de source.
|
|
187
|
+
- **Informations inconnues supprimées côté serveur.** Les modèles qui citent des identifiants qui ne figurent pas dans le paquet de sources voient ces identifiants supprimés, avec un avertissement, avant que le résultat ne soit renvoyé.
|
|
188
|
+
- **"Faible" signifie "faible".** Les sources de qualité inférieure sont marquées `weak: true` avec des notes explicatives. Elles ne sont jamais "améliorées" pour créer une narration artificielle.
|
|
189
|
+
- **Axé sur l'investigation, pas sur la prescription.** Seuls les éléments `next_checks` / `read_next` / `likely_breakpoints` sont autorisés. Les requêtes qui demandent "appliquer cette correction" sont interdites.
|
|
190
|
+
- **Rendu déterministe.** La forme du balisage des artefacts est du code, et non une requête. `draft` est réservé aux textes où la formulation du modèle est importante.
|
|
191
|
+
- **Comparaisons au sein du même paquet uniquement.** Les comparaisons `artifact_diff` entre différents paquets sont refusées ; les charges utiles restent distinctes.
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Artefacts et continuité
|
|
196
|
+
|
|
197
|
+
Les paquets écrivent dans `~/.ollama-intern/artifacts/{incident,repo,change}/<slug>.(md|json)`. La couche d'artefacts vous offre une continuité sans en faire un outil de gestion de fichiers :
|
|
198
|
+
|
|
199
|
+
- `artifact_list` — index contenant uniquement des métadonnées, filtrable par paquet, date, motif de slug
|
|
200
|
+
- `artifact_read` — lecture typée par `{pack, slug}` ou `{json_path}`
|
|
201
|
+
- `artifact_diff` — comparaison structurée au sein du même paquet ; les modifications de qualité inférieure sont signalées
|
|
202
|
+
- `artifact_export_to_path` — écrit un artefact existant (avec un en-tête de provenance) dans un répertoire déclaré par l'appelant (`allowed_roots`). Refuse les fichiers existants, sauf si `overwrite: true`.
|
|
203
|
+
- `artifact_incident_note_snippet` — fragment de note d'incident
|
|
204
|
+
- `artifact_onboarding_section_snippet` — fragment de guide d'utilisation
|
|
205
|
+
- `artifact_release_note_snippet` — fragment de note de version (DRAFT)
|
|
206
|
+
|
|
207
|
+
Aucun appel de modèle dans cette couche. Tout est généré à partir de contenu stocké.
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Modèle de menace et télémétrie
|
|
212
|
+
|
|
213
|
+
**Données traitées :** chemins de fichiers que l'appelant fournit explicitement (`ollama_research`, outils de corpus), texte intégré et artefacts que l'appelant demande d'être écrits dans `~/.ollama-intern/artifacts/` ou dans un répertoire déclaré par l'appelant (`allowed_roots`).
|
|
214
|
+
|
|
215
|
+
**Données NON traitées :** tout ce qui se trouve en dehors de `source_paths` / `allowed_roots`. `..` est rejeté avant la normalisation. `artifact_export_to_path` refuse les fichiers existants, sauf si `overwrite: true`. Les brouillons ciblant les chemins protégés (`memory/`, `.claude/`, `docs/canon/`, etc.) nécessitent une confirmation explicite (`confirm_write: true`), qui est appliquée côté serveur.
|
|
216
|
+
|
|
217
|
+
**Trafic sortant :** **désactivé par défaut.** Le seul trafic sortant est vers le point de terminaison HTTP local d'Ollama. Aucun appel cloud, aucun ping de mise à jour, aucun rapport de crash.
|
|
218
|
+
|
|
219
|
+
**Télémétrie :** **aucune.** Chaque appel est enregistré sous forme d'une seule ligne NDJSON dans `~/.ollama-intern/log.ndjson` sur votre machine. Rien ne quitte l'appareil.
|
|
220
|
+
|
|
221
|
+
**Erreurs :** format structuré `{ code, message, hint, retryable }`. Les traces de pile ne sont jamais exposées dans les résultats des outils.
|
|
222
|
+
|
|
223
|
+
Politique complète : [SECURITY.md](SECURITY.md).
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## Normes
|
|
228
|
+
|
|
229
|
+
Conçu selon les normes [Shipcheck](https://github.com/mcp-tool-shop-org/shipcheck). Les tests A à D doivent être réussis ; voir [SHIP_GATE.md](SHIP_GATE.md) et [SCORECARD.md](SCORECARD.md).
|
|
230
|
+
|
|
231
|
+
- **A. Sécurité** — SECURITY.md, modèle de menace, pas de télémétrie, sécurité des chemins, `confirm_write` pour les chemins protégés
|
|
232
|
+
- **B. Erreurs** — format structuré pour tous les résultats des outils ; pas de piles brutes
|
|
233
|
+
- **C. Documentation** — README à jour, CHANGELOG, LICENSE ; schémas des outils auto-documentés
|
|
234
|
+
- **D. Hygiène** — `npm run verify` (395 tests), CI avec analyse des dépendances, Dependabot, fichier de verrouillage, `engines.node`
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## Plan d'action (renforcement de la sécurité, et non extension des fonctionnalités)
|
|
239
|
+
|
|
240
|
+
- **Phase 1 — Infrastructure de délégation** ✓ Livré : interface atomique, enveloppe uniforme, routage par niveaux, mécanismes de sécurité.
|
|
241
|
+
- **Phase 2 — Infrastructure de vérification** ✓ Livré : segmentation de schéma v2, BM25 + RRF, corpus dynamiques, résumés étayés par des preuves, ensemble d'outils d'évaluation de la récupération.
|
|
242
|
+
- **Phase 3 — Infrastructure de regroupement et d'artefacts** ✓ Livré : ensembles de données avec artefacts durables + niveau de continuité.
|
|
243
|
+
- **Phase 4 — Infrastructure d'adoption (du produit)** — Observations d'utilisation réelle sur le RTX 5080, correction des aspects problématiques qui apparaissent.
|
|
244
|
+
- **Phase 5 — Tests de performance du M5 Max** — Publication des résultats une fois que le matériel est disponible (environ le 24 avril 2026).
|
|
245
|
+
|
|
246
|
+
Phase par couche de renforcement de la sécurité. L'interface atomique/de regroupement/d'artefacts reste figée.
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Licence
|
|
251
|
+
|
|
252
|
+
MIT — voir [LICENSE](LICENSE).
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
<p align="center">Built by <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a></p>
|