Voltar as noticias
Série MCP (04): Construindo Seu Primeiro Servidor MCP — Do Hello World aos Padrões de Produção
MCP ProtocolAltaEN

Série MCP (04): Construindo Seu Primeiro Servidor MCP — Do Hello World aos Padrões de Produção

Dev.to - MCP·11 de julho de 2026

A Lacuna Entre Hello World e um Servidor Útil

O servidor de demonstração do Artigo 02 está em funcionamento, mas possui apenas echo e add — ferramentas de brinquedo. Um servidor pronto para produção precisa resolver cinco problemas adicionais de engenharia:

  1. Como várias ferramentas compartilham dados e se compõem
  2. Como validar a entrada do usuário (LLMs também passam argumentos errados)
  3. Como retornar erros corretamente quando a execução da ferramenta falha
  4. Onde escrever logs (canal errado quebra o protocolo)
  5. Como Recursos fornecem contexto ao LLM antes de chamar ferramentas

A demonstração é um servidor Jira completo com dados fictícios integrados: nenhuma credencial real do Jira é necessária.

Estrutura do Servidor

demo_jira_server.py

Tools (4):
  search_issues(query, project?, status?, max_results?)
  get_issue(issue_key)
  create_issue(project, summary, description?, priority?, issue_type?)
  update_issue(issue_key, status?, assignee?, priority?)

Resources (1):
  jira://projects   project list (LLM reads this to know valid project keys)

Prompts (1):
  bug_analysis      structured bug report template

Padrão 1: Colaboração Multi-Ferramentas

Quatro ferramentas compartilham um único armazenamento de dados em memória ISSUES, formando um ciclo completo de leitura e escrita:

ISSUES: dict[str, dict] = {
    "PROJ-101": {
        "key": "PROJ-101",
        "summary": "NullPointerException em parseInput() quando a configuração é nula",
        "status": "Aberto",
        "priority": "P1", "issue_type": "Bug",
        ...
    },
}

# search_issues: filtrar e listar
# get_issue:     ler um por chave
# create_issue:  escrever nova questão (ID auto-incremental)
# update_issue:  modificar questão existente

Extraia a validação compartilhada em um helper que várias ferramentas chamam:

def validate_issue_key(key: str) -> str | None:
    """Retorna mensagem de erro se a chave for inválida, None se for válida."""
    if not key or "-" not in key:
        return f"Formato de chave de questão inválido: '{key}'. Formato esperado: PROJECT-123"
    project = key.split("-")[0]
    if project not in PROJECTS:
        return f"Projeto desconhecido: '{project}'. Projetos disponíveis: {', '.join(PROJECTS)}"
    if key not in ISSUES:
        return f"Questão '{key}' não encontrada"
Contexto Triplo Up

Este artigo é relevante para empresas brasileiras que buscam implementar servidores MCP, pois fornece insights práticos sobre a construção de sistemas robustos e escaláveis. A validação de entradas e a colaboração entre ferramentas são cruciais para garantir a eficiência e a confiabilidade dos serviços oferecidos.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.