Setup del Entorno
Guía completa para preparar tu entorno de desarrollo para construir agentes de IA y MCP Servers con TypeScript. Esta configuración te permitirá trabajar con Claude, DeepSeek y herramientas modernas de desarrollo.
Flujo de Setup (5 minutos)
1. Instalar dependencias del sistema (Node.js, pnpm)
↓
2. Crear estructura de proyecto
↓
3. Configurar TypeScript
↓
4. Instalar librerías
↓
5. Configurar variables de entorno
↓
6. Verificar que todo funciona ✓
Total estimado: 5-10 minutos (dependiendo de tu conexión)
Requisitos del Sistema
Antes de comenzar, asegúrate de tener instalado:
Node.js 20+
# Verificar versión instalada
node --version # Debe ser 20.x o superior
# Si no lo tienes, instala con nvm (recomendado)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20
nvm alias default 20
Package Manager
Usaremos pnpm por su velocidad y eficiencia:
# Instalar pnpm
npm install -g pnpm
# Verificar instalación
pnpm --version # Debe ser 8.x o superior
Git
# Verificar instalación
git --version # Debe ser 2.30+ recomendado
# Si no está instalado (macOS con Homebrew)
brew install git
Estructura del Proyecto
Crea la estructura base para tus experimentos con agentes:
# Crear directorio del proyecto
mkdir taller-ia-agentes
cd taller-ia-agentes
# Inicializar proyecto
pnpm init
# Crear estructura de directorios
mkdir -p src/{agents,mcp-servers,tools,types}
mkdir -p tests
mkdir -p examples
Tu estructura final debería verse así:
taller-ia-agentes/
├── src/
│ ├── agents/ # Lógica de agentes
│ ├── mcp-servers/ # Implementaciones MCP
│ ├── tools/ # Herramientas personalizadas
│ └── types/ # Definiciones TypeScript
├── tests/ # Tests unitarios e integración
├── examples/ # Ejemplos ejecutables
├── package.json
└── tsconfig.json
Configuración de TypeScript
TypeScript con configuración estricta para calidad de código:
{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "node",
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedIndexedAccess": true,
"exactOptionalPropertyTypes": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist",
"rootDir": "./src",
"declaration": true,
"declarationMap": true,
"sourceMap": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist", "tests"]
}
Dependencias Principales
Instala las librerías necesarias:
# Dependencias principales
pnpm add @anthropic-ai/sdk @ai-sdk/deepseek zod dotenv
# Dependencias de desarrollo
pnpm add -D typescript @types/node tsx vitest @vitest/ui
# Para MCP Servers
pnpm add @modelcontextprotocol/sdk fast-mcp
# Utilidades adicionales
pnpm add winston chalk ora
Explicación de dependencias:
- @anthropic-ai/sdk: Cliente oficial para Claude API
- @ai-sdk/deepseek: SDK para DeepSeek (alternativa económica)
- zod: Validación de esquemas TypeScript-first
- dotenv: Manejo seguro de variables de entorno
- fast-mcp: Framework rápido para MCP Servers
- @modelcontextprotocol/sdk: SDK oficial de Anthropic para MCP
Variables de Entorno (.env)
Crea un archivo .env en la raíz del proyecto:
# API Keys - NUNCA commits estos valores
ANTHROPIC_API_KEY=sk-ant-api03-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# Configuración de modelos
ANTHROPIC_MODEL=claude-3-5-sonnet-20241022
DEEPSEEK_MODEL=deepseek-chat
# Configuración de logging
LOG_LEVEL=info
LOG_FILE=logs/agent.log
# Configuración de MCP (opcional)
MCP_SERVER_PORT=3001
MCP_TRANSPORT=stdio
ADVERTENCIA: Nunca commits el archivo
.env. Añádelo a.gitignore:echo ".env" >> .gitignore
API Keys
Anthropic Claude
- Ve a Anthropic Console
- Crea una cuenta y genera una API key
- Copia la key al
.envcomoANTHROPIC_API_KEY
DeepSeek
- Ve a DeepSeek Platform
- Regístrate y obtén tu API key
- Copia la key al
.envcomoDEEPSEEK_API_KEY
NOTA: DeepSeek es más económico que Claude para desarrollo, pero Claude tiene mejor rendimiento para agentes complejos.
Scripts en package.json
Añade estos scripts para facilitar el desarrollo:
{
"scripts": {
"build": "tsc",
"dev": "tsx watch src/index.ts",
"test": "vitest",
"test:ui": "vitest --ui",
"test:run": "vitest run",
"clean": "rm -rf dist logs",
"lint": "tsc --noEmit",
"mcp:start": "tsx src/mcp-servers/index.ts"
}
}
Verificación del Setup
Checklist de Verificación
Ejecuta cada paso y marca como completado:
- Node.js 20+ instalado:
node --version - pnpm instalado:
pnpm --version - Directorio del proyecto creado
- package.json inicializado
- tsconfig.json configurado
- Dependencias instaladas:
pnpm install - Variables de entorno en
.env - TypeScript compila:
pnpm run build - Tests corren:
pnpm run test:run - API keys funcionan: Script test-setup.ts
Comandos de Verificación
Ejecuta estos en orden:
# 1. Verificar instalación de dependencias
pnpm install
# 2. Verificar compilación TypeScript
pnpm run build
# 3. Verificar versiones
node --version # Debe ser v20.x.x
pnpm --version # Debe ser 8.x.x
Salida esperada:
v20.11.0 (o superior)
8.15.0 (o superior)
# 4. Verificar variables de entorno
cat .env | grep API_KEY
Salida esperada:
ANTHROPIC_API_KEY=sk-ant-...
DEEPSEEK_API_KEY=sk-...
# 5. Ejecutar tests básicos
pnpm run test:run
Salida esperada:
✓ src/__tests__/... (n tests)
Test básico de conectividad
Crea un archivo src/test-setup.ts:
import { config } from 'dotenv';
import { Anthropic } from '@anthropic-ai/sdk';
// Cargar variables de entorno
config();
async function testSetup() {
console.log('🧪 Verificando setup...\n');
// Verificar API keys
const hasClaude = !!process.env.ANTHROPIC_API_KEY;
const hasDeepSeek = !!process.env.DEEPSEEK_API_KEY;
console.log(`Claude API Key: ${hasClaude ? '✅' : '❌'}`);
console.log(`DeepSeek API Key: ${hasDeepSeek ? '✅' : '❌'}\n`);
// Test básico con Claude
if (hasClaude) {
try {
const client = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY
});
const response = await client.messages.create({
model: 'claude-3-5-haiku-20241022',
max_tokens: 100,
messages: [{ role: 'user', content: 'Say "Hello World" and nothing else.' }]
});
console.log('Claude test: ✅');
console.log('Response:', response.content[0].type === 'text' ? response.content[0].text : 'N/A');
} catch (error) {
console.log('Claude test: ❌');
console.error('Error:', error.message);
}
}
console.log('\n🎉 Setup verification complete!');
}
// Ejecutar test
testSetup().catch(console.error);
Ejecuta el test:
tsx src/test-setup.ts
Troubleshooting Común
❌ Error: "Cannot find module '@anthropic-ai/sdk'"
Causa: Dependencias no instaladas o versión incorrecta
# Solución 1: Reinstalar todo (nuclear)
rm -rf node_modules pnpm-lock.yaml
pnpm install
# Solución 2: Actualizar solo la dependencia
pnpm add @anthropic-ai/sdk@latest
# Solución 3: Verificar que el módulo existe
ls node_modules/@anthropic-ai/sdk/package.json
❌ Error: "API key not found" o "401 Unauthorized"
Causa: Variables de entorno no cargadas o key inválida
# Verificación 1: .env existe
ls -la .env
# Verificación 2: .env tiene contenido válido
cat .env | grep API_KEY
# Debe mostrar: ANTHROPIC_API_KEY=sk-ant-...
# Verificación 3: .env está en .gitignore
cat .gitignore | grep "^\.env$"
# Verificación 4: Tu API key es válida
# Accede a https://console.anthropic.com/account/keys
# Verifica que la key no está revocada
⚠️ Nota: Si copias el .env desde otro proyecto, asegúrate de que las keys están vigentes.
❌ Error: "TypeScript compilation failed"
Causa: Errores de tipo en tu código o configuración tsconfig.json
# Ver errores detallados
pnpm run lint
# Forzar recompilación limpia
rm -rf dist
pnpm run build
# Si aún falla, verificar tsconfig.json
cat tsconfig.json | grep -A 5 "strict"
Errores comunes:
Type 'X' is not assignable to type 'Y'→ Falta casting o tipo incorrectoCannot find name 'process'→ Falta@types/nodeModule not found→ Archivo no existe o path incorrecto
❌ Error: "Node.js version too old"
Causa: Tienes Node.js < 20
# Verificar tu versión actual
node --version
# Si es menor a v20, actualizar
nvm install 20
nvm use 20
nvm alias default 20
# Verificar que cambió
node --version # Debe ser v20.x.x
❌ Error: "pnpm: command not found"
Causa: pnpm no instalado o no en PATH
# Instalar globalmente
npm install -g pnpm
# Si aún no funciona, verificar PATH
which pnpm
# Si no aparece, reiniciar terminal
# Si sigue sin funcionar, usar npm en lugar de pnpm
npm install # En lugar de pnpm install
❌ Error: ".env not found" en test-setup.ts
Causa: El script no encuentra el archivo .env
# Verificación 1: Estás en la carpeta correcta
pwd # Debe terminar en /taller-ia-agentes
# Verificación 2: .env existe en la raíz
ls -la .env
# Verificación 3: Ejecutar desde la carpeta correcta
cd /ruta/a/taller-ia-agentes
tsx src/test-setup.ts
Siguientes Pasos
Una vez completado el setup:
- Lee la guía del Agente de Tareas para crear tu primer agente
- Revisa el Agente Investigador para patrones avanzados
- Configura tu IDE con extensiones de TypeScript y ESLint
¿Todo listo? ¡Vamos a construir agentes! 🤖