---
title: Servidor MCP
sidebarTitle: Servidor MCP
description: Todos os sites Jamdesk incluem um servidor MCP integrado. Assistentes de IA, como Claude e Cursor, podem pesquisar e ler sua documentação diretamente.
---

> **For AI agents:** the complete documentation index is at [llms.txt](https://jamdesk.com/docs/llms.txt). Append `.md` to any page URL for its markdown version.

Todos os sites Jamdesk incluem um servidor MCP (Model Context Protocol). Enquanto o `llms.txt` oferece às ferramentas de IA uma visão estática da sua documentação, o MCP permite pesquisar e consultar conteúdo de forma interativa — útil quando agentes de IA precisam encontrar respostas específicas em vez de ler tudo.

## O que é MCP?

O [Model Context Protocol](https://modelcontextprotocol.io) é um padrão aberto que permite que ferramentas de IA acessem fontes de dados externas. Sua documentação do Jamdesk disponibiliza duas ferramentas por meio do MCP:

| Ferramenta | Finalidade |
|------|---------|
| `searchDocs` | Pesquisa a documentação por palavra-chave e retorna resultados classificados por relevância |
| `getPage` | Recupera o conteúdo completo de uma página específica |

## URL do endpoint

Seu endpoint MCP é a URL da documentação com `/_mcp` acrescentado. Se você já tiver um [domínio personalizado](https://jamdesk.com/docs/pt/deploy/custom-domains) ativo, use-o:

| Configuração | Endpoint |
|-------|----------|
| Domínio personalizado em `docs.acme.com` | `https://docs.acme.com/_mcp` |
| Sem domínio personalizado | `https://my-project.jamdesk.app/_mcp` |

<Note>
  Prefira o endpoint do domínio personalizado sempre que ele estiver conectado — assim, sua marca aparece em todas as URLs vistas pelas ferramentas de IA, e o endpoint continua funcionando mesmo que você oculte o subdomínio `.jamdesk.app` mais tarde com [Somente domínio personalizado](https://jamdesk.com/docs/pt/deploy/custom-domain-only).
</Note>

## Configuração rápida

### Claude Code

Adicione sua documentação como um servidor MCP:

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

Substitua `docs.acme.com` pelo domínio da sua documentação — ou por `my-project.jamdesk.app` se você ainda não conectou um domínio personalizado.

Agora, quando você perguntar ao Claude sobre seu projeto, ele poderá pesquisar e ler sua documentação diretamente.

### Cursor

Adicione ao arquivo `.cursor/mcp.json` do seu projeto:

```json
{
  "mcpServers": {
    "my-docs": {
      "url": "https://docs.acme.com/_mcp"
    }
  }
}
```

O Cursor se conectará automaticamente à sua documentação quando você abrir o projeto.

## Ferramentas disponíveis

### searchDocs

Pesquise sua documentação e obtenha resultados classificados por relevância.

**Parâmetros:**

| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|----------|-------------|
| `query` | string | Sim | Termos de pesquisa (por exemplo, "authentication", "getting started") |
| `limit` | number | Não | Número máximo de resultados (padrão: 10, máximo: 50) |
| `type` | string | Não | Filtre pelo tipo de conteúdo: `all`, `api`, `guide`, `quickstart`, `help`, `component` |

**Exemplo de solicitação:**

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

**Exemplo de resposta:**

```json
{
  "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

Recupere o conteúdo completo de uma página específica da documentação.

**Parâmetros:**

| Parâmetro | Tipo | Obrigatório | Descrição |
|-----------|------|----------|-------------|
| `slug` | string | Sim | Caminho da página sem o prefixo `/docs` (por exemplo, `api/authentication`) |

**Exemplo de solicitação:**

```json
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "getPage",
    "arguments": {
      "slug": "api/authentication"
    }
  }
}
```

**Exemplo de resposta:**

```json
{
  "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\"}"
    }]
  }
}
```

## Testar o endpoint

Você pode testar seu endpoint MCP diretamente com curl:

```bash
# 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"}}}'
```

## Sites protegidos por login

Se seu site usa autenticação por senha ou JWT, o servidor MCP precisa de uma chave de API do projeto. Crie uma em **Project Settings > API Keys** e envie-a em um cabeçalho:

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

Com a chave, um cliente MCP pode pesquisar e ler as páginas pesquisáveis do site, o mesmo conjunto abrangido pela busca do site. Páginas restritas a grupos nunca ficam disponíveis pelo MCP, com ou sem chave. Páginas ocultas e páginas com `search: false` são excluídas, a menos que você as tenha tornado pesquisáveis. Trate a chave como uma senha e revogue-a no dashboard se ela vazar.

Sem uma chave, o servidor responde com `401` e um corpo JSON que explica como adicionar uma. Uma chave de outro projeto é rejeitada. Os códigos de erro são:

| Status | `error` | Significado |
|--------|---------|---------|
| 401 | `auth_required` | Nenhuma chave foi enviada. |
| 401 | `invalid_api_key` | A chave não é válida para este site. |
| 503 | `auth_unavailable` | Não foi possível verificar a chave. Tente novamente após o número de segundos indicado no cabeçalho `Retry-After`. |

## Como funciona

O endpoint MCP usa um índice de pesquisa criado junto com sua documentação:

- **Classificação BM25** - Classifica os resultados por relevância
- **Correspondência aproximada** - Lida com erros de digitação (tolerância de 1 caractere)
- **Priorização de campos** - Títulos e cabeçalhos de seção têm mais peso que o conteúdo do corpo
- **Filtro por tipo** - Filtra resultados pelo tipo de conteúdo (API, guia etc.)

O índice é reconstruído a cada implantação.

## Limites de taxa

O endpoint MCP tem um limite de **60 solicitações por minuto** por endereço IP. Isso é suficiente para o uso normal de assistentes de IA. Se você exceder o limite, receberá uma resposta `429`.

## Solução de problemas

### O servidor MCP não conecta

Verifique se a URL do endpoint está correta e acessível:

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

Você deverá ver uma resposta JSON com informações do servidor. Caso contrário, verifique se sua documentação foi compilada pelo menos uma vez.

### A pesquisa não retorna resultados

O índice de pesquisa é gerado no momento do build. Se você adicionou conteúdo recentemente, inicie uma nova compilação no dashboard do Jamdesk para atualizar o índice.

### getPage retorna null

Confira se o slug corresponde exatamente ao caminho da página, sem a extensão `.mdx`. Por exemplo, se a página estiver em `api/authentication.mdx`, use `api/authentication` como slug.

### 401 auth\_required em um site protegido

O site usa autenticação por senha ou JWT, então a solicitação precisa de uma chave de API do projeto. Adicione o cabeçalho `Authorization: Bearer` com uma chave de **Project Settings > API Keys**. Consulte [Sites protegidos por login](#sites-protegidos-por-login).

## Próximos passos

<Columns cols={2}>
  <Card title="Escrever com IA" icon="wand-magic-sparkles" href="/pt/ai/writing-with-ai">
    Dicas para usar ferramentas de IA na escrita da documentação
  </Card>
  <Card title="llms.txt" icon="file-lines" href="/pt/ai/llms-txt">
    Índice de páginas gerado automaticamente para ferramentas de IA
  </Card>
</Columns>
