Skip to main content
Glama
mishrole

fetch-weather

by mishrole
README.md
# Primer Servidor MCP

Este es un servidor MCP simple construido con TypeScript y el [SDK de Model Context Protocol (MCP)](https://github.com/modelcontextprotocol).

MCP (Model Context Protocol) es un protocolo que permite a los modelos de lenguaje interactuar con herramientas externas y servicios web para ampliar sus capacidades, facilitando su integración con APIs, bases de datos y otras herramientas para brindarles contexto y acceso en tiempo real a determinados recursos.

Este ejemplo proporciona datos de pronóstico del tiempo para una ciudad determinada utilizando la API de Open-Meteo.

## Pre-requisitos

> Este proyecto sólo ha sido probado en Windows 11.

Asegúrate de tener instaladas las siguientes herramientas:

- [Node.js (v18.18.0 o superior)](https://nodejs.org/en/download)
- [Pnpm (v9.11.0 o superior)](https://pnpm.io/installation)
- [Claude Desktop](https://claude.ai/download)
- [Visual Studio Code](https://code.visualstudio.com/download)
- [Git](https://git-scm.com/downloads)

## Instalación

1. Clona el repositorio.

```bash
git clone https://github.com/mishrole/first-mcp-server.git
```

2. Ve al directorio del proyecto.

```bash
cd first-mcp-server
```

3. Instala las dependencias.

```bash
pnpm install
```

> A medida que avances, recuerda modificar las rutas de los archivos según tu sistema operativo y estructura de carpetas.

## Problemas comunes

1. **PUERTO DEL INSPECTOR O PROXY MCP EN USO**
   Si ves un error indicando que un puerto MCP ya está en uso, puedes detener los procesos que están usando los puertos del Proxy y del Inspector MCP o cambiar los puertos en la configuración del Inspector MCP.
2. **EL INSPECTOR MCP NO SE ABRE**
   Si el Inspector MCP no se abre automáticamente, puedes abrir manualmente tu navegador web y navegar a `http://localhost:6274` (o el puerto que hayas configurado) para acceder a la interfaz del Inspector MCP.
3. **LA HERRAMIENTA NO APARECE EN CLAUDE DESKTOP**
   Asegúrate de que la configuración en `claude_desktop_config.json` sea correcta y que hayas reiniciado Claude Desktop después de hacer cambios en la configuración.

Si el problema no se encuentra listado, considera consultar la [documentación oficial de MCP para Visual Studio Code](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) o abrir un issue en el repositorio de GitHub, a veces dos cabezas piensan mejor que una. 😸

## Cómo usar la herramienta fetch-weather en Claude Desktop

1. Abre Claude Desktop y ve a la configuración (Settings).

![Captura de Claude Desktop](./assets/Claude-Desktop-Settings.png)

2. Ve a la sección "Developer" y haz click en "Edit Configuration".

![Captura de Claude Desktop](./assets/Claude-Desktop-Settings-Developer.png)

1. Añade la configuración de la herramienta MCP a tu archivo `claude_desktop_config.json`. Asegúrate de modificar la ruta de `main.ts` en los argumentos y añadir la ruta correcta de acuerdo a tu sistema.

> Una copia del archivo `claude_desktop_config.json` se encuentra en la raíz de este repositorio para referencia.

```json
{
  "mcpServers": {
    "fetch-weather": {
      "command": "npx",
      "args": ["-y", "tsx", "C:\\Users\\YOUR_USER\\first-mcp-server\\main.ts"]
    }
  }
}
```

4. Reinicia Claude Desktop para que los cambios surtan efecto. Esto es esencial para que Claude Desktop reconozca la nueva configuración del servidor MCP, ya que no detecta automáticamente los cambios en el archivo de configuración. Para reiniciar, asegúrate de cerrar completamente el proceso de Claude Desktop y luego vuelve a abrir la aplicación.

![Captura de Claude Desktop](./assets/Claude-Desktop-Exit.png)

5. Abre una nueva conversación en Claude Desktop y asegúrate de que la herramienta "fetch-weather" esté disponible para su uso.

![Captura de Claude Desktop](./assets/Claude-Desktop-Chat-Tool.png)

6. Ahora puedes usar la herramienta "fetch-weather" en tus conversaciones con Claude.

![Captura de Claude Desktop](./assets/Claude-Desktop-Chat-Result.png)

## Cómo usar la herramienta fetch-weather en Visual Studio Code

1. Asegúrate de tener activadas las opciones de Agente y Discovery habilitadas.

![Captura de Visual Studio Code](./assets/VSCode-Settings-Agent-Enabled.png)

![Captura de Visual Studio Code](./assets/VSCode-Settings-Discovery-Enabled.png)

2. Abre el chat y cambia el modo a "Agent".

![Captura de Visual Studio Code](./assets/VSCode-Chat-Agent-Mode.png)

3. Selecciona "Configure Tools" y verifica que la herramienta "fetch-weather" de Claude y/o la herramienta "fetch-weather-vscode" esté disponible para su uso.

La configuración de la herramienta "fetch-weather-vscode" se encuentra en el archivo `.vscode/mcp.json` en la raíz del proyecto.

> Asegúrate de modificar la ruta de `main.ts` en los argumentos y añadir la ruta correcta de acuerdo a tu sistema.

```json
{
  "servers": {
    "fetch-weather-vscode": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "tsx", "C:\\Users\\YOUR_USER\\first-mcp-server\\main.ts"]
    }
  },
  "inputs": []
}
```

> La herramienta "fetch-weather-vscode" sólo está disponible para este Workspace. Nos servirá en caso el Discovery no encuentre la versión configurada en el archivo de Claude. También es posible configurarlo de manera global para usarlo en otros proyectos. Para más información, consulta la [documentación oficial de MCP para Visual Studio Code](https://code.visualstudio.com/docs/copilot/customization/mcp-servers).

![Captura de Visual Studio Code](./assets/VSCode-Chat-Fetch-Weather-MCP.png)

4. Ahora puedes usar la herramienta "fetch-weather" en tus conversaciones desde el Chat de Visual Studio Code. Por ejemplo puedes preguntar: `¿Cuál es el tiempo en Lima?`

![Captura de Visual Studio Code](./assets/VSCode-Chat-Use-Tool.png)

5. Después de correr la herramienta, verás los datos del pronóstico del tiempo en el chat.

![Captura de Visual Studio Code](./assets/VSCode-Chat-Tool-Result.png)

## Cómo usar MCP Inspector para validar respuestas del servidor MCP

1. Ejecuta el Inspector MCP.

```bash
pnpm start
```

2. El Inspector MCP se abrirá en tu navegador web predeterminado. Puedes interactuar con el servidor a través de la interfaz del Inspector MCP.

3. Ve al Inspector MCP en tu navegador web y haz clic en el botón "Connect".

![Captura del Inspector MCP](./assets/MCP-Inspector-Browser.png)

4. Selecciona el botón "List Tools" para ver las herramientas disponibles.

![Captura del Inspector MCP](./assets/MCP-Inspector-ListTools.png)

5. Selecciona la herramienta "fetch-weather".

![Captura del Inspector MCP](./assets/MCP-Inspector-ListTools-FetchWeather.png)

6. Ingresa el nombre de la ciudad para la cual quieres obtener el pronóstico del tiempo.

![Captura del Inspector MCP](./assets/MCP-Inspector-ListTools-FetchWeather-Input.png)

7. Haz clic en el botón "Run Tool". Los datos del pronóstico del tiempo se mostrarán en el Inspector MCP.

![Captura del Inspector MCP](./assets/MCP-Inspector-ListTools-FetchWeather-Output.png)

## Pruebas

Este proyecto utiliza Vitest para las pruebas. Para ejecutar los tests, usa el siguiente comando:

```bash
pnpm test
```