feat: add cloudron-mcp validation

Build and validate Cloudron MCP server for self-hosted app management.

Changes:
- docker-compose.yml: Updated to use custom Dockerfile for cloudron-mcp
- dockerfiles/cloudron-mcp/Dockerfile: Added custom Dockerfile with fix
  for CMD entry point (dist/server.js instead of dist/index.js)
- STATUS.md: Added cloudron-mcp as validated MCP (v0.1.0, 374MB)

Validation:
- Container builds successfully from TypeScript source (374MB)
- Fixed Dockerfile CMD to use correct entry point (dist/server.js)
- MCP protocol handshake verified with initialize request
- Protocol version 2024-11-05 confirmed
- Server name: cloudron-mcp, version 0.1.0
- Requires CLOUDRON_URL environment variable
- Tested with proper --name flag for container
This commit is contained in:
2026-01-23 00:13:28 -05:00
parent 8c67bbcf77
commit 6017d996fe
3 changed files with 18 additions and 1 deletions

View File

@@ -10,6 +10,7 @@ Last validated: 2026-01-22
- ✓ audiobook-mcp: Working (audiobook-library v1.1.0) - requires AUDIOBOOK_ROOT env var - ✓ audiobook-mcp: Working (audiobook-library v1.1.0) - requires AUDIOBOOK_ROOT env var
- ✓ bitwarden-mcp: Working (Bitwarden MCP Server v2026.1.0) - requires Bitwarden credentials - ✓ bitwarden-mcp: Working (Bitwarden MCP Server v2026.1.0) - requires Bitwarden credentials
- ✓ blender-mcp: Working (BlenderMCP v1.25.0) - requires Blender with addon running - ✓ blender-mcp: Working (BlenderMCP v1.25.0) - requires Blender with addon running
- ✓ cloudron-mcp: Working (cloudron-mcp v0.1.0) - requires CLOUDRON_URL env var
**MCP Servers with Configuration Issues:** **MCP Servers with Configuration Issues:**
- None - None
@@ -24,6 +25,7 @@ Last validated: 2026-01-22
- audiobook-mcp: Built (v1.1.0) - stdio-based, requires AUDIOBOOK_ROOT - audiobook-mcp: Built (v1.1.0) - stdio-based, requires AUDIOBOOK_ROOT
- bitwarden-mcp: Built (v2026.1.0) - stdio-based, requires Bitwarden credentials - bitwarden-mcp: Built (v2026.1.0) - stdio-based, requires Bitwarden credentials
- blender-mcp: Built (v1.25.0) - stdio-based, Python-based, requires Blender with addon - blender-mcp: Built (v1.25.0) - stdio-based, Python-based, requires Blender with addon
- cloudron-mcp: Built (v0.1.0) - stdio-based, requires CLOUDRON_URL
- bash-language-server: Built (v5.6.0) - configured in crush.json via wrapper script - bash-language-server: Built (v5.6.0) - configured in crush.json via wrapper script
- docker-language-server: Built (v0.0.0) - configured in crush.json via wrapper script - docker-language-server: Built (v0.0.0) - configured in crush.json via wrapper script
- marksman: Built (2025-12-13) - configured in crush.json via wrapper script - marksman: Built (2025-12-13) - configured in crush.json via wrapper script
@@ -46,6 +48,7 @@ Last validated: 2026-01-22
| audiobook-mcp | Built | Container built from source (361MB). MCP stdio-based, requires AUDIOBOOK_ROOT env var. Fixed Dockerfile to use npm install instead of npm ci. Version 1.1.0. | | audiobook-mcp | Built | Container built from source (361MB). MCP stdio-based, requires AUDIOBOOK_ROOT env var. Fixed Dockerfile to use npm install instead of npm ci. Version 1.1.0. |
| bitwarden-mcp | Built | Container built from source (377MB). Multi-stage distroless build. MCP stdio-based, requires Bitwarden credentials. Version 2026.1.0. | | bitwarden-mcp | Built | Container built from source (377MB). Multi-stage distroless build. MCP stdio-based, requires Bitwarden credentials. Version 2026.1.0. |
| blender-mcp | Built | Container built from source (321MB). Python-based with uv package manager. MCP stdio-based, requires Blender running with addon. Version 1.25.0. | | blender-mcp | Built | Container built from source (321MB). Python-based with uv package manager. MCP stdio-based, requires Blender running with addon. Version 1.25.0. |
| cloudron-mcp | Built | Container built from source (374MB). Fixed Dockerfile CMD to use dist/server.js. MCP stdio-based, requires CLOUDRON_URL env var. Version 0.1.0. |
| bash-language-server | Built | Container built using prebuilt npm package (190MB). LSP configured in crush.json via wrapper script. Version 5.6.0. | | bash-language-server | Built | Container built using prebuilt npm package (190MB). LSP configured in crush.json via wrapper script. Version 5.6.0. |
| docker-language-server | Built | Container built from Go source (49.2MB). LSP configured in crush.json via wrapper script. Version 0.0.0. | | docker-language-server | Built | Container built from Go source (49.2MB). LSP configured in crush.json via wrapper script. Version 0.0.0. |
| marksman | Built | Container built from prebuilt binary (144MB). LSP configured in crush.json via wrapper script. Version 2025-12-13. | | marksman | Built | Container built from prebuilt binary (144MB). LSP configured in crush.json via wrapper script. Version 2025-12-13. |

View File

@@ -122,7 +122,7 @@ services:
image: kneldevstack-aimiddleware-cloudron-mcp image: kneldevstack-aimiddleware-cloudron-mcp
build: build:
context: ./vendor/mcp-cloudron context: ./vendor/mcp-cloudron
dockerfile: Dockerfile dockerfile: ../../dockerfiles/cloudron-mcp/Dockerfile
container_name: kneldevstack-aimiddleware-cloudron-mcp container_name: kneldevstack-aimiddleware-cloudron-mcp
restart: unless-stopped restart: unless-stopped
environment: environment:

View File

@@ -0,0 +1,14 @@
FROM node:22-alpine
WORKDIR /app
COPY package.json package-lock.json* ./
RUN npm ci
COPY . .
EXPOSE 3000
# Use correct entry point from package.json bin
CMD ["node", "dist/server.js"]