summaryrefslogtreecommitdiffhomepage
path: root/packages/web/src/content/docs/it/mcp-servers.mdx
blob: a067d99639ea35e2bb400b6f3e07694d5c21023c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
---
title: Server MCP
description: Aggiungi strumenti MCP locali e remoti.
---

Puoi aggiungere strumenti esterni a OpenCode usando il _Model Context Protocol_, o MCP. OpenCode supporta sia server locali sia remoti.

Una volta aggiunti, gli strumenti MCP sono automaticamente disponibili all'LLM insieme agli strumenti integrati.

---

#### Avvertenze

Quando usi un server MCP, aggiunge contenuto al contesto. Questo puo' crescere rapidamente se hai molti strumenti. Per questo consigliamo di fare attenzione a quali server MCP abiliti.

:::tip
I server MCP aumentano il contesto, quindi e' meglio essere prudenti su quali abilitare.
:::

Alcuni server MCP, come il server MCP di GitHub, tendono ad aggiungere molti token e possono facilmente superare il limite di contesto.

---

## Abilita

Puoi definire server MCP nella tua [OpenCode Config](https://opencode.ai/docs/config/) sotto `mcp`. Aggiungi ogni MCP con un nome univoco. Puoi riferirti a quell'MCP per nome quando fai prompt all'LLM.

```jsonc title="opencode.jsonc" {6}
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "name-of-mcp-server": {
      // ...
      "enabled": true,
    },
    "name-of-other-mcp-server": {
      // ...
    },
  },
}
```

Puoi anche disabilitare un server impostando `enabled` a `false`. E' utile se vuoi disabilitare temporaneamente un server senza rimuoverlo dalla configurazione.

---

### Sovrascrivere i default remoti

Le organizzazioni possono fornire server MCP predefiniti tramite l'endpoint `.well-known/opencode`. Questi server possono essere disabilitati di default, lasciando agli utenti la possibilita' di fare opt-in su quelli necessari.

Per abilitare un server specifico dalla configurazione remota dell'organizzazione, aggiungilo alla configurazione locale con `enabled: true`:

```json title="opencode.json"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": true
    }
  }
}
```

I valori della configurazione locale sovrascrivono i default remoti. Vedi [config precedence](/docs/config#precedence-order) per maggiori dettagli.

---

## Locali

Aggiungi server MCP locali impostando `type` a `"local"` dentro l'oggetto `mcp`.

```jsonc title="opencode.jsonc" {15}
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-local-mcp-server": {
      "type": "local",
      // Or ["bun", "x", "my-mcp-command"]
      "command": ["npx", "-y", "my-mcp-command"],
      "enabled": true,
      "environment": {
        "MY_ENV_VAR": "my_env_var_value",
      },
    },
  },
}
```

Il comando e' come viene avviato il server MCP locale. Puoi anche passare un elenco di variabili d'ambiente.

Per esempio, ecco come aggiungere il server MCP di test [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything).

```jsonc title="opencode.jsonc"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mcp_everything": {
      "type": "local",
      "command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
    },
  },
}
```

E per usarlo posso aggiungere `use the mcp_everything tool` ai miei prompt.

```txt "mcp_everything"
use the mcp_everything tool to add the number 3 and 4
```

---

#### Opzioni

Ecco tutte le opzioni per configurare un server MCP locale.

| Opzione       | Tipo    | Richiesto | Descrizione                                                                          |
| ------------- | ------- | --------- | ------------------------------------------------------------------------------------ |
| `type`        | String  | Y         | Tipo di connessione del server MCP, deve essere `"local"`.                           |
| `command`     | Array   | Y         | Comando e argomenti per eseguire il server MCP.                                      |
| `environment` | Object  |           | Variabili d'ambiente da impostare quando si esegue il server.                        |
| `enabled`     | Boolean |           | Abilita o disabilita il server MCP all'avvio.                                        |
| `timeout`     | Number  |           | Timeout in ms per recuperare gli strumenti dal server MCP. Default 5000 (5 secondi). |

---

## Remoti

Aggiungi server MCP remoti impostando `type` a `"remote"`.

```json title="opencode.json"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-remote-mcp": {
      "type": "remote",
      "url": "https://my-mcp-server.com",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer MY_API_KEY"
      }
    }
  }
}
```

`url` e' l'URL del server MCP remoto e con l'opzione `headers` puoi passare un elenco di header.

---

#### Opzioni

| Opzione   | Tipo    | Richiesto | Descrizione                                                                          |
| --------- | ------- | --------- | ------------------------------------------------------------------------------------ |
| `type`    | String  | Y         | Tipo di connessione del server MCP, deve essere `"remote"`.                          |
| `url`     | String  | Y         | URL del server MCP remoto.                                                           |
| `enabled` | Boolean |           | Abilita o disabilita il server MCP all'avvio.                                        |
| `headers` | Object  |           | Header da inviare con la richiesta.                                                  |
| `oauth`   | Object  |           | Configurazione autenticazione OAuth. Vedi sezione [OAuth](#oauth) sotto.             |
| `timeout` | Number  |           | Timeout in ms per recuperare gli strumenti dal server MCP. Default 5000 (5 secondi). |

---

## OAuth

OpenCode gestisce automaticamente l'autenticazione OAuth per i server MCP remoti. Quando un server richiede autenticazione, OpenCode:

1. Rileva la risposta 401 e avvia il flusso OAuth
2. Usa **Dynamic Client Registration (RFC 7591)** se supportato dal server
3. Memorizza i token in modo sicuro per richieste future

---

### Automatico

Per la maggior parte dei server MCP con OAuth, non serve alcuna configurazione speciale. Basta configurare il server remoto:

```json title="opencode.json"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-oauth-server": {
      "type": "remote",
      "url": "https://mcp.example.com/mcp"
    }
  }
}
```

Se il server richiede autenticazione, OpenCode ti chiedera' di autenticarti la prima volta che provi a usarlo. In caso contrario, puoi [attivare manualmente il flusso](#authenticating) con `opencode mcp auth <server-name>`.

---

### Pre-registrato

Se hai credenziali client dal provider del server MCP, puoi configurarle:

```json title="opencode.json" {7-11}
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-oauth-server": {
      "type": "remote",
      "url": "https://mcp.example.com/mcp",
      "oauth": {
        "clientId": "{env:MY_MCP_CLIENT_ID}",
        "clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
        "scope": "tools:read tools:execute"
      }
    }
  }
}
```

---

### Autenticazione

Puoi avviare manualmente l'autenticazione o gestire le credenziali.

Autentica con un server MCP specifico:

```bash
opencode mcp auth my-oauth-server
```

Elenca tutti i server MCP e il loro stato di autenticazione:

```bash
opencode mcp list
```

Rimuovi credenziali memorizzate:

```bash
opencode mcp logout my-oauth-server
```

Il comando `mcp auth` aprira' il browser per l'autorizzazione. Dopo l'autorizzazione, OpenCode memorizzera' i token in modo sicuro in `~/.local/share/opencode/mcp-auth.json`.

---

#### Disabilitare OAuth

Se vuoi disabilitare l'OAuth automatico per un server (ad esempio per server che usano API key), imposta `oauth` a `false`:

```json title="opencode.json" {7}
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-api-key-server": {
      "type": "remote",
      "url": "https://mcp.example.com/mcp",
      "oauth": false,
      "headers": {
        "Authorization": "Bearer {env:MY_API_KEY}"
      }
    }
  }
}
```

---

#### Opzioni OAuth

| Opzione        | Tipo            | Descrizione                                                                 |
| -------------- | --------------- | --------------------------------------------------------------------------- |
| `oauth`        | Object \| false | Oggetto config OAuth, o `false` per disabilitare l'auto-detection di OAuth. |
| `clientId`     | String          | OAuth client ID. Se non fornito, si prova la dynamic client registration.   |
| `clientSecret` | String          | OAuth client secret, se richiesto dal server di autorizzazione.             |
| `scope`        | String          | Scope OAuth da richiedere durante l'autorizzazione.                         |

#### Debug

Se un server MCP remoto non riesce ad autenticarsi, puoi diagnosticare i problemi con:

```bash
# View auth status for all OAuth-capable servers
opencode mcp auth list

# Debug connection and OAuth flow for a specific server
opencode mcp debug my-oauth-server
```

Il comando `mcp debug` mostra lo stato di autenticazione corrente, testa la connettivita' HTTP e prova il flusso di discovery OAuth.

---

## Gestione

I tuoi MCP sono disponibili come strumenti in OpenCode insieme agli strumenti integrati. Quindi puoi gestirli tramite la configurazione OpenCode come qualunque altro strumento.

---

### Globale

Questo significa che puoi abilitarli o disabilitarli globalmente.

```json title="opencode.json" {14}
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-mcp-foo": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-foo"]
    },
    "my-mcp-bar": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-bar"]
    }
  },
  "tools": {
    "my-mcp-foo": false
  }
}
```

Possiamo anche usare un pattern glob per disabilitare tutti gli MCP corrispondenti.

```json title="opencode.json" {14}
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-mcp-foo": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-foo"]
    },
    "my-mcp-bar": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-bar"]
    }
  },
  "tools": {
    "my-mcp*": false
  }
}
```

Qui stiamo usando il pattern glob `my-mcp*` per disabilitare tutti gli MCP.

---

### Per agente

Se hai molti server MCP, potresti volerli abilitare solo per agente e disabilitarli globalmente. Per farlo:

1. Disabilitalo globalmente come strumento.
2. Nella tua [config dell'agente](/docs/agents#tools), abilita il server MCP come strumento.

```json title="opencode.json" {11, 14-18}
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-mcp": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command"],
      "enabled": true
    }
  },
  "tools": {
    "my-mcp*": false
  },
  "agent": {
    "my-agent": {
      "tools": {
        "my-mcp*": true
      }
    }
  }
}
```

---

#### Pattern glob

Il pattern glob usa semplici regole di globbing:

- `*` corrisponde a zero o piu' caratteri qualsiasi (ad esempio `"my-mcp*"` corrisponde a `my-mcp_search`, `my-mcp_list`, ecc.)
- `?` corrisponde esattamente a un carattere
- Tutti gli altri caratteri corrispondono letteralmente

:::note
Gli strumenti del server MCP vengono registrati con il nome del server come prefisso, quindi per disabilitare tutti gli strumenti di un server e' sufficiente usare:

```
"mymcpservername_*": false
```

:::

---

## Esempi

Qui sotto trovi esempi di alcuni server MCP comuni. Puoi inviare una PR se vuoi documentare altri server.

---

### Sentry

Aggiungi il [server MCP di Sentry](https://mcp.sentry.dev) per interagire con i tuoi progetti e le issue di Sentry.

```json title="opencode.json" {4-8}
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sentry": {
      "type": "remote",
      "url": "https://mcp.sentry.dev/mcp",
      "oauth": {}
    }
  }
}
```

Dopo aver aggiunto la configurazione, autentica con Sentry:

```bash
opencode mcp auth sentry
```

Questo aprira' una finestra del browser per completare il flusso OAuth e collegare OpenCode al tuo account Sentry.

Una volta autenticato, puoi usare gli strumenti Sentry nei tuoi prompt per interrogare issue, progetti e dati sugli errori.

```txt "use sentry"
Show me the latest unresolved issues in my project. use sentry
```

---

### Context7

Aggiungi il [server MCP Context7](https://github.com/upstash/context7) per cercare nella documentazione.

```json title="opencode.json" {4-7}
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp"
    }
  }
}
```

Se ti sei registrato per un account gratuito, puoi usare la tua API key e ottenere rate limit piu' alti.

```json title="opencode.json" {7-9}
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp",
      "headers": {
        "CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
      }
    }
  }
}
```

Qui assumiamo che tu abbia impostato la variabile d'ambiente `CONTEXT7_API_KEY`.

Aggiungi `use context7` ai tuoi prompt per usare il server MCP Context7.

```txt "use context7"
Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
```

In alternativa, puoi aggiungere qualcosa del genere al tuo [AGENTS.md](/docs/rules/).

```md title="AGENTS.md"
When you need to search docs, use `context7` tools.
```

---

### Grep by Vercel

Aggiungi il server MCP [Grep by Vercel](https://grep.app) per cercare snippet di codice su GitHub.

```json title="opencode.json" {4-7}
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "gh_grep": {
      "type": "remote",
      "url": "https://mcp.grep.app"
    }
  }
}
```

Dato che abbiamo chiamato il nostro server MCP `gh_grep`, puoi aggiungere `use the gh_grep tool` ai tuoi prompt per fare in modo che l'agente lo usi.

```txt "use the gh_grep tool"
What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool
```

In alternativa, puoi aggiungere qualcosa del genere al tuo [AGENTS.md](/docs/rules/).

```md title="AGENTS.md"
If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.
```