Jamdesk Documentation logo

Server MCP

Ogni sito Jamdesk include un server MCP integrato. Assistenti AI come Claude e Cursor possono cercare e leggere direttamente la tua documentazione.

Ogni sito Jamdesk dispone di un server MCP (Model Context Protocol) integrato. llms.txt fornisce agli strumenti AI un'istantanea statica della tua documentazione. MCP permette loro di cercare e interrogare la documentazione per trovare risposte specifiche senza doverla leggere per intero.

Che cos’è MCP?

Model Context Protocol è uno standard aperto per collegare strumenti AI a fonti di dati esterne. La tua documentazione Jamdesk espone due strumenti MCP:

StrumentoScopo
searchDocsCerca nella documentazione per parola chiave, restituisce risultati ordinati
getPageRecupera una pagina come Markdown completo

URL dell’endpoint

Il tuo endpoint MCP è l'URL della documentazione con /_mcp aggiunto. Se hai un dominio personalizzato attivo, usalo:

ConfigurazioneEndpoint
Dominio personalizzato docs.acme.comhttps://docs.acme.com/_mcp
Nessun dominio personalizzatohttps://my-project.jamdesk.app/_mcp

Usa l'endpoint con dominio personalizzato quando ne è collegato uno. Mantiene il tuo branding in ogni URL che vedono gli strumenti AI. Continua inoltre a funzionare se in seguito nasconderai il sottodominio .jamdesk.app con Solo dominio personalizzato.

Configurazione rapida

Aggiungi la tua documentazione come server MCP:

claude mcp add --transport http my-docs https://docs.acme.com/_mcp

Sostituisci docs.acme.com con il tuo dominio di documentazione. Usa my-project.jamdesk.app se non hai collegato un dominio personalizzato.

Claude può ora cercare e leggere la tua documentazione quando chiedi del tuo progetto.

Strumenti disponibili

searchDocs

Cerca nella tua documentazione e ottieni risultati ordinati.

Parametri:

ParametroTipoObbligatorioDescrizione
querystringSìTermini di ricerca (es. "authentication", "getting started")
limitnumberNoRisultati massimi (predefinito: 10, massimo: 50)
typestringNoFiltra per tipo di contenuto: all, api, guide, quickstart, help, component

Esempio di richiesta:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "searchDocs",
    "arguments": {
      "query": "authentication",
      "limit": 5
    }
  }
}

Esempio di risposta:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [{
      "type": "text",
      "text": "{\"query\":\"authentication\",\"total\":1,\"results\":[{\"title\":\"Authentication\",\"description\":\"How to authenticate API requests\",\"url\":\"/docs/api/authentication\",\"type\":\"api\",\"score\":0.95}]}"
    }]
  }
}

getPage

Recupera una pagina della documentazione come Markdown. Tabelle, elenchi e blocchi di codice vengono restituiti integri, non come brevi estratti. Passa come url il valore restituito da searchDocs, oppure il percorso della pagina come slug. Le pagine più lunghe di 80.000 caratteri vengono troncate a quella lunghezza, con un rimando all'URL .md della pagina per il resto.

Parametri:

ParametroTipoObbligatorioDescrizione
urlstringUno tra url o slugIl url di un risultato di searchDocs (es. /docs/api/authentication). Funzionano anche URL completi di pagina e link .md.
slugstringUno tra url o slugIl percorso della pagina senza il prefisso /docs (es. api/authentication)

Invia uno solo. Se invii entrambi, viene usato slug.

Esempio di richiesta:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "getPage",
    "arguments": {
      "url": "/docs/api/authentication"
    }
  }
}

Esempio di risposta:

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [{
      "type": "text",
      "text": "{\"title\":\"Authentication\",\"description\":\"How to authenticate\",\"content\":\"## Overview\\n\\nUse API keys to authenticate...\",\"url\":\"/docs/api/authentication\"}"
    }]
  }
}

Testare l’endpoint

Testa il tuo endpoint MCP con curl:

# List available tools
curl -X POST https://docs.acme.com/_mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

# Search for content
curl -X POST https://docs.acme.com/_mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"searchDocs","arguments":{"query":"getting started"}}}'

Siti protetti da login

Se il tuo sito usa l'autenticazione con password o JWT, il server MCP richiede una chiave API di progetto. Creala in Project Settings > API Keys e inviala come header:

claude mcp add --transport http my-docs https://docs.example.com/_mcp \
  --header "Authorization: Bearer jd_live_..."

Una chiave permette a un client MCP di cercare e leggere le pagine ricercabili del sito, lo stesso insieme coperto dalla ricerca del sito. Le pagine con accesso limitato a gruppi non sono mai disponibili tramite MCP, con o senza chiave. Le pagine nascoste e le pagine con search: false sono escluse, a meno che tu non le abbia rese ricercabili. Tratta la chiave come una password. Revocala dalla dashboard se viene divulgata.

La stessa chiave apre anche gli URL delle pagine .md, llms.txt e llms-full.txt. Vedi llms.txt e Markdown Source. La chiave non apre mai le pagine HTML né la chat AI. Per quelle serve comunque un login.

Senza chiave, il server risponde con 401 e un corpo JSON che spiega come aggiungerne una. Una chiave di un altro progetto viene rifiutata. I codici di errore sono:

StatoerrorSignificato
401auth_requiredNessuna chiave è stata inviata.
401invalid_api_keyLa chiave non è valida per questo sito.
503auth_unavailableImpossibile verificare la chiave. Riprova dopo il numero di secondi indicato nell'header Retry-After.

Come funziona

L'endpoint MCP usa un indice di ricerca creato insieme alla documentazione:

  • Ranking BM25: ordina i risultati per pertinenza
  • Corrispondenza approssimata: tollera errori di battitura di 1 carattere
  • Peso dei campi: titoli e intestazioni di sezione pesano più del contenuto del corpo
  • Filtro per tipo: filtra i risultati per tipo di contenuto (API, guida, ecc.)

L'indice viene ricostruito a ogni deploy.

Limiti di frequenza

Le richieste senza chiave API sono limitate a circa 60 al minuto per indirizzo IP. È sufficiente per l'assistente AI di una persona. Tutti coloro che si trovano dietro un IP condiviso, come una rete d'ufficio o il tuo backend, attingono alla stessa quota.

Le richieste che inviano una chiave API di progetto saltano il limite per IP e ricevono invece 120 al minuto per chiave, su qualsiasi sito. Aggiungi la chiave alla configurazione del client MCP nello stesso modo previsto per i siti protetti da login.

Su un sito protetto da login, anche le richieste di pagine .md e di llms.txt o llms-full.txt fatte con una chiave contano nel limite di quella chiave. La Search API mantiene un proprio limite di 60 al minuto per chiave.

Le richieste oltre il limite ricevono una risposta 429 con Retry-After: 60.

Risoluzione dei problemi

Verifica che l'URL dell'endpoint sia corretto e raggiungibile:

curl https://docs.acme.com/_mcp

Dovresti vedere una risposta JSON con le informazioni del server. In caso contrario, controlla che la documentazione sia stata compilata almeno una volta.

Jamdesk genera l'indice di ricerca al momento della build. Avvia una ricompilazione dalla dashboard di Jamdesk per indicizzare i nuovi contenuti.

Passa il url di un risultato di searchDocs per evitare disallineamenti degli slug. Se invii uno slug, deve corrispondere esattamente al percorso della pagina, senza l'estensione .mdx. Una pagina in api/authentication.mdx ha lo slug api/authentication.

Il sito usa l'autenticazione con password o JWT. La richiesta necessita di una chiave API di progetto. Aggiungi l'header Authorization: Bearer con una chiave presa da Project Settings > API Keys. Vedi Siti protetti da login.

Prossimi passi

Scrivere con l'AI

Consigli per usare gli strumenti AI nella scrittura della documentazione

llms.txt

Indice delle pagine generato automaticamente per gli strumenti AI