MCP_INIT_MS_SegurosBolivar

MCP_INIT_MS_SegurosBolivar

Automates the initialization of Java 21/Spring Boot microservices with Docker Compose, generating complete project archetypes for Seguros Bolivar.

Category
访问服务器

README

MCP_INIT_MS_SegurosBolivar

MCP Server para la inicializacion automatizada de microservicios en Seguros Bolivar. Genera arquetipos completos de proyectos Java 21 / Spring Boot 4.x / Gradle listos para desarrollo local con Docker Compose (LocalStack, Mock OAuth, Datadog Agent).


Requisitos

  • Docker Desktop instalado y corriendo (unico requisito de software)
  • Kiro IDE (o cualquier cliente MCP compatible con transport stdio)

No se necesita Python, Java, ni ningun runtime instalado en la maquina. Todo corre dentro del contenedor Docker.


Instalacion y Configuracion

Opcion A: Usar imagen pre-built (recomendado)

No necesitas clonar nada. Solo configura el MCP en Kiro:

Crear (o editar) el archivo .kiro/settings/mcp.json (en tu workspace o en ~/.kiro/settings/mcp.json):

{
  "mcpServers": {
    "MCP_INIT_MS_SegurosBolivar": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", ".:/workspace",
        "ghcr.io/johanmasmelaeu/mcp-init-ms-segurosbolivar:latest"
      ],
      "disabled": false
    }
  }
}

Docker Desktop descarga la imagen automaticamente la primera vez. Listo.

Opcion B: Build local (solo si necesitas modificar el MCP)

1. Clonar el repositorio

git clone https://github.com/JohanMasmelaEu/MCP_INIT_MS_SegurosBolivar.git
cd MCP_INIT_MS_SegurosBolivar

2. Construir la imagen Docker

docker build --network=host -t mcp-init-ms-segurosbolivar:latest .

Nota: El flag --network=host es necesario para que el contenedor de build tenga acceso a internet (descarga dependencias de PyPI). Sin este flag, la red corporativa o VPN puede bloquear las conexiones salientes del contenedor.

3. Configurar el MCP en Kiro (build local)

Crear (o editar) .kiro/settings/mcp.json:

{
  "mcpServers": {
    "MCP_INIT_MS_SegurosBolivar": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", ".:/workspace",
        "mcp-init-ms-segurosbolivar:latest"
      ],
      "disabled": false
    }
  }
}

Nota: La unica diferencia con la Opcion A es el nombre de la imagen: mcp-init-ms-segurosbolivar:latest (local) vs ghcr.io/johanmasmelaeu/mcp-init-ms-segurosbolivar:latest (registry).

4. Usar el MCP (no requiere levantar nada manualmente)

El MCP no se arranca por separado. Kiro lo gestiona automaticamente:

  1. Abre Kiro en el directorio donde quieres generar el proyecto
  2. Kiro detecta el mcp.json al iniciar la sesion
  3. Internamente ejecuta docker run -i --rm ... y mantiene la conexion via stdio
  4. El contenedor vive mientras la sesion de Kiro este activa
  5. Al cerrar la sesion, el contenedor se destruye automaticamente (--rm)

Para verificar que funciona, abre una sesion en Kiro y escribe:

"Lista los stacks disponibles del MCP de inicializacion"

Kiro invocara list_available_stacks y deberia responder con java-spring-boot.

Troubleshooting

Problema Solucion
Kiro no detecta el MCP Verificar que mcp.json esta en .kiro/settings/mcp.json (workspace o global)
"Cannot connect to Docker daemon" Asegurar que Docker Desktop esta corriendo
"image not found" Ejecutar el build del paso 2
El MCP no responde Reiniciar la sesion de Kiro (cierra y abre el chat)
Archivos generados con permisos root En Linux/Mac agregar "--user", "$(id -u):$(id -g)" a los args

Como funciona el enlace MCP ↔ Kiro

Arquitectura de comunicacion

┌─────────────────────────────────────────────────────────────────┐
│  Kiro IDE (tu maquina)                                          │
│                                                                 │
│  1. Lee .kiro/settings/mcp.json                                 │
│  2. Ejecuta: docker run -i --rm -v <workspace>:/workspace ...   │
│  3. Conecta al proceso via stdio (stdin/stdout)                 │
│                                                                 │
│  ┌───────────────────────────────────────────────────────────┐  │
│  │  Contenedor Docker (mcp-init-ms-segurosbolivar:latest)    │  │
│  │                                                           │  │
│  │  Python 3.12 + MCP SDK                                    │  │
│  │  ├── Recibe llamadas JSON-RPC via stdin                   │  │
│  │  ├── Ejecuta tools (get_project_plan, initialize, etc.)   │  │
│  │  ├── Escribe archivos en /workspace (volumen montado)     │  │
│  │  └── Responde resultados via stdout                       │  │
│  │                                                           │  │
│  │  /workspace ← montado desde tu directorio local           │  │
│  └───────────────────────────────────────────────────────────┘  │
│                                                                 │
│  4. Kiro recibe respuestas y las presenta al usuario            │
│  5. Al cerrar sesion → contenedor se destruye (--rm)            │
└─────────────────────────────────────────────────────────────────┘

Protocolo MCP (Model Context Protocol)

MCP es un protocolo estandar que permite a LLMs (como Kiro/Claude) invocar herramientas externas de forma estructurada. En este caso:

  • Transport: stdio — Kiro se comunica con el contenedor Docker via stdin/stdout
  • Protocolo: JSON-RPC 2.0 sobre stdio
  • Lifecycle:
    1. Kiro inicia sesion → lee mcp.json → arranca el contenedor
    2. Handshake: Kiro pregunta que tools tiene el MCP → el MCP responde con la lista
    3. Kiro sabe que tools tiene disponibles y los usa segun el contexto de la conversacion
    4. Cada invocacion: Kiro envia JSON-RPC request → MCP ejecuta → responde JSON-RPC response
    5. Cierre: Kiro termina sesion → stdin se cierra → contenedor sale → Docker lo elimina

Donde colocar el mcp.json

Ubicacion Alcance Cuando usar
<proyecto>/.kiro/settings/mcp.json Solo ese workspace Si solo quieres el MCP en un proyecto especifico
~/.kiro/settings/mcp.json Todas las sesiones de Kiro Si quieres tener el MCP disponible siempre

Si el archivo existe en ambos niveles, la configuracion del workspace tiene prioridad.

Que pasa internamente cuando hablas con Kiro

Tu: "Inicializa un microservicio para gestion de polizas"
 │
 ▼
Kiro (LLM): Interpreta tu peticion → decide invocar get_required_inputs
 │
 ▼
Kiro → Docker (stdin): {"jsonrpc":"2.0","method":"tools/call","params":{"name":"get_required_inputs","arguments":{"stack":"java-spring-boot"}}}
 │
 ▼
MCP Server (Python): Ejecuta la funcion → retorna schema de preguntas
 │
 ▼
Docker → Kiro (stdout): {"jsonrpc":"2.0","result":{"content":[{"text":"...schema JSON..."}]}}
 │
 ▼
Kiro (LLM): Procesa el schema → te hace las preguntas necesarias
 │
 ▼
Tu: Respondes las preguntas
 │
 ▼
Kiro: Arma la config completa → invoca get_project_plan → te muestra el plan
 │
 ▼
Tu: "Si, apruebo"
 │
 ▼
Kiro: Invoca initialize_project → MCP escribe archivos en /workspace (tu directorio)
 │
 ▼
Archivos aparecen en tu directorio local (porque /workspace es un volumen montado)

Verificar que el MCP esta conectado

En Kiro, abre el panel de funciones MCP (Command Palette → "MCP") para ver los servidores activos. MCP_INIT_MS_SegurosBolivar deberia aparecer con estado "running" y 7 tools listados.


Uso

Flujo tipico

  1. Abre Kiro en un directorio vacio (o donde quieras generar el proyecto)
  2. Dile a Kiro: "Quiero inicializar un nuevo microservicio para gestion de [tu dominio]"
  3. Kiro te preguntara los datos necesarios (nombre, entidades, BD, auth, etc.)
  4. Kiro te mostrara el plan de archivos a generar
  5. Confirmas y el MCP genera todo el proyecto
  6. Levantas con docker compose up desde development/docker-local-ms/

Tools disponibles

Tool Descripcion
list_available_stacks Lista los stacks de proyecto disponibles (V1: java-spring-boot)
get_required_inputs Devuelve el schema de datos que el usuario debe proporcionar
get_project_plan Genera el plan detallado de archivos (para confirmacion)
initialize_project Ejecuta la generacion completa del proyecto
add_domain_module Agrega un modulo de dominio a un proyecto existente
configure_infrastructure Actualiza la configuracion de infraestructura local
get_blueprint Devuelve el blueprint tecnico como contexto

Que genera

Un proyecto completo con:

  • Gradle 9.x + Spring Boot 4.x + Java 21
  • Estructura domain-driven (controller/dto/service/repository por modulo)
  • Spring Security configurable (OAuth2 RS, API Gateway, deferred)
  • Docker Compose local (LocalStack SSM/S3/SQS + Mock OAuth + Datadog Agent)
  • SpringDoc OpenAPI + Swagger UI funcional en local
  • CI/CD GitHub Actions con templates institucionales
  • JaCoCo con cobertura minima 85%
  • Archivos de contexto .kiro (steering, rules, changelogs)
  • README, Postman template, api_spec.yaml base

Estructura del MCP

MCP_INIT_MS_SegurosBolivar/
├── Dockerfile
├── requirements.txt
├── README.md
├── src/
│   ├── server.py              # Entry point MCP (stdio)
│   ├── tools/                 # Implementacion de cada tool
│   ├── generators/            # Logica de generacion por stack
│   ├── models/                # Modelos Pydantic (input del usuario)
│   └── utils/                 # Template renderer, file writer
├── templates/
│   └── java-spring-boot/      # Templates Jinja2 del arquetipo
├── blueprints/                # TECH_STACK_BLUEPRINT.md
└── rules/                     # Rules transversales a inyectar

Desarrollo del MCP (solo para contribuidores)

Esta seccion es SOLO para quienes modifican el MCP en si. Los usuarios finales NO necesitan Python instalado — todo corre via Docker.

Correr sin Docker (solo desarrollo del MCP)

python -m venv .venv
.venv\Scripts\activate        # Windows
pip install -r requirements.txt
python -m src.server

Agregar un nuevo stack (futuro)

  1. Crear directorio templates/<nuevo-stack>/
  2. Agregar templates Jinja2 siguiendo la estructura
  3. Crear src/generators/<nuevo_stack>.py extendiendo BaseGenerator
  4. Registrar en list_available_stacks

Restricciones de diseno

  • No ejecuta nada sin mostrar plan al usuario primero
  • No llama a LLMs externos (Kiro es el cerebro)
  • No genera logica de negocio (solo estructura y boilerplate)
  • No hardcodea secrets (solo placeholders + .env.sample)
  • No toma decisiones de arquitectura (sigue el blueprint)

Publicar la imagen (para maintainers)

La imagen se publica automaticamente en GitHub Container Registry (ghcr.io) via GitHub Actions. Paso a paso:

1. Configurar permisos del repositorio (una sola vez)

  1. Ve a tu repo en GitHub: https://github.com/JohanMasmelaEu/MCP_INIT_MS_SegurosBolivar
  2. Settings → Actions → General
  3. En "Workflow permissions" selecciona "Read and write permissions"
  4. Marca "Allow GitHub Actions to create and approve pull requests"
  5. Guarda

2. Hacer push a main

cd MCP_INIT_MS_SegurosBolivar
git add .
git commit -m "feat: MCP server v1.0.0 - inicializacion de microservicios Java/Spring Boot"
git push origin main

El workflow publish-image.yml se dispara automaticamente y:

  • Construye la imagen Docker
  • La publica en ghcr.io/johanmasmelaeu/mcp-init-ms-segurosbolivar:latest

3. Verificar que la imagen se publico

  • Ve a: https://github.com/JohanMasmelaEu/MCP_INIT_MS_SegurosBolivar/pkgs/container/mcp-init-ms-segurosbolivar
  • O en la tab "Packages" de tu perfil de GitHub

4. Hacer la imagen publica (una sola vez)

Por defecto, las imagenes en ghcr.io heredan la visibilidad del repo. Si el repo es publico, la imagen es publica. Si es privado:

  1. Ve a: https://github.com/users/JohanMasmelaEu/packages/container/mcp-init-ms-segurosbolivar/settings
  2. En "Danger Zone" → "Change package visibility" → selecciona Public
  3. Confirma

Esto permite que cualquier usuario con Docker Desktop haga docker pull sin autenticarse.

5. Publicar una version con tag (opcional)

Para publicar una version especifica (ej: v1.0.0):

git tag v1.0.0
git push origin v1.0.0

Esto genera tags adicionales en el registry:

  • ghcr.io/johanmasmelaeu/mcp-init-ms-segurosbolivar:1.0.0
  • ghcr.io/johanmasmelaeu/mcp-init-ms-segurosbolivar:1.0
  • ghcr.io/johanmasmelaeu/mcp-init-ms-segurosbolivar:latest

6. Verificar desde cualquier maquina

docker pull ghcr.io/johanmasmelaeu/mcp-init-ms-segurosbolivar:latest
docker run -i --rm ghcr.io/johanmasmelaeu/mcp-init-ms-segurosbolivar:latest

Si responde el handshake JSON-RPC, funciona.


Licencia

Uso interno Seguros Bolivar.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选