Skip to main content
Glama

estudIA-MCP

by JpAboytes
README.md9.81 kB
# FiscAI MCP — FiscMCP README profesional (en español) para el proyecto FiscMCP. Este documento explica qué hace el proyecto, cómo instalarlo y ejecutarlo, cómo configurarlo y pasos de desarrollo y despliegue. ## Descripción FiscAI MCP (FiscMCP) es un servidor de herramientas (MCP) orientado a ofrecer asesoría fiscal y financiera para micro y pequeñas empresas en México. Combina: - Un motor de inteligencia artificial (Google Gemini) para generación de lenguaje y embeddings. - Un backend de búsqueda semántica y almacenamiento (Supabase) para RAG (Retrieval-Augmented Generation). - Herramientas para: recomendaciones fiscales, chat asistido, análisis de riesgo, búsqueda de documentos, roadmap de formalización, predicción de crecimiento (modelo ML) y apertura de mapas (deep links). El núcleo está implementado con `fastmcp` (instancia `mcp` en `src/main.py`) y ofrece además un servidor HTTP opcional (`src/http_server.py`) para probar endpoints REST. ## Características principales - Recomendaciones fiscales personalizadas gracias a RAG (embeddings + documentos relevantes). - Chat asistido con detección automática de intención (por ejemplo, abrir mapa para bancos o SAT). - Búsqueda semántica de documentos fiscales en Supabase. - Análisis de riesgo fiscal y generación de roadmap de formalización. - Predicción de crecimiento del negocio con un modelo entrenado (en `src/modelDemo`). - **NUEVO:** Herramientas de embeddings y almacenamiento (`generate_embedding`, `store_document`, `search_similar_documents`) - Ver [NUEVAS_HERRAMIENTAS.md](./NUEVAS_HERRAMIENTAS.md) - **NUEVO:** Análisis inteligente de conversaciones para actualizar contexto de usuario automáticamente (`analyze_and_update_user_context`) - Ver [CONTEXT_UPDATE_TOOL.md](./CONTEXT_UPDATE_TOOL.md) ## Estructura del repositorio (resumen) - `run_server.py` — Entrypoint para ejecutar el servidor MCP (modo FastMCP). - `run_http_server.py` — Script para ejecutar el servidor HTTP (FastAPI + Uvicorn). - `server.py` — Archivo preparado para deployment (exporta `mcp` para detectores automáticos). - `requirements.txt` — Dependencias del proyecto. - `src/` — Código fuente principal: - `main.py` — Registro de herramientas MCP (`@mcp.tool()` y prompts `@mcp.prompt()`). - `http_server.py` — API REST para probar herramientas. - `gemini.py` — Cliente e integración con Google Gemini (LLM & embeddings). - `supabase_client.py` — Cliente para Supabase (búsqueda semántica, historial de chat, etc.). - `places.py` — Integración con Google Places para búsqueda de ubicaciones. - `config.py` — Carga de variables de entorno y validaciones. - `modelDemo/` — Datos y scripts de ejemplo para el modelo ML (entrenamiento y demo). - `test_*.py` — Suites de tests unitarios y de integración (varios archivos `test_*.py`). ## Requisitos - Python 3.10+ (preferible). - Pip. - Acceso a las APIs externas usadas: - Google Gemini (clave `GEMINI_API_KEY`) - Supabase (URL y service role key) - Google Places API (para búsqueda de lugares) Dependencias listadas en `requirements.txt`. Adicionalmente para el servidor HTTP se recomienda instalar `fastapi` y `uvicorn[standard]`. ## Variables de entorno (principales) Configurar en un archivo `.env` en la raíz del proyecto o en el entorno del sistema: - SUPABASE_URL — URL del proyecto Supabase. - SUPABASE_SERVICE_ROLE_KEY — Service role key para Supabase (se usa para RPCs/privilegios). - GEMINI_API_KEY — API key para Google Gemini. - EXPO_PUBLIC_GOOGLE_MAPS_API_KEY o GOOGLE_MAPS_API_KEY — para `places`. - PORT — Puerto para el servidor HTTP (por defecto `8000`). - NODE_ENV — `development` o `production`. - Opcionales: - GEMINI_MODEL — Nombre del modelo Gemini (por defecto `gemini-2.0-flash`). - GEMINI_EMBED_MODEL — Modelo de embeddings (por defecto `gemini-embedding-001`). - EMBED_DIM — Dimensionalidad del embedding (por defecto `768`). - SIMILARITY_THRESHOLD — Umbral de similitud (por defecto `0.6`). - TOPK_DOCUMENTS — Número de documentos a recuperar (por defecto `6`). Importante: No publiques claves secretas en repositorios públicos. Usa secretos en tu plataforma de despliegue. ## Instalación (local) 1. Clona el repositorio y navega a la carpeta: ```powershell cd C:\Users\Owner\Downloads\FiscMCP ``` 2. (Opcional) Crea y activa un entorno virtual: ```powershell python -m venv .venv; .\.venv\Scripts\Activate.ps1 ``` 3. Instala las dependencias: ```powershell pip install -r requirements.txt # Recomendado para la API HTTP (si vas a usarla): pip install fastapi uvicorn[standard] ``` 4. Crea un archivo `.env` siguiendo la sección "Variables de entorno" y añade las claves necesarias. ## Ejecución Hay dos modos principales para ejecutar el proyecto: 1) Servidor MCP (modo FastMCP) - Uso (desde la raíz del repo): ```powershell python run_server.py ``` Este script añade `src` al `PYTHONPATH` y ejecuta `main()` en `src/main.py`, que registra las herramientas y ejecuta `mcp.run()`. 2) Servidor HTTP (FastAPI) — para probar endpoints REST - Uso (desde la raíz del repo): ```powershell python run_http_server.py ``` - El script usa `uvicorn` internamente y expondrá: - Health: http://localhost:8000/health - Documentación interactiva (Swagger/OpenAPI): http://localhost:8000/docs - Endpoints principales: `/api/fiscal-advice`, `/api/chat`, `/api/risk-analysis`, `/api/search`, `/api/user-context`. Si cambias el puerto, define `PORT` en `.env`. ## Endpoints (ejemplos) 1) Health check ```powershell # Obtener estado Invoke-RestMethod -Method Get -Uri http://localhost:8000/health ``` 2) Solicitar recomendación fiscal (ejemplo) ```powershell $body = @{ actividad = 'Ventas en línea'; ingresos_anuales = 300000; estado = 'CDMX' } | ConvertTo-Json Invoke-RestMethod -Method Post -Uri http://localhost:8000/api/fiscal-advice -Body $body -ContentType 'application/json' ``` 3) Chat con el asistente ```powershell $body = @{ message = '¿Dónde está un Banorte cerca de Reforma?'; user_id = 'guest' } | ConvertTo-Json Invoke-RestMethod -Method Post -Uri http://localhost:8000/api/chat -Body $body -ContentType 'application/json' ``` 4) Búsqueda semántica de documentos ```powershell $body = @{ query = 'beneficios régimen RESICO'; limit = 5 } | ConvertTo-Json Invoke-RestMethod -Method Post -Uri http://localhost:8000/api/search -Body $body -ContentType 'application/json' ``` ## Cómo funciona (alto nivel) - `src/main.py` registra múltiples herramientas como `@mcp.tool()` y prompts con `@mcp.prompt()` que implementan la lógica de negocio (RAG, chat, análisis de riesgo, roadmap, etc.). - `src/gemini.py` encapsula la integración con Google Gemini: generación de embeddings, prompts, y lógica para el chat y RAG. - `src/supabase_client.py` encapsula acceso a Supabase — incluye RPCs para búsqueda semántica (`match_fiscai_documents`) y tablas para historial de chat y usuarios. - `src/places.py` usa Google Places APIs para búsquedas de establecimientos y genera `deepLink` para la app móvil (fiscai://...). - `src/config.py` centraliza la configuración y valida variables de entorno críticas. ## Desarrollo y pruebas - El repo contiene tests `test_*.py` para pruebas unitarias básicas. Puedes ejecutar los tests con `pytest`. ```powershell pip install pytest pytest -q ``` - Para desarrollo iterativo recomendamos usar un entorno virtual y reiniciar el servidor cuando cambies código. ## Depuración y problemas comunes - Error: "Faltan variables de entorno..." — Asegúrate de crear `.env` con `SUPABASE_URL`, `SUPABASE_SERVICE_ROLE_KEY`, `GEMINI_API_KEY` y `EXPO_PUBLIC_GOOGLE_MAPS_API_KEY` si usas `places`. - Error de Gemini: Verifica que `GEMINI_API_KEY` sea válida y que el modelo configurado exista en tu cuenta. - Supabase: Si las funciones RPC fallan, verifica que los nombres (`match_fiscai_documents`, `match_documents`) existan en tu proyecto Supabase. ## Seguridad - Nunca subas `SUPABASE_SERVICE_ROLE_KEY` ni `GEMINI_API_KEY` a repositorios públicos. - Para producción, utiliza secretos gestionados por la plataforma de hosting (Vercel, Railway, Fly, AWS, etc.) en lugar de `.env` en disco. ## Despliegue (sugerencias rápidas) - Plataformas recomendadas: Railway, Fly.io, Azure App Service, DigitalOcean App Platform. - Recomendación: desplegar el servidor HTTP (`run_http_server.py`) detrás de un proxy y gestionar secretos con el proveedor. - Considerar usar contenedor Docker para portabilidad (Dockerfile no incluido — puede añadirse fácilmente). ## Contribuir - Abre issues para sugerencias o bugs. - Fork + PR: agrega tests para cambios funcionales. - Sigue el estilo de codificación existente y documenta cambios en `README.md` cuando alteres el comportamiento público. ## Siguientes pasos recomendados - Añadir un `Dockerfile` y `docker-compose` para facilitar despliegue local. - Añadir CI (GitHub Actions) que valide linting y tests. - Añadir un ejemplo de `.env.example` con variables no sensibles (nombres de variables y descripciones). - Mejorar la cobertura de tests para `src/gemini.py` (simular responses) y `src/supabase_client.py` (mock de RPCs). --- Resumen: he analizado la estructura y el código principal del proyecto (`src/main.py`, `src/http_server.py`, `src/gemini.py`, `src/supabase_client.py`, `src/places.py`, `src/config.py`) y he preparado este README en español con guías de instalación, configuración y uso. Si quieres, puedo: - Añadir un archivo `.env.example` al repo con las variables de entorno listadas. - Crear un `Dockerfile` y `docker-compose.yml` de ejemplo. - Añadir un script de comprobación (makefile / ps1) para desarrollo local. Dime qué prefieres y lo implemento a continuación.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JpAboytes/estudIA-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server