Skip to main content
Glama
Xhendor

JSONPlaceholder MCP Server

by Xhendor
README.md
# Servidor MCP JSONPlaceholder

Un servidor Model Context Protocol (MCP) que expone funciones para consultar la API de JSONPlaceholder (https://jsonplaceholder.typicode.com).

## 🚀 Características

- **Consulta de Posts**: Obtener todos los posts, filtrar por usuario o obtener un post específico
- **Gestión de Usuarios**: Listar todos los usuarios o obtener información de un usuario específico  
- **Comentarios**: Obtener comentarios de posts específicos o todos los comentarios
- **Creación de Posts**: Crear nuevos posts (simulado)
- **API Asíncrona**: Manejo eficiente de requests HTTP con httpx
- **Manejo de Errores**: Gestión robusta de errores HTTP y excepciones

## 📦 Instalación

1. **Instalar dependencias**:
   ```bash
   pip install -r requirements.txt
   ```

## 🔧 Configuración para Claude Desktop

Para conectar este servidor MCP con Claude Desktop:

1. **Localizar el archivo de configuración de Claude Desktop**:
   - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
   - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`

2. **Añadir la configuración del servidor**:
   ```json
   {
     "mcpServers": {
       "jsonplaceholder": {
         "command": "python",
         "args": ["c:\\Users\\Dell3\\IdeaProjects\\MyFirstMCP\\server.py"],
         "env": {}
       }
     }
   }
   ```

   ⚠️ **Importante**: Ajusta la ruta en `args` según tu ubicación del proyecto.

3. **Reiniciar Claude Desktop** para que cargue la nueva configuración.

## 🎮 Uso

### Iniciar el Servidor

```bash
# Opción 1: Script automático
start_server.bat

# Opción 2: Manual
python server.py
```

### Probar el Cliente

```bash
python client_test.py
```

## 🛠️ Funciones Disponibles

### 1. `get_posts`
Obtiene posts de JSONPlaceholder.

**Parámetros**:
- `user_id` (opcional): ID del usuario para filtrar posts
- `post_id` (opcional): ID específico del post a obtener

**Ejemplos**:
```python
# Obtener todos los posts
await mcp.call_tool("get_posts", {})

# Obtener posts del usuario 1
await mcp.call_tool("get_posts", {"user_id": 1})

# Obtener post específico
await mcp.call_tool("get_posts", {"post_id": 5})
```

### 2. `get_users`
Obtiene usuarios de JSONPlaceholder.

**Parámetros**:
- `user_id` (opcional): ID específico del usuario a obtener

**Ejemplos**:
```python
# Obtener todos los usuarios
await mcp.call_tool("get_users", {})

# Obtener usuario específico
await mcp.call_tool("get_users", {"user_id": 3})
```

### 3. `get_comments`
Obtiene comentarios de JSONPlaceholder.

**Parámetros**:
- `post_id` (opcional): ID del post para obtener sus comentarios

**Ejemplos**:
```python
# Obtener todos los comentarios
await mcp.call_tool("get_comments", {})

# Obtener comentarios de un post específico
await mcp.call_tool("get_comments", {"post_id": 1})
```

### 4. `create_post`
Crea un nuevo post (simulado).

**Parámetros** (obligatorios):
- `title`: Título del post
- `body`: Contenido del post  
- `user_id`: ID del usuario que crea el post

**Ejemplo**:
```python
await mcp.call_tool("create_post", {
    "title": "Mi Nuevo Post",
    "body": "Contenido del post...",
    "user_id": 1
})
```

## 🧪 Usando con Claude

Una vez configurado, puedes usar las funciones directamente en Claude:

```
"Obtén todos los posts del usuario 1"
"Muéstrame los comentarios del post 5" 
"Crea un nuevo post con título 'Hola Mundo' y contenido 'Este es mi primer post'"
"¿Cuántos usuarios hay registrados?"
```

## 📁 Estructura del Proyecto

```
MyFirstMCP/
├── server.py                  # Servidor MCP principal
├── client_test.py            # Cliente de prueba
├── requirements.txt          # Dependencias Python
├── claude_desktop_config.json # Configuración para Claude Desktop
├── install.bat              # Script de instalación
├── start_server.bat         # Script para iniciar servidor
├── test_client.bat          # Script para probar cliente
└── README.md               # Esta documentación
```

## 🐛 Resolución de Problemas

### Error: "Módulo mcp no encontrado"
```bash
pip install mcp
```

### Error: "No se puede conectar al servidor"
1. Verifica que Python esté en el PATH
2. Confirma que la ruta en `claude_desktop_config.json` sea correcta
3. Reinicia Claude Desktop después de cambiar la configuración

### Error de permisos en Windows
Ejecuta el terminal como administrador o ajusta la ruta del proyecto.

## 🔗 Enlaces Útiles

- [JSONPlaceholder API](https://jsonplaceholder.typicode.com)
- [Model Context Protocol](https://github.com/modelcontextprotocol)
- [Claude Desktop](https://claude.ai/desktop)

## 📝 Licencia

Este proyecto es de código abierto.