Pular para o conteudo
MODULO 3-5

๐Ÿ› ๏ธ Criando seu Proprio MCP Server

Do zero ao deploy: anatomia de um server, SDK TypeScript, definicao de tools, handlers, testing e distribuicao. Ao final voce tera um MCP server custom funcionando.

6
Topicos
~50
Minutos
M3.4
Pre-requisito
Avancado
Tipo
Progresso:0%0 de 6
1

๐Ÿ—๏ธ Anatomia de um server MCP

Um MCP server e um processo que fala JSON-RPC via stdio (ou HTTP). No minimo, ele precisa responder a dois metodos: initialize (handshake) e tools/list (listar tools). Quando o client chama uma tool, o server recebe via tools/call e retorna o resultado.

Na pratica, o SDK abstrai tudo isso. Voce so define as tools e seus handlers. Mas entender a anatomia ajuda a debugar quando algo da errado.

Em 1 frase: um server MCP = processo que fala JSON-RPC e expoe tools com schemas.

2

๐Ÿ“ฆ SDK TypeScript

O pacote @modelcontextprotocol/sdk e o caminho mais rapido para criar um MCP server. Com 30 linhas voce tem um server funcional. A classe principal e McpServer, que voce instancia, registra tools, e conecta a um transport.

Instalacao: npm init -y && npm install @modelcontextprotocol/sdk zod. O Zod e usado para validar os inputs das tools de forma type-safe.

terminal
mkdir my-mcp-server && cd my-mcp-server
npm init -y
npm install @modelcontextprotocol/sdk zod
touch index.ts

Em 1 frase: SDK TypeScript = criar um MCP server funcional em 30 linhas.

3

๐Ÿ”ง Definindo tools e input schemas

Cada tool tem: nome (string unica), descricao (o que faz, em linguagem natural), e inputSchema (parametros via Zod ou JSON Schema). Um schema claro e descritivo e a diferenca entre o agente acertar de primeira ou chutar.

Dica: escreva a descricao como se explicasse para um junior. O agente usa esse texto para decidir quando e como chamar a tool.

index.ts (tool definition)
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({ name: "my-server", version: "1.0.0" });

server.tool("greet", "Say hello to someone by name", {
  name: z.string().describe("The person's name")
}, async ({ name }) => ({
  content: [{ type: "text", text: `Hello, ${name}!` }]
}));

const transport = new StdioServerTransport();
await server.connect(transport);

Em 1 frase: tool = nome + descricao clara + inputSchema Zod/JSON Schema.

4

โšก Handlers e respostas

O handler e a funcao async que recebe os argumentos validados e retorna um CallToolResult. O resultado e um array de content items, que podem ser texto, imagens, ou recursos embedded. Erros sao retornados com isError: true.

Pattern basico: receber args -> executar logica -> retornar {{ content: [{{ type: 'text', text: resultado }}] }}. Para erros, retorne a mensagem de erro no content com isError: true.

Em 1 frase: handler = funcao async que recebe args, executa logica, retorna content.

5

๐Ÿงช Testing seu server

O MCP Inspector e a ferramenta oficial para testar MCP servers. Rode npx @modelcontextprotocol/inspector node index.js e ele abre uma UI web onde voce pode listar tools, chamar com parametros, e ver as respostas.

Alem do Inspector, teste integrando direto no Claude Code: adicione ao settings.json local e peca ao agente para usar. Se ele consegue chamar a tool e receber resultado, esta funcionando.

terminal (inspector)
# Testar com o MCP Inspector
npx @modelcontextprotocol/inspector node index.js

Em 1 frase: MCP Inspector + teste no Claude Code = validacao completa do server.

6

๐Ÿ“ค Packaging e distribuicao

Para compartilhar seu server: (1) publique no npm com npm publish, (2) certifique-se de que funciona via npx (configure o campo bin no package.json), (3) opcionalmente, liste no Smithery.ai para visibilidade.

Se o server tem dependencias pesadas, considere um Docker image. Isso garante que funciona em qualquer maquina sem conflitos de dependencia.

Em 1 frase: npm publish + npx entry point + opcional Smithery listing = distribuicao.

๐Ÿงพ Resumo do Modulo

โœ“
Anatomia โ€” processo JSON-RPC com tools/list e tools/call.
โœ“
SDK TypeScript โ€” 30 linhas para um server funcional.
โœ“
Schema claro โ€” descricao boa = agente acerta de primeira.
โœ“
MCP Inspector โ€” ferramenta oficial para testar servers.

Proximo modulo:

3.6 โ€” Ecossistema e Marketplace: onde encontrar e avaliar MCPs.