TRILHA 3

🐍 Criando Seu Primeiro MCP Server

Construa um MCP Server do zero em Python, entendendo cada linha de código — do Hello World ao server completo com tools, resources e prompts.

9
Módulos
54
Tópicos
~6h
Duração
Intermediário
Nível

Navegação Rápida

Conteúdo Detalhado
Módulo 3.1 ~25 min · Teórico

🏗️ Estrutura de um MCP Server

Anatomia de um servidor: inicialização, registro de tools e ciclo de execução.

O que é:

Um MCP Server é composto por componentes essenciais: o objeto FastMCP que gerencia tudo, as funções decoradas que definem tools, resources e prompts, e o ponto de entrada que inicia o servidor. Cada parte tem uma responsabilidade clara.

Por que aprender:

Conhecer a anatomia de um server te permite entender qualquer código MCP que encontrar e criar seus próprios servers com confiança, sabendo onde cada peça se encaixa.

Conceitos-chave:

FastMCP, objeto server, decorators, ponto de entrada, componentes, responsabilidades.

O que é:

A inicialização de um MCP Server envolve criar a instância FastMCP com um nome, configurar parâmetros opcionais como versão e descrição, e preparar o ambiente para receber conexões. O setup é o momento onde tudo é registrado.

Por que aprender:

Um setup bem feito garante que seu server funcione corretamente desde o primeiro momento. Erros na inicialização são os mais difíceis de diagnosticar se você não entende o processo.

Conceitos-chave:

FastMCP(), nome do server, parâmetros de configuração, instanciação, setup inicial.

O que é:

Registrar tools é o processo de decorar funções Python com @mcp.tool() para torná-las disponíveis para o modelo de IA. O decorator extrai automaticamente o nome, descrição e schema de parâmetros da função.

Por que aprender:

O registro de tools é a operação mais fundamental de um MCP Server. Dominar este processo é essencial para criar servers que expõem funcionalidades úteis ao modelo.

Conceitos-chave:

@mcp.tool(), registro automático, introspecção de função, schema generation, decorators Python.

O que é:

O ciclo de vida de um MCP Server inclui: inicialização, handshake com o Client, registro de capabilities, espera por requisições, processamento de chamadas, e encerramento gracioso. Cada fase tem eventos e comportamentos específicos.

Por que aprender:

Entender o ciclo de vida permite criar servers robustos que lidam corretamente com cada fase, incluindo inicialização e shutdown limpos.

Conceitos-chave:

Lifecycle, handshake, capabilities, request loop, graceful shutdown, eventos de ciclo.

O que é:

A estrutura de arquivos de um MCP Server típico inclui o arquivo principal do server, um pyproject.toml ou requirements.txt para dependências, e opcionalmente módulos separados para tools complexas. Servers simples podem ser um único arquivo.

Por que aprender:

Uma boa organização de arquivos facilita a manutenção, os testes e a colaboração. Seguir convenções permite que outros desenvolvedores entendam seu server rapidamente.

Conceitos-chave:

Estrutura de projeto, arquivo principal, dependências, pyproject.toml, módulos, organização.

O que é:

As configurações essenciais de um MCP Server incluem o nome do server, versão, transporte utilizado, e variáveis de ambiente. Essas configurações definem como o server se apresenta ao Client e como ele se comporta em diferentes ambientes.

Por que aprender:

Configurar corretamente seu server garante compatibilidade com diferentes Hosts e ambientes. Configurações erradas são uma causa comum de problemas de conexão.

Conceitos-chave:

Nome e versão, transporte, variáveis de ambiente, configuração de Host, compatibilidade.

Ver Completo
Módulo 3.2 ~30 min · Prático

👋 Hello World MCP

Crie seu primeiro server com uma tool que retorna 'Olá, mundo!' — o mínimo funcional.

O que é:

O objetivo é criar o MCP Server mais simples possível: um server com uma única tool que retorna "Olá, mundo!". Este é o equivalente do Hello World para o ecossistema MCP — o mínimo funcional que prova que tudo está funcionando.

Por que aprender:

Começar com o mínimo funcional elimina a complexidade e permite focar no essencial. Uma vez que o Hello World funciona, você tem uma base sólida para adicionar features.

Conceitos-chave:

Hello World, mínimo funcional, proof of concept, base de aprendizado, simplicidade.

O que é:

Criar o arquivo do server envolve definir o diretório do projeto, criar o arquivo Python principal (ex: server.py), e garantir que o ambiente virtual está configurado com as dependências corretas instaladas via pip.

Por que aprender:

Saber criar a estrutura inicial corretamente evita problemas de importação, dependências e execução. É o alicerce sobre o qual todo o resto é construído.

Conceitos-chave:

Criação de projeto, server.py, ambiente virtual, pip install, estrutura de diretórios.

O que é:

O código do Hello World MCP consiste em importar FastMCP, criar a instância do server, definir uma função decorada com @mcp.tool() que retorna "Olá, mundo!", e adicionar o ponto de entrada com mcp.run(). São menos de 10 linhas de código.

Por que aprender:

Escrever o código do zero, ao invés de copiar e colar, garante que você entenda cada linha. Este é o conhecimento fundamental que será expandido em todos os módulos seguintes.

Conceitos-chave:

from mcp.server.fastmcp import FastMCP, instanciação, @mcp.tool(), return string, mcp.run().

O que é:

Para que o Claude Desktop reconheça seu server, é preciso adicioná-lo ao claude_desktop_config.json. A entrada inclui o comando para executar o Python, o caminho para o arquivo do server, e opcionalmente variáveis de ambiente.

Por que aprender:

A configuração no Host é o passo que conecta seu código ao modelo de IA. Sem ela, seu server existe mas ninguém consegue usá-lo. É a ponte entre o desenvolvimento e o uso real.

Conceitos-chave:

claude_desktop_config.json, mcpServers, command, args, caminho do script, reiniciar Claude.

O que é:

Testar o Hello World envolve reiniciar o Claude Desktop, verificar que o server aparece na lista de conexões, e enviar uma mensagem que acione a tool. O Claude deve chamar sua tool e exibir "Olá, mundo!" na resposta.

Por que aprender:

Ver seu primeiro server funcionando é o momento mais motivador do curso. Confirmar que tudo funciona te dá confiança para construir servers mais complexos.

Conceitos-chave:

Teste manual, verificação de conexão, tool calling, resposta esperada, troubleshooting básico.

O que é:

Uma análise linha por linha do código Hello World: o import traz o framework, FastMCP() cria o server, @mcp.tool() registra a função, a docstring vira a descrição da tool, o return define a resposta, e mcp.run() inicia o loop de eventos.

Por que aprender:

Entender cada linha em profundidade transforma código memorizado em conhecimento real. Você saberá modificar e expandir qualquer parte do server com segurança.

Conceitos-chave:

Import statement, instanciação, decorator pattern, docstring como metadata, event loop, execução.

Ver Completo
Módulo 3.3 ~25 min · Teórico

🎨 Entendendo Decorators e Schemas

Como o FastMCP usa decorators Python para registrar tools e definir parâmetros.

O que é:

Decorators em Python são funções que envolvem outras funções, adicionando comportamento sem modificar o código original. O símbolo @ antes de uma função indica que ela está sendo decorada. No MCP, decorators registram funções como tools, resources ou prompts.

Por que aprender:

Decorators são o mecanismo central do FastMCP. Sem entendê-los, o código parece mágico. Com esse conhecimento, você controla exatamente o que está acontecendo.

Conceitos-chave:

Python decorators, @syntax, wrapper functions, metaprogramação, registro automático.

O que é:

O decorator @mcp.tool() transforma uma função Python comum em uma tool MCP. Ele extrai o nome da função, sua docstring como descrição, e os type hints dos parâmetros como schema de entrada. Também aceita parâmetros opcionais para personalizar o registro.

Por que aprender:

@mcp.tool() é o decorator que você vai usar em 90% dos casos. Dominar suas opções e comportamentos te permite criar tools precisas e bem documentadas.

Conceitos-chave:

@mcp.tool(), nome automático, docstring como descrição, type hints, parâmetros opcionais.

O que é:

Schemas de parâmetros definem os tipos de entrada que uma tool aceita. O FastMCP usa type hints do Python (str, int, float, bool, list, dict) para gerar automaticamente o JSON Schema que o modelo usa para construir chamadas corretas.

Por que aprender:

Schemas bem definidos garantem que o modelo envie dados no formato correto. Sem schemas adequados, suas tools recebem dados inesperados e falham silenciosamente.

Conceitos-chave:

JSON Schema, type hints, str, int, float, bool, Optional, parâmetros obrigatórios vs opcionais.

O que é:

Tools MCP podem retornar strings simples, dicionários que são serializados em JSON, ou listas de conteúdo com tipos específicos (texto, imagem, etc). O tipo de retorno define como o modelo interpreta e apresenta o resultado ao usuário.

Por que aprender:

Escolher o tipo de retorno adequado impacta como o modelo usa o resultado. Retornos bem formatados permitem que o modelo gere respostas mais precisas e úteis.

Conceitos-chave:

Return string, return dict, TextContent, ImageContent, serialização, formatação de resposta.

O que é:

As descrições de tools vêm das docstrings das funções Python. O modelo lê essas descrições para decidir quando e como usar cada tool. Descrições claras e específicas fazem o modelo usar suas tools de forma mais inteligente e precisa.

Por que aprender:

A qualidade das descrições impacta diretamente a qualidade das interações. Uma tool com descrição ruim será ignorada ou usada incorretamente pelo modelo.

Conceitos-chave:

Docstrings, descrição de tool, descrição de parâmetros, prompt engineering para tools, clareza.

O que é:

Boas práticas para tools MCP incluem: nomes descritivos em snake_case, docstrings detalhadas, type hints em todos os parâmetros, valores padrão quando faz sentido, retornos informativos, e tratamento de erros consistente.

Por que aprender:

Seguir boas práticas desde o início cria hábitos que resultam em servers mais robustos, mais fáceis de manter e mais eficazes na interação com o modelo.

Conceitos-chave:

Naming conventions, documentação, type safety, default values, error handling, consistência.

Ver Completo
Módulo 3.4 ~35 min · Prático

🔢 Server de Calculadora

4 tools (somar, subtrair, multiplicar, dividir) com validação de entrada.

O que é:

Planejar as tools da calculadora envolve definir 4 operações matemáticas (somar, subtrair, multiplicar, dividir), seus parâmetros (dois números), tipos de entrada (float), e comportamentos especiais como validação de divisão por zero.

Por que aprender:

Planejar antes de codar é um hábito essencial. Definir a interface das tools antes de implementá-las garante consistência e evita retrabalho.

Conceitos-chave:

Planejamento de API, definição de interface, parâmetros consistentes, edge cases, validação.

O que é:

Implementar soma e subtração como tools MCP envolve criar funções decoradas que recebem dois parâmetros float, executam a operação, e retornam o resultado formatado. São as tools mais simples e servem como modelo para as próximas.

Por que aprender:

Começar com as operações mais simples permite focar no padrão de implementação. Uma vez que soma e subtração funcionam, multiplicação e divisão seguem o mesmo modelo.

Conceitos-chave:

Implementação de tools, parâmetros float, retorno formatado, docstrings descritivas, padrão replicável.

O que é:

A tool de multiplicação segue o mesmo padrão das anteriores, mas introduz a oportunidade de discutir formatação de resultados com muitas casas decimais e como apresentar números grandes de forma legível para o modelo.

Por que aprender:

A multiplicação parece trivial, mas levanta questões práticas sobre formatação e precisão numérica que são relevantes para qualquer tool que trabalhe com números.

Conceitos-chave:

Multiplicação, formatação numérica, precisão decimal, números grandes, apresentação de resultado.

O que é:

A tool de divisão introduz o primeiro caso real de validação de entrada: verificar se o divisor é zero antes de executar a operação. Isso demonstra como tratar erros de forma elegante e retornar mensagens informativas ao modelo.

Por que aprender:

Validação de entrada é uma habilidade crítica para qualquer server. A divisão por zero é o exemplo perfeito para introduzir o conceito de way tools devem lidar com entradas inválidas.

Conceitos-chave:

Validação de entrada, divisão por zero, mensagem de erro, retorno condicional, robustez.

O que é:

Testar todas as tools da calculadora envolve verificar cada operação com diferentes tipos de entrada: números inteiros, decimais, negativos, zero, e números muito grandes. Inclui testar o caso de divisão por zero para confirmar que a validação funciona.

Por que aprender:

Testes abrangentes garantem que seu server funciona em todos os cenários. Criar o hábito de testar com inputs variados evita bugs em produção.

Conceitos-chave:

Testes manuais, casos de teste, edge cases, inputs variados, verificação de validação.

O que é:

Melhorar a calculadora com tratamento de erros robusto inclui: adicionar try/except para capturar exceções inesperadas, validar tipos de entrada, limitar o tamanho dos números aceitos, e retornar mensagens de erro padronizadas que o modelo pode interpretar.

Por que aprender:

Transformar um protótipo funcional em código robusto é uma habilidade profissional. Este passo mostra como evoluir seu server de "funciona" para "funciona sempre".

Conceitos-chave:

Try/except, validação robusta, limites de entrada, mensagens de erro padronizadas, defensive programming.

Ver Completo
Módulo 3.5 ~35 min · Prático

🌤️ Server de Consulta ao Clima

Tool que consulta uma API externa e retorna dados formatados.

O que é:

Escolher uma API de clima gratuita e confiável é o primeiro passo para construir o server. APIs como Open-Meteo oferecem dados meteorológicos sem necessidade de chave de API, tornando o setup mais simples e acessível para aprendizado.

Por que aprender:

Saber escolher e avaliar APIs externas é uma habilidade fundamental. Muitos MCP Servers na prática são wrappers que conectam modelos de IA a APIs existentes.

Conceitos-chave:

API de clima, Open-Meteo, API gratuita, endpoints, documentação de API, rate limits.

O que é:

Fazer requisições HTTP dentro de um MCP Server requer o uso de bibliotecas assíncronas como httpx, já que o FastMCP roda em um event loop asyncio. As requisições buscam dados da API e retornam respostas JSON que precisam ser parseadas.

Por que aprender:

Requisições HTTP são a base de qualquer integração com serviços externos. Dominar chamadas assíncronas garante que seu server não trava enquanto espera respostas de APIs.

Conceitos-chave:

httpx, async/await, requisição GET, JSON parsing, headers, query parameters.

O que é:

Implementar a tool de clima envolve criar uma função async decorada que recebe o nome da cidade como parâmetro, faz a requisição à API, extrai os dados relevantes (temperatura, umidade, condição), e retorna uma string formatada com as informações.

Por que aprender:

Esta é a primeira tool que conecta seu server ao mundo externo. O padrão de receber input, buscar dados, e formatar resposta é usado em 80% dos MCP Servers reais.

Conceitos-chave:

async def, parâmetro cidade, chamada de API, extração de dados, formatação de resposta.

O que é:

Formatar a resposta significa transformar dados brutos da API em uma string organizada e legível. Isso inclui apresentar temperatura com unidades, condição climática em texto descritivo, e informações adicionais de forma estruturada para o modelo interpretar.

Por que aprender:

A qualidade da formatação determina quão bem o modelo interpreta e apresenta os dados ao usuário. Dados bem formatados geram respostas mais naturais e informativas.

Conceitos-chave:

Formatação de dados, f-strings, unidades de medida, estruturação de informação, legibilidade.

O que é:

Erros de rede são inevitáveis: a API pode estar fora do ar, a conexão pode cair, ou a resposta pode vir em formato inesperado. Tratar esses erros envolve try/except para httpx.HTTPError, timeouts configuráveis, e mensagens de erro informativas.

Por que aprender:

Tools que dependem de APIs externas precisam ser resilientes. Sem tratamento de erros, uma falha de rede derruba todo o server ao invés de retornar uma mensagem útil.

Conceitos-chave:

HTTPError, timeout, ConnectionError, retry logic, fallback, mensagem de erro amigável.

O que é:

Testar com Claude envolve perguntar sobre o clima em diferentes cidades e verificar que o modelo chama a tool corretamente, recebe os dados, e apresenta as informações de forma natural ao usuário. Inclui testar com cidades inexistentes para validar o tratamento de erros.

Por que aprender:

O teste com Claude é o teste real de integração. Ele mostra como o modelo decide quando usar sua tool e como interpreta os resultados que ela retorna.

Conceitos-chave:

Teste de integração, interação com Claude, tool calling real, validação end-to-end, cenários de erro.

Ver Completo
Módulo 3.6 ~30 min · Prático

📦 Adicionando Resources

Exponha dados estáticos e dinâmicos como Resources para o modelo consumir.

O que é:

No código, Resources são funções decoradas com @mcp.resource() que retornam dados quando acessadas por uma URI específica. Diferente de tools, resources não executam ações — eles expõem informações que o modelo pode ler para enriquecer seu contexto.

Por que aprender:

Resources são o segundo pilar de um MCP Server. Implementá-los no código complementa o conhecimento teórico da Trilha 1 e amplia as capacidades do seu server.

Conceitos-chave:

@mcp.resource(), URI, retorno de dados, exposição de contexto, diferença de tools.

O que é:

Resources estáticos retornam sempre o mesmo conteúdo — como documentação, guias, configurações padrão, ou qualquer dado que não muda entre chamadas. São os mais simples de implementar e ideais para contexto de referência.

Por que aprender:

Resources estáticos são a forma mais simples de fornecer contexto rico ao modelo. Eles podem transformar a qualidade das respostas ao dar ao modelo informações de referência sempre disponíveis.

Conceitos-chave:

Conteúdo estático, documentação, configurações, guias de referência, dados imutáveis.

O que é:

Resources dinâmicos calculam ou buscam dados a cada acesso — como o status atual do sistema, dados de um banco de dados, ou informações que mudam com o tempo. Eles usam as mesmas URIs mas retornam conteúdo atualizado.

Por que aprender:

Resources dinâmicos permitem que o modelo acesse dados em tempo real sem precisar de tool calls. Eles são ideais para dashboards, status e informações que mudam frequentemente.

Conceitos-chave:

Conteúdo dinâmico, dados em tempo real, cálculo sob demanda, atualização automática, freshness.

O que é:

URI schemes definem como os resources são identificados e acessados. Cada resource tem uma URI única (ex: config://app/settings, data://users/list) que o Client usa para solicitar o conteúdo. O scheme indica o tipo e o path indica o recurso específico.

Por que aprender:

URIs bem projetadas tornam seus resources intuitivos e organizados. Um bom esquema de URIs facilita a descoberta e o uso dos resources pelo modelo.

Conceitos-chave:

URI, scheme, path, identificação única, convenções de naming, hierarquia de recursos.

O que é:

O protocolo MCP permite que o Client liste todos os resources disponíveis no Server via resources/list. Isso permite descoberta automática: o modelo sabe quais dados estão disponíveis sem precisar de documentação externa.

Por que aprender:

A listagem de resources é o que torna o protocolo auto-documentável. O modelo pode explorar os resources disponíveis e escolher os mais relevantes para cada situação.

Conceitos-chave:

resources/list, descoberta automática, auto-documentação, metadata de resources, listagem dinâmica.

O que é:

Testar resources envolve verificar que eles aparecem na listagem, que suas URIs são acessíveis, que o conteúdo retornado está correto, e que resources dinâmicos atualizam seus dados. O teste pode ser feito via Claude ou MCP Inspector.

Por que aprender:

Testar resources garante que o modelo tem acesso aos dados corretos. Resources quebrados podem fazer o modelo gerar respostas baseadas em informações desatualizadas ou incorretas.

Conceitos-chave:

Teste de resources, verificação de URI, conteúdo correto, atualização dinâmica, debugging.

Ver Completo
Módulo 3.7 ~25 min · Prático

📝 Adicionando Prompts

Crie prompts reutilizáveis que o modelo pode invocar.

O que é:

No código, Prompts são funções decoradas com @mcp.prompt() que retornam templates de mensagens pré-definidas. Eles podem aceitar parâmetros para personalização e retornam uma lista de mensagens que guiam o comportamento do modelo.

Por que aprender:

Prompts são o terceiro pilar do MCP e o mais subutilizado. Implementá-los no código completa seu domínio sobre as três capacidades de um MCP Server.

Conceitos-chave:

@mcp.prompt(), templates de mensagens, parâmetros, lista de mensagens, role (user/assistant).

O que é:

Um prompt simples é uma função que retorna uma mensagem fixa sem aceitar parâmetros. Por exemplo, um prompt que instrui o modelo a agir como um revisor de código ou um assistente de debugging, com instruções detalhadas sobre o comportamento esperado.

Por que aprender:

Prompts simples são o ponto de partida mais acessível. Eles demonstram o mecanismo sem a complexidade de parâmetros, permitindo focar na estrutura e no formato.

Conceitos-chave:

Prompt sem parâmetros, mensagem fixa, instrução de comportamento, formato de retorno, simplicidade.

O que é:

Prompts com parâmetros aceitam argumentos que personalizam a mensagem gerada. Por exemplo, um prompt de code review que recebe a linguagem de programação e o foco da revisão como parâmetros, gerando instruções específicas para cada caso.

Por que aprender:

Prompts parametrizados são muito mais versáteis que prompts fixos. Eles permitem criar templates reutilizáveis que se adaptam a diferentes contextos com um único código.

Conceitos-chave:

Parâmetros de prompt, templates dinâmicos, f-strings em prompts, personalização, reutilização.

O que é:

Assim como tools e resources, prompts podem ser listados pelo Client via prompts/list. A listagem mostra o nome, descrição e parâmetros aceitos por cada prompt, permitindo que o Host ofereça uma interface de seleção ao usuário.

Por que aprender:

A listagem de prompts é como o Host descobre quais workflows estão disponíveis. Prompts bem documentados aparecem de forma clara na interface do usuário.

Conceitos-chave:

prompts/list, descoberta de prompts, metadata, descrição de parâmetros, interface do Host.

O que é:

Os melhores casos de uso para prompts MCP incluem: workflows padronizados (code review, análise de dados), onboarding de novos usuários, instruções de domínio específico, e templates que combinam contexto de resources com instruções para usar tools.

Por que aprender:

Saber quando usar prompts vs tools vs resources é uma decisão de design importante. Prompts brilham em cenários onde o comportamento do modelo precisa ser guiado de forma consistente.

Conceitos-chave:

Workflows padronizados, onboarding, instruções de domínio, combinação com tools e resources, consistência.

O que é:

Testar prompts envolve verificar que eles aparecem na listagem, que aceitam parâmetros corretamente, e que as mensagens geradas guiam o modelo conforme esperado. O teste inclui verificar o comportamento do modelo quando o prompt é ativado.

Por que aprender:

Prompts mal testados podem fazer o modelo se comportar de forma inesperada. Testar garante que as instruções são claras e produzem o comportamento desejado.

Conceitos-chave:

Teste de prompts, validação de parâmetros, verificação de comportamento, qualidade de instrução, iteração.

Ver Completo
Módulo 3.8 ~25 min · Prático

⚠️ Tratamento de Erros

Como lidar com falhas, timeouts e entradas inválidas de forma elegante.

O que é:

Erros em MCP Servers se dividem em categorias: erros de entrada (parâmetros inválidos), erros de execução (falhas na lógica), erros de rede (APIs inacessíveis), erros de sistema (falta de memória, disco cheio), e erros de protocolo (mensagens mal formatadas).

Por que aprender:

Classificar erros é o primeiro passo para tratá-los corretamente. Cada tipo de erro requer uma estratégia diferente de tratamento e uma mensagem de retorno apropriada.

Conceitos-chave:

Erros de entrada, erros de execução, erros de rede, erros de sistema, classificação, estratégia.

O que é:

Validação de entrada é o processo de verificar que os parâmetros recebidos são válidos antes de executar a lógica da tool. Inclui verificar tipos, ranges, formato de strings, tamanho de listas, e qualquer condição que os dados devem atender.

Por que aprender:

Validar entrada é a primeira linha de defesa contra erros. É mais fácil e seguro rejeitar inputs ruins do que lidar com os erros cascata que eles causam durante a execução.

Conceitos-chave:

Input validation, type checking, range checking, early return, mensagens de rejeição claras.

O que é:

Usar try/except em tools permite capturar exceções durante a execução e retornar mensagens de erro úteis ao invés de crashes. O padrão recomendado é capturar exceções específicas, logar o erro, e retornar uma mensagem que o modelo pode usar para informar o usuário.

Por que aprender:

Try/except bem implementado é a diferença entre um server que crasha e um que se recupera elegantemente. Exceptions não tratadas podem derrubar todo o server MCP.

Conceitos-chave:

try/except, exceções específicas, logging, recuperação, mensagem de erro como retorno.

O que é:

Erros de rede incluem conexão recusada, DNS não resolvido, timeout de conexão, e respostas HTTP com status de erro. Cada tipo requer tratamento específico: retry para erros transitórios, fallback para indisponibilidade prolongada.

Por que aprender:

Se seu server depende de APIs externas, erros de rede são inevitáveis. Saber tratá-los garante que seu server continua útil mesmo quando serviços externos falham.

Conceitos-chave:

ConnectionError, TimeoutError, HTTP status codes, retry, fallback, circuit breaker.

O que é:

Timeouts limitam quanto tempo uma operação pode demorar antes de ser cancelada. Em tools MCP, é essencial configurar timeouts para chamadas de rede, operações de disco, e qualquer processamento que pode travar. O asyncio.wait_for() é a ferramenta padrão.

Por que aprender:

Sem timeouts, uma tool pode ficar pendurada indefinidamente, bloqueando o server e frustrando o usuário. Timeouts garantem que o server sempre responde em tempo razoável.

Conceitos-chave:

asyncio.wait_for(), timeout configurável, TimeoutError, cancelamento, tempo de resposta.

O que é:

Logging em MCP Servers usa o módulo logging do Python para registrar eventos, erros e informações de debug. Logs devem ir para stderr (não stdout, que é usado pelo protocolo). Níveis como DEBUG, INFO, WARNING e ERROR ajudam a filtrar informações.

Por que aprender:

Sem logs, debugar um MCP Server é como navegar no escuro. Bons logs são essenciais para diagnosticar problemas em desenvolvimento e em produção.

Conceitos-chave:

módulo logging, stderr vs stdout, níveis de log, formatação, debug em produção, rastreabilidade.

Ver Completo
Módulo 3.9 ~30 min · Prático

🔍 Testando com MCP Inspector

Use o MCP Inspector para depurar e testar tools sem precisar do Claude.

O que é:

O MCP Inspector é uma ferramenta oficial que permite conectar-se a um MCP Server e testar suas tools, resources e prompts de forma interativa, sem precisar de um modelo de IA. Ele funciona como um Client MCP com interface visual.

Por que aprender:

O Inspector é a ferramenta mais eficiente para desenvolver e debugar MCP Servers. Ele permite testar rapidamente sem depender do Claude Desktop, acelerando o ciclo de desenvolvimento.

Conceitos-chave:

MCP Inspector, ferramenta de teste, interface visual, Client MCP, desenvolvimento rápido.

O que é:

O MCP Inspector pode ser executado via npx sem instalação permanente. O comando npx @modelcontextprotocol/inspector inicia a ferramenta, que abre uma interface web onde você pode conectar-se ao seu server e explorar suas capacidades.

Por que aprender:

Instalar e executar o Inspector rapidamente é uma habilidade prática que acelera todo o seu workflow de desenvolvimento MCP. É uma ferramenta que você vai usar constantemente.

Conceitos-chave:

npx, @modelcontextprotocol/inspector, interface web, sem instalação permanente, Node.js.

O que é:

Conectar o Inspector ao seu server envolve especificar o comando para iniciar o server (ex: python server.py), o transporte (geralmente STDIO), e clicar em conectar. O Inspector executa o handshake MCP e lista todas as capabilities disponíveis.

Por que aprender:

Saber conectar o Inspector ao seu server é o passo fundamental para usá-lo. A conexão revela imediatamente se há problemas de inicialização ou configuração no seu server.

Conceitos-chave:

Conexão STDIO, comando de execução, handshake, capabilities, detecção de problemas.

O que é:

O Inspector permite selecionar qualquer tool listada, preencher seus parâmetros manualmente, e executá-la. O resultado é exibido na interface com detalhes completos: conteúdo retornado, tempo de execução, e qualquer erro que tenha ocorrido.

Por que aprender:

Testar tools no Inspector é muito mais rápido que testar via Claude. Você pode iterar rapidamente, testar edge cases, e verificar que suas tools funcionam corretamente antes de integrá-las.

Conceitos-chave:

Execução manual, preenchimento de parâmetros, visualização de resultado, tempo de execução, iteração rápida.

O que é:

Analisar respostas no Inspector significa examinar o conteúdo retornado por tools, resources e prompts em formato raw. Você pode ver exatamente o JSON que o server envia, incluindo tipos de conteúdo, metadata, e estrutura da resposta.

Por que aprender:

Ver as respostas raw permite entender exatamente o que o modelo recebe. Isso é crucial para otimizar a formatação e garantir que as respostas são interpretáveis.

Conceitos-chave:

Respostas raw, JSON, tipos de conteúdo, metadata, formatação, análise de output.

O que é:

O Inspector mostra erros detalhados quando algo dá errado: stack traces de Python, erros de protocolo, timeouts, e problemas de conexão. Combinado com logs do server, permite identificar a causa raiz de qualquer problema rapidamente.

Por que aprender:

Debugging eficiente é o que separa um desenvolvedor produtivo de um que fica travado por horas. O Inspector é sua ferramenta principal para diagnosticar e resolver problemas em MCP Servers.

Conceitos-chave:

Stack traces, erros de protocolo, diagnóstico, causa raiz, correção, ciclo debug-fix-test.

Ver Completo
← Trilha Anterior Próxima Trilha →