MÓDULO 3.7

📝 Adicionando Prompts

Crie prompts reutilizáveis que estruturam como o modelo interage com seu server.

6
Tópicos
25
Minutos
Intermediário
Nível
Prático
Tipo
1

📝 O Que São Prompts no Código

No contexto do MCP, prompts são templates de instrução que o server oferece ao modelo. Eles são diferentes de tools (que executam ações) e resources (que fornecem dados). Prompts estruturam como o modelo deve pensar e responder em cenários específicos, usando o decorator @mcp.prompt() para registrá-los no server.

💎 Conceito Principal

Um prompt MCP é um template reutilizável que define instruções para o modelo. Enquanto tools executam ações concretas (buscar dados, enviar mensagens) e resources expõem dados estáticos (arquivos, configurações), prompts definem padrões de interação — como o modelo deve analisar código, gerar relatórios ou formatar respostas. O decorator @mcp.prompt() registra uma função Python como um prompt disponível no server, que o client pode listar e invocar.

💡 Dica Prática

Pense em prompts como receitas pré-definidas para o modelo. Em vez de o usuário escrever "analise este código focando em bugs, performance e legibilidade" toda vez, o server oferece um prompt "revisar_codigo" pronto. O client escolhe o prompt, o server retorna as instruções formatadas, e o modelo sabe exatamente o que fazer. É reutilização de conhecimento em forma de instruções.

2

✏️ Criando Prompts Simples

O prompt mais básico é uma função decorada com @mcp.prompt() que retorna uma string. Essa string contém as instruções que serão enviadas ao modelo. Simples, direto e poderoso — basta definir a função e o MCP cuida do resto.

💎 Conceito Principal

Criar um prompt simples requer apenas o decorator e uma função que retorna string:

@mcp.prompt()
def revisar_codigo():
"""Prompt para revisão de código"""
return "Revise este código focando em bugs, performance e legibilidade."

O nome da função (revisar_codigo) vira o identificador do prompt. A docstring vira a descrição. A string retornada vira o conteúdo do prompt enviado ao modelo.

❌ Evitar
  • Prompts vagos sem foco claro
  • Instruções ambíguas ou contraditórias
  • Prompts enormes que tentam cobrir tudo
  • Funções sem docstring (descrição vazia)
✅ Fazer
  • Prompts focados em uma tarefa específica
  • Instruções claras e objetivas
  • Nomes descritivos para as funções
  • Docstring explicando o propósito do prompt
3

🔧 Prompts com Parâmetros

Prompts estáticos são úteis, mas o verdadeiro poder aparece quando você adiciona parâmetros dinâmicos. Usando type hints do Python, o MCP detecta automaticamente os parâmetros e os expõe ao client, que pode preenchê-los antes de invocar o prompt.

💎 Conceito Principal

Parâmetros são definidos como argumentos da função com type hints:

@mcp.prompt()
def gerar_relatorio(tipo: str, periodo: str):
"""Gera um relatório personalizado"""
return f"Gere um relatório de {tipo} do período {periodo}. "
f"Inclua métricas, tendências e recomendações."

O MCP usa os type hints para informar ao client quais parâmetros são esperados. O client apresenta campos para o usuário preencher (ex: tipo="vendas", periodo="Q1 2025") antes de invocar o prompt.

💡 Dica Prática

Use nomes descritivos para os parâmetros — tipo e periodo são melhores que t e p. O client exibe esses nomes para o usuário, então clareza importa. Se um parâmetro é opcional, use Optional[str] = None como type hint.

📋 Fluxo de um prompt com parâmetros
Passo 1

O client lista os prompts disponíveis e vê "gerar_relatorio" com parâmetros tipo (str) e periodo (str).

Passo 2

O usuário preenche os parâmetros: tipo="vendas", periodo="março 2025".

Passo 3

O server executa a função, substitui os parâmetros na string e retorna o prompt completo para o modelo.

4

📋 Listando Prompts

O client MCP pode solicitar a lista de todos os prompts disponíveis no server, incluindo seus nomes, descrições e parâmetros. Isso permite que interfaces de usuário exibam um catálogo de prompts disponíveis, tornando a experiência intuitiva e auto-documentada.

💎 Conceito Principal

O protocolo MCP define o método prompts/list que retorna todos os prompts registrados no server. Para cada prompt, o client recebe: o nome (derivado do nome da função), a descrição (derivada da docstring da função) e a lista de parâmetros (derivada dos type hints). Isso significa que a documentação do prompt é gerada automaticamente a partir do código Python — não é necessário manter documentação separada.

📊 Dados e Pesquisa

O que o client recebe ao listar prompts:

// Resposta de prompts/list
{
"prompts": [
{
"name": "revisar_codigo",
"description": "Prompt para revisão de código",
"arguments": []
},
{
"name": "gerar_relatorio",
"description": "Gera um relatório personalizado",
"arguments": [
{ "name": "tipo", "required": true },
{ "name": "periodo", "required": true }
]
}
]
}
5

🎯 Casos de Uso

Prompts MCP brilham quando você tem padrões de interação que se repetem frequentemente. Em vez de cada usuário escrever suas próprias instruções (muitas vezes de forma inconsistente), o server oferece prompts padronizados e testados que garantem resultados de alta qualidade.

💎 Conceito Principal

Os melhores prompts MCP encapsulam expertise do domínio em templates reutilizáveis. Um prompt de análise de código pode incluir critérios que um desenvolvedor sênior usaria. Um prompt de relatório pode seguir o formato oficial da empresa. A ideia é transformar conhecimento tácito em instruções explícitas e compartilháveis, permitindo que qualquer usuário obtenha resultados de nível especialista.

📋 Cinco casos de uso poderosos
Análise de Código

Prompt que instrui o modelo a revisar código focando em bugs, segurança, performance e legibilidade — com checklist padronizado da equipe.

Geração de Relatórios

Prompt parametrizado que gera relatórios em formato específico com métricas, gráficos sugeridos e recomendações acionáveis.

Formatação de Dados

Prompt que transforma dados brutos em tabelas formatadas, JSON estruturado ou CSV — com regras de validação embutidas.

Templates de Email

Prompt que gera emails profissionais seguindo o tom e formato da empresa, com parâmetros para destinatário, assunto e contexto.

Revisão de Documentação

Prompt que analisa documentação técnica verificando clareza, completude, exemplos e consistência com padrões do projeto.

❌ Evitar
  • Criar um único prompt genérico para tudo
  • Duplicar lógica que deveria ser uma tool
  • Prompts que dependem de contexto externo não fornecido
  • Ignorar a diferença entre prompt, tool e resource
✅ Fazer
  • Um prompt por tarefa específica
  • Usar prompts para instrução, tools para ação
  • Parametrizar o que varia entre invocações
  • Testar cada prompt com diferentes inputs
6

🧪 Testando Prompts

Antes de disponibilizar prompts para uso em produção, é essencial testá-los. O MCP Inspector permite listar todos os prompts do server, visualizar parâmetros esperados e invocar prompts manualmente para verificar que as instruções geradas são corretas e completas.

💎 Conceito Principal

O MCP Inspector é a ferramenta ideal para testar prompts. Na aba "Prompts", ele lista todos os prompts registrados com seus nomes, descrições e parâmetros. Você pode preencher os parâmetros e clicar em "Get Prompt" para ver exatamente o que será enviado ao modelo. Isso permite validar que as instruções estão completas, que os parâmetros são substituídos corretamente e que o formato está adequado — tudo sem precisar conectar ao Claude Desktop.

💡 Dica Prática

Teste cada prompt com valores extremos: strings vazias, textos muito longos, caracteres especiais. Verifique que o prompt lida bem com edge cases. Se um parâmetro é opcional, teste com e sem ele. Se o prompt usa f-strings, confirme que a interpolação funciona corretamente para todos os cenários previstos.

🚨 Alerta

Prompts não validam parâmetros automaticamente — se o client enviar uma string vazia para um parâmetro obrigatório, o prompt será gerado com o espaço em branco. Sempre valide os parâmetros dentro da função antes de construir a string de retorno. Use if not tipo: raise ValueError("tipo é obrigatório") para garantir que dados inválidos não passem silenciosamente.

📝 Resumo do Módulo

  • Prompts MCP são templates de instrução registrados com @mcp.prompt() — diferentes de tools e resources.
  • Prompts simples retornam uma string fixa com instruções para o modelo.
  • Parâmetros dinâmicos são definidos via type hints e preenchidos pelo client antes da invocação.
  • O client pode listar prompts disponíveis com nomes, descrições e parâmetros — documentação automática.
  • Casos de uso incluem análise de código, relatórios, formatação de dados, emails e revisão de documentação.
  • O MCP Inspector permite testar e validar prompts antes de colocá-los em produção.

Próximo Módulo: 3.8 — Tratamento de Erros