Build This Now
Build This Now
Atalhos de TecladoGuia da Status Line
Básicos do MCPMCP Tool SearchContext7 MCP50+ Servidores MCP para Claude CodeServidores MCP no CursorPesquisa no Claude CodeAutomação de Browser com MCP para Claude CodeAutomatização de Redes Sociais com Claude CodeConstrói o Teu Próprio Servidor MCP para Claude Code
speedy_devvkoen_salo
Blog/Toolkit/MCP/Build Your Own MCP Server for Claude Code

Constrói o Teu Próprio Servidor MCP para Claude Code

Constrói um servidor MCP personalizado para Claude Code em Node.js. Definições de tools, handlers de pedidos, padrões REST e Postgres, mais a config que o Claude Code precisa para carregá-lo.

Pare de configurar. Comece a construir.

Templates SaaS com orquestração de IA.

Published Mar 8, 2026Toolkit hubMCP index

Problema: Os servidores MCP públicos não falam com os sistemas que tu realmente usas. A tua API interna, o Postgres da empresa, um workflow personalizado que mais ninguém toca. Para o Claude Code chegar a esses, tens de escrever o servidor tu mesmo.

Vitória Rápida: Cinco minutos de Node.js põe o Claude a falar com qualquer API REST:

// my-api-server.js - Connect Claude to your API
const { Server } = require("@modelcontextprotocol/sdk/server/index.js");
 
const server = new Server({ name: "my-api-server", version: "1.0.0" });
 
server.setRequestHandler("tools/list", async () => ({
  tools: [
    {
      name: "fetch_user_data",
      description: "Get user information from our internal API",
      inputSchema: {
        type: "object",
        properties: {
          userId: { type: "string", description: "User ID to fetch" },
        },
        required: ["userId"],
      },
    },
  ],
}));
 
server.setRequestHandler("tools/call", async (request) => {
  const { name, arguments: args } = request.params;
 
  if (name === "fetch_user_data") {
    const response = await fetch(
      `https://api.yourcompany.com/users/${args.userId}`,
      {
        headers: { Authorization: `Bearer ${process.env.API_TOKEN}` },
      },
    );
    return {
      content: [{ type: "text", text: JSON.stringify(await response.json()) }],
    };
  }
});
 
server.connect(process.stdio);

Guarda o ficheiro como my-api-server.js. Corre node my-api-server.js para o testar. Isso é uma integração funcional.

O Que é um Servidor MCP na Prática

Um servidor MCP é um processo Node.js que entrega ao Claude Code uma lista de tools que pode chamar. Corre por conta própria, separado do editor, e dá ao Claude um canal para tudo o que podes alcançar a partir de Node: APIs, bases de dados, serviços internos.

Cada servidor tem quatro coisas:

  • Definições de tools: as funções que o Claude pode chamar
  • Handlers de tools: o código que corre quando o Claude chama uma
  • Tratamento de erros: mensagens úteis quando a chamada falha
  • Autenticação: uma forma segura de alcançar os sistemas por trás

Padrões que Cobrem a Maioria dos Casos

Falar com uma API REST

Aponta o Claude para qualquer endpoint HTTP com um conector pequeno:

// Generic API connector pattern
const { Server } = require("@modelcontextprotocol/sdk/server/index.js");
 
const server = new Server({ name: "api-connector", version: "1.0.0" });
 
server.setRequestHandler("tools/list", async () => ({
  tools: [
    {
      name: "api_get",
      description: "GET request to any endpoint",
      inputSchema: {
        type: "object",
        properties: {
          endpoint: { type: "string", description: "API endpoint path" },
          params: { type: "object", description: "Query parameters" },
        },
        required: ["endpoint"],
      },
    },
  ],
}));
 
server.setRequestHandler("tools/call", async (request) => {
  const { name, arguments: args } = request.params;
 
  if (name === "api_get") {
    const url = new URL(`${process.env.API_BASE_URL}${args.endpoint}`);
    if (args.params) {
      Object.entries(args.params).forEach(([key, value]) =>
        url.searchParams.append(key, value),
      );
    }
 
    const response = await fetch(url, {
      headers: { Authorization: `Bearer ${process.env.API_TOKEN}` },
    });
 
    return {
      content: [
        { type: "text", text: JSON.stringify(await response.json(), null, 2) },
      ],
    };
  }
});
 
server.connect(process.stdio);

A mesma forma funciona para Stripe, Shopify, o teu dashboard interno, tudo o que fala HTTP.

Falar com uma Base de Dados

Troca a chamada fetch por um cliente de base de dados:

// Database connector for PostgreSQL, MySQL, SQLite
const { Server } = require("@modelcontextprotocol/sdk/server/index.js");
const { Client } = require("pg");
 
const server = new Server({ name: "database-connector", version: "1.0.0" });
const client = new Client({ connectionString: process.env.DATABASE_URL });
 
server.setRequestHandler("tools/call", async (request) => {
  if (request.params.name === "query_database") {
    const result = await client.query(request.params.arguments.query);
    return {
      content: [{ type: "text", text: JSON.stringify(result.rows, null, 2) }],
    };
  }
});

O Claude pode agora correr SQL e ajudar com trabalho de base de dados.

Configuração e Testes

Inicia o projeto:

mkdir my-mcp-server && cd my-mcp-server
npm init -y && npm install @modelcontextprotocol/sdk

Depois aponta o Claude Code para o servidor a partir do seu ficheiro de config MCP. Onde esse ficheiro fica depende de como corres o Claude:

  • Claude Code CLI: ~/.claude.json (nível de utilizador) ou .mcp.json (nível de projeto)
  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%\Claude\claude_desktop_config.json (Windows)
{
  "mcpServers": {
    "my-custom-server": {
      "command": "node",
      "args": ["/path/to/your/server.js"],
      "env": { "API_TOKEN": "your-token" }
    }
  }
}

Reinicia o Claude Code depois de guardar. O novo servidor carrega no arranque.

Quando as Coisas Falham

Servidor não encontrado: o caminho na config ou o JSON está errado. Verifica bem a localização do ficheiro. Usa um caminho absoluto para command.

Timeout da tool: chamadas demoradas bloqueiam a tool. Envolve-as no teu próprio timeout para que falhem de forma limpa.

Autenticação falhou: as variáveis de ambiente na config não estão a chegar ao servidor. Verifica se estão escritas corretamente e presentes.

Coisas que Vale a Pena Fazer Desde o Início

  • Cada chamada externa vai num try-catch para que os erros apareçam como texto, não como crashes
  • Os tokens vivem em variáveis de ambiente, nunca no código fonte
  • APIs com rate limit precisam do seu próprio throttle para o Claude não queimar a tua quota
  • A saída de console.log aparece nos logs do Claude, por isso usa-a à vontade para debugging

Próximos Passos

Escolhe uma coisa para ligar e constrói a partir daí:

  1. Começa com uma API: a que usas todos os dias
  2. Copia o padrão REST: o conector acima é o template
  3. Confirma que carregou: pergunta ao Claude "What MCP tools are available?" e a tua nova tool deve aparecer
  4. Escreve boas descrições de tools: o MCP Tool Search usa-as para decidir quando carregar o teu servidor
  5. Lê mais: o guia de fundamentos MCP e a lista de servidores MCP populares cobrem o que construir a seguir

Um servidor MCP personalizado transforma o Claude Code num cliente para o teu próprio stack. Um servidor por semana e a lista de coisas que o Claude pode alcançar vai crescendo silenciosamente.

Continue in MCP

  • 50+ Servidores MCP para Claude Code
    50+ servidores MCP para Claude Code, integrações com editores, monitores de uso, orquestradores, conectores de banco de dados, drivers de browser e starter kits que vale configurar hoje.
  • Automação de Browser com MCP para Claude Code
    Ligue Playwright ou Puppeteer ao Claude Code via MCP e controle browsers reais com comandos em linguagem natural para scraping, QA, testes de regressão, sem seletores.
  • Context7 MCP
    Adiciona Context7 MCP ao Claude Code para que os prompts vão buscar a documentação atual das bibliotecas no momento da consulta, eliminando suposições desatualizadas, APIs inventadas e funções renomeadas.
  • Servidores MCP no Cursor
    Configura servidores MCP no Cursor IDE. Onde fica o .cursor/mcp.json, o formato JSON que o Cursor espera, e os primeiros servidores a adicionar para pesquisa, git e browser.
  • Básicos do MCP
    Fundamentos do Model Context Protocol: processos de servidor expõem ferramentas, APIs e serviços ao Claude Code por um formato de comunicação partilhado. Configuração, transportes e primeiro servidor.
  • MCP Tool Search
    O MCP Tool Search carrega as definições de ferramentas do Claude Code de forma lazy quando ultrapassam 10% da janela de contexto, recuperando dezenas de milhares de tokens de servidores MCP inativos.

More from Toolkit

  • Atalhos de Teclado
    Configure o keybindings.json do Claude Code: 17 contextos, sintaxe de teclas, sequências de acordes, combinações de modificadores e como desvincular qualquer atalho padrão instantaneamente.
  • Guia da Status Line
    Configure uma status line no Claude Code para ver o nome do modelo, branch do git, custo da sessão e uso do contexto. Configuração via settings.json, input JSON, scripts em bash, Python e Node.js.
  • Otimização de SEO e GEO com IA
    Um resumo sobre Generative Engine Optimization: como fazer com que o teu conteúdo seja citado dentro das respostas do ChatGPT, Claude e Perplexity, em vez de apenas aparecer no Google.
  • Claude Code vs Cursor em 2026
    Uma comparação lado a lado entre Claude Code e Cursor em 2026: modelos de agente, janelas de contexto, planos de preço e como cada ferramenta se encaixa em diferentes fluxos de trabalho.

Pare de configurar. Comece a construir.

Templates SaaS com orquestração de IA.

On this page

O Que é um Servidor MCP na Prática
Padrões que Cobrem a Maioria dos Casos
Falar com uma API REST
Falar com uma Base de Dados
Configuração e Testes
Quando as Coisas Falham
Coisas que Vale a Pena Fazer Desde o Início
Próximos Passos

Pare de configurar. Comece a construir.

Templates SaaS com orquestração de IA.