MCP_INIT_MS_SegurosBolivar
Automates the initialization of Java 21/Spring Boot microservices with Docker Compose, generating complete project archetypes for Seguros Bolivar.
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=hostes 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) vsghcr.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:
- Abre Kiro en el directorio donde quieres generar el proyecto
- Kiro detecta el
mcp.jsonal iniciar la sesion - Internamente ejecuta
docker run -i --rm ...y mantiene la conexion via stdio - El contenedor vive mientras la sesion de Kiro este activa
- 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:
- Kiro inicia sesion → lee
mcp.json→ arranca el contenedor - Handshake: Kiro pregunta que tools tiene el MCP → el MCP responde con la lista
- Kiro sabe que tools tiene disponibles y los usa segun el contexto de la conversacion
- Cada invocacion: Kiro envia JSON-RPC request → MCP ejecuta → responde JSON-RPC response
- Cierre: Kiro termina sesion → stdin se cierra → contenedor sale → Docker lo elimina
- Kiro inicia sesion → lee
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
- Abre Kiro en un directorio vacio (o donde quieras generar el proyecto)
- Dile a Kiro: "Quiero inicializar un nuevo microservicio para gestion de [tu dominio]"
- Kiro te preguntara los datos necesarios (nombre, entidades, BD, auth, etc.)
- Kiro te mostrara el plan de archivos a generar
- Confirmas y el MCP genera todo el proyecto
- Levantas con
docker compose updesdedevelopment/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)
- Crear directorio
templates/<nuevo-stack>/ - Agregar templates Jinja2 siguiendo la estructura
- Crear
src/generators/<nuevo_stack>.pyextendiendoBaseGenerator - 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)
- Ve a tu repo en GitHub:
https://github.com/JohanMasmelaEu/MCP_INIT_MS_SegurosBolivar - Settings → Actions → General
- En "Workflow permissions" selecciona "Read and write permissions"
- Marca "Allow GitHub Actions to create and approve pull requests"
- 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:
- Ve a:
https://github.com/users/JohanMasmelaEu/packages/container/mcp-init-ms-segurosbolivar/settings - En "Danger Zone" → "Change package visibility" → selecciona Public
- 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.0ghcr.io/johanmasmelaeu/mcp-init-ms-segurosbolivar:1.0ghcr.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
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。