Configure seu ambiente de desenvolvimento para construir servidores MCP com TypeScript e o SDK oficial
Antes de começarmos a construir servidores MCP, vamos garantir que você tenha tudo o que precisa. Não se preocupe - a configuração é simples!
Você precisará de:
Por que Node.js 18+? O SDK MCP usa recursos modernos de JavaScript e a API fetch nativa, que requer Node.js 18 ou superior.
Este módulo assume que você:
Se você é novo no TypeScript, não se preocupe! Explicaremos os conceitos específicos do TypeScript conforme avançamos.
Vamos configurar seu ambiente de desenvolvimento passo a passo.
Primeiro, verifique se você tem o Node.js instalado:
<CodeExample title="Verificando a Versão do Node.js" language="bash" code={`# Verificar versão do Node.js (deve ser 18.x ou superior) node --version
npm --version
/>
Se você precisar instalar ou atualizar o Node.js:
Embora não sejam obrigatórias, essas ferramentas melhorarão sua experiência de desenvolvimento:
<CodeExample title="Ferramentas Globais Opcionais" language="bash" code={`# Compilador TypeScript (opcional - usaremos tsx para desenvolvimento) npm install -g typescript
npm install -g @modelcontextprotocol/inspector`} />
Dica Profissional: Usar tsx ao invés de tsc durante o desenvolvimento permite executar arquivos TypeScript diretamente sem compilação!
Verifique sua instalação do Node.js
Agora vamos criar seu primeiro projeto de servidor MCP do zero.
<CodeExample title="Inicializar Projeto" language="bash" code={`# Criar diretório do projeto mkdir meu-primeiro-servidor-mcp cd meu-primeiro-servidor-mcp
npm init -y
npm install --save-dev typescript @types/node tsx npm install @modelcontextprotocol/sdk`} />
Crie um arquivo tsconfig.json para configurar o TypeScript para desenvolvimento MCP:
<CodeExample
title="Configuração do TypeScript"
language="json"
fileName="tsconfig.json"
code={{   "compilerOptions": {     "target": "ES2022",     "module": "Node16",     "moduleResolution": "Node16",     "lib": ["ES2022"],     "outDir": "./dist",     "rootDir": "./src",     "strict": true,     "esModuleInterop": true,     "skipLibCheck": true,     "forceConsistentCasingInFileNames": true,     "resolveJsonModule": true,     "declaration": true,     "declarationMap": true,     "sourceMap": true   },   "include": ["src/**/*"],   "exclude": ["node_modules", "dist"] }}
highlightLines={[3, 4, 5, 9]}
/>
Importante: As configurações module e moduleResolution devem ser "Node16" para funcionar corretamente com os módulos ES do SDK MCP.
Adicione configurações importantes ao seu package.json:
<CodeExample
title="Configuração do Package"
language="json"
fileName="package.json"
code={{   "name": "meu-primeiro-servidor-mcp",   "version": "1.0.0",   "type": "module",   "main": "dist/index.js",   "scripts": {     "dev": "tsx watch src/index.ts",     "build": "tsc",     "start": "node dist/index.js"   },   // ... dependências }}
highlightLines={[4, 6, 7, 8, 9]}
/>
Pontos Principais:
"type": "module" habilita módulos EStsx watch fornece recarga automática durante o desenvolvimentonpm run dev para desenvolvimento, npm run build para produçãoConfigure uma estrutura de projeto limpa:
Seu projeto agora deve parecer com isto:
meu-primeiro-servidor-mcp/
├── node_modules/
├── src/
│   └── index.ts
├── package.json
├── package-lock.json
└── tsconfig.json
Criar e configurar um novo projeto de servidor MCP
Configurar TypeScript para desenvolvimento MCP
Module content not available.
Depois de construir seu servidor, vamos testá-lo!
Adicione estes scripts úteis ao seu package.json:
<CodeExample
title="Scripts do Package.json"
language="json"
fileName="package.json"
code={{   "name": "meu-primeiro-servidor-mcp",   "version": "1.0.0",   "type": "module",   "scripts": {     "dev": "tsx watch src/index.ts",     "build": "tsc",     "start": "node dist/index.js",     "test": "npx @modelcontextprotocol/inspector"   },   // ... outros campos }}
highlightLines={[5, 6, 7, 8, 9]}
/>
O MCP Inspector é uma ferramenta poderosa para testar seu servidor:
Inicie seu servidor em um terminal:
Execute o inspector em outro terminal:
Conecte-se ao seu servidor no inspector:
npm run devSucesso! Se tudo estiver configurado corretamente, você deve ver os recursos do seu servidor no inspector.
Problema: Erros "Cannot find module"
Solução: Certifique-se de que todas as importações terminam com extensão .js (mesmo para arquivos TypeScript)
Problema: "Module not found" para SDK MCP
Solução: Verifique se você está usando Node.js 18+ e tem "type": "module" no package.json
Problema: Servidor não responde no inspector Solução: Certifique-se de estar usando transporte stdio e que o servidor está rodando
Adicione scripts convenientes para desenvolvimento
Verifique se você entendeu os conceitos de configuração do MCP
1. Qual versão mínima do Node.js é necessária para o SDK MCP?
2. O transporte stdio é adequado para uso em produção.
True or False question
Correct Answer: A
Falso! O transporte stdio é principalmente para desenvolvimento e testes locais. Para produção, use HTTP ou WebSocket.
3. Qual arquivo de configuração é essencial para projetos TypeScript com MCP?
Conforme seu servidor MCP cresce, uma boa estrutura se torna essencial. Aqui está uma abordagem recomendada:
<CodeExample
title="Estrutura de Projeto Recomendada"
language="text"
code={meu-servidor-mcp/ ├── src/ │   ├── index.ts          # Ponto de entrada principal do servidor │   ├── handlers/         # Manipuladores de requisição │   │   ├── resources.ts  # Manipuladores de recursos │   │   └── tools.ts      # Manipuladores de ferramentas │   ├── providers/        # Lógica de negócios │   │   ├── database.ts   # Conexões de banco de dados │   │   └── files.ts      # Operações do sistema de arquivos │   └── types/            # Definições de tipos TypeScript ├── dist/                 # Saída compilada ├── tests/                # Arquivos de teste ├── .gitignore ├── package.json ├── tsconfig.json └── README.md}
/>
<CodeExample title="Exemplo de Organização de Manipulador" language="typescript" fileName="src/handlers/resources.ts" code={`import { Server } from '@modelcontextprotocol/sdk/server/index.js';
export function registerResourceHandlers(server: Server) { // Registrar todos os manipuladores relacionados a recursos server.setRequestHandler('resources/list', async () => { return { resources: [ ...await fileProvider.listResources(), ...await databaseProvider.listResources() ] }; });
server.setRequestHandler('resources/read', async (request) => { // Delegar ao provedor apropriado baseado no esquema URI const uri = request.params.uri;
if (uri.startsWith('file://')) {
  return fileProvider.readResource(uri);
} else if (uri.startsWith('db://')) {
  return databaseProvider.readResource(uri);
}
throw new Error('Tipo de recurso desconhecido');
}); }`} />
Parabéns! Você conseguiu:
✅ Configurar um ambiente de desenvolvimento TypeScript ✅ Configurar seu projeto para desenvolvimento MCP ✅ Criar seu primeiro servidor MCP ✅ Testá-lo com o MCP Inspector ✅ Aprender melhores práticas de organização de projeto
Seu ambiente de desenvolvimento está pronto! No próximo módulo, você aprenderá a:
A Seguir: Implementando Recursos - Aprenda a expor dados através de recursos MCP!