Content
# MCP Demo Server
Este es un servidor de demostración que implementa el Model Context Protocol (MCP) para .NET. El servidor proporciona herramientas para gestionar un menú semanal de comidas y otras funcionalidades de ejemplo.
## Características
- Gestión de platos de comida por día de la semana
- Cálculo automático de días del mes para planificación semanal
- Integración con Claude Desktop
- API REST para gestión de datos
## Requisitos Previos
- .NET 8.0 SDK o superior
- Visual Studio 2022 o VS Code
- SQL Server (para la base de datos)
## Instalación
1. Clona el repositorio:
```bash
git clone [URL del repositorio]
cd dotnet-mcp
```
2. Restaura las dependencias:
```bash
dotnet restore
```
3. Configura la base de datos:
- Asegúrate de tener SQL Server instalado y corriendo
- Actualiza la cadena de conexión en `appsettings.json`
4. Ejecuta las migraciones de la base de datos:
```bash
dotnet ef database update
```
## Uso
1. Inicia el servidor:
```bash
dotnet run --project McpDemoServer
```
2. El servidor estará disponible en `http://localhost:5000` (o el puerto configurado)
## Integración con Claude Desktop
1. Abre Claude Desktop
2. Ve a la configuración de herramientas
3. Agrega una nueva herramienta con la siguiente configuración:
- Nombre: MCP Demo Server
- URL: http://localhost:5000
- Descripción: Servidor de demostración MCP para gestión de menú semanal
## Ejemplos de Uso
### Guardar un plato para un día específico
```csharp
// El sistema calculará automáticamente el día correcto del mes
await SaveFoodToDatabaseCurrentMonth("Pollo a la Brasa", "lunes");
```
### Obtener un saludo personalizado
```csharp
string saludo = GetSalutation("Usuario");
```
## Estructura del Proyecto
- `McpDemoServer/`: Contiene el servidor principal
- `McpDemoServer/Models/`: Modelos de datos
- `McpDemoServer/Services/`: Servicios de negocio
- `McpDemoServer/Controllers/`: Controladores de la API
## Contribución
1. Fork el repositorio
2. Crea una rama para tu feature (`git checkout -b feature/AmazingFeature`)
3. Commit tus cambios (`git commit -m 'Add some AmazingFeature'`)
4. Push a la rama (`git push origin feature/AmazingFeature`)
5. Abre un Pull Request
## Licencia
Este proyecto está bajo la Licencia MIT - ver el archivo [LICENSE](LICENSE) para más detalles.
## Funcionalidad de Guardado de Platos
### SaveFoodToDatabaseCurrentMonth
Esta funcionalidad permite guardar platos para cocinar en días específicos de la semana. Los platos se almacenan tanto en una base de datos local como en una hoja de Google Sheets para un seguimiento más completo.
#### Características:
- Guarda platos con su día de la semana correspondiente
- Almacena la información en una base de datos SQL Server local
- Sincroniza los datos con Google Sheets para acceso remoto
- Mantiene un registro histórico de los platos guardados
#### Requisitos Previos:
1. **Base de Datos SQL Server**:
- SQL Server instalado y en ejecución
- Base de datos `FoodDB` creada
- Tabla `Foods` con la estructura adecuada
- Usuario con permisos de lectura/escritura
2. **Credenciales de Google Sheets**:
- Cuenta de Google Cloud Platform
- Proyecto creado en Google Cloud Console
- API de Google Sheets habilitada
- Archivo de credenciales JSON
#### Configuración de Google Sheets:
1. **Crear un Proyecto en Google Cloud Console**:
- Ve a [Google Cloud Console](https://console.cloud.google.com/)
- Crea un nuevo proyecto o selecciona uno existente
- Anota el ID del proyecto
2. **Habilitar la API de Google Sheets**:
- En el menú lateral, ve a "APIs y servicios" > "Biblioteca"
- Busca "Google Sheets API"
- Haz clic en "Habilitar"
3. **Crear Credenciales**:
- En el menú lateral, ve a "APIs y servicios" > "Credenciales"
- Haz clic en "Crear credenciales" > "Cuenta de servicio"
- Completa los detalles de la cuenta de servicio
- Asigna el rol "Editor" para permitir la escritura en hojas
4. **Generar y Descargar el Archivo JSON**:
- En la lista de cuentas de servicio, haz clic en la que creaste
- Ve a la pestaña "Claves"
- Haz clic en "Agregar clave" > "Crear nueva clave"
- Selecciona "JSON" como formato
- Haz clic en "Crear"
- El archivo se descargará automáticamente
5. **Configurar el Archivo de Credenciales**:
- Renombra el archivo descargado a `credentials.json`
- Colócalo en la raíz del proyecto (al mismo nivel que la carpeta McpDemoServer)
- Asegúrate de que el archivo tenga permisos de lectura
6. **Compartir la Hoja de Cálculo**:
- Crea una nueva hoja de cálculo en Google Sheets
- Compártela con la dirección de correo de la cuenta de servicio (aparece en el archivo JSON)
- Dale permisos de edición a la cuenta de servicio
#### Estructura de la Hoja de Cálculo:
La hoja debe tener una pestaña llamada "Comidas" con las siguientes columnas:
- Fecha
- Plato
- Día
- Mes
#### Uso:
```csharp
// Ejemplo de uso
await SaveFoodToDatabaseCurrentMonth("Pollo a la Brasa", "martes");
```
#### Notas Importantes:
- El archivo de credenciales debe mantenerse seguro y no debe compartirse
- La hoja de cálculo debe tener la estructura correcta antes de usar la funcionalidad
- Se recomienda hacer una copia de seguridad regular de la base de datos local
- Los errores de conexión se registran en el archivo de log
## Seguridad y Credenciales
### Manejo de Credenciales de Google Sheets
Por razones de seguridad, el archivo `credentials.json` no está incluido en el repositorio. Para usar la funcionalidad de Google Sheets:
1. Sigue las instrucciones en la sección "Configuración de Google Sheets" para obtener tus propias credenciales
2. Renombra el archivo de credenciales descargado a `credentials.json`
3. Colócalo en la raíz del proyecto (al mismo nivel que la carpeta McpDemoServer)
4. **IMPORTANTE**: Nunca subas el archivo `credentials.json` al repositorio
### Archivo de Ejemplo
Se incluye un archivo `credentials.json.example` como plantilla. Este archivo muestra la estructura esperada pero no contiene credenciales reales
### .gitignore
El archivo `.gitignore` está configurado para excluir:
- `credentials.json`: Para evitar que las credenciales se suban al repositorio
- Otros archivos sensibles y temporales
Connection Info
You Might Also Like
everything-claude-code
Complete Claude Code configuration collection - agents, skills, hooks,...
markitdown
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
firecrawl
Firecrawl MCP Server enables web scraping, crawling, and content extraction.
servers
Model Context Protocol Servers
servers
Model Context Protocol Servers
Time
A Model Context Protocol server for time and timezone conversions.