feat: add gimp-mcp to Crush integration

Build and validate GIMP MCP Server (GimpMCP v1.10.1).

Changes:
- dockerfiles/gimp-mcp/Dockerfile: Fixed ENTRYPOINT to use python -m instead of uvx
- mcp-gimp-wrapper.sh: Created wrapper script with container cleanup
- crush.json: Added gimp-mcp entry with type: stdio and timeout: 180
- STATUS.md: Updated working MCP list and detailed status table
- JOURNAL.md: Documented integration with full validation results

Validation:
- Container builds successfully (418MB, Python + uv)
- Dockerfile fix: Changed from uvx (slow, rebuilds packages) to python -m (fast, uses .venv)
- MCP protocol handshake verified with initialize request
- Protocol version 2024-11-05 confirmed
- Server name: GimpMCP, version 1.10.1
- Wrapper script tested and working
- Environment variable: PYTHONUNBUFFERED=1
- External dependency: GIMP 3.0 with server

Dockerfile Fix:
- Before: ENTRYPOINT ["uvx", "gimp-mcp-server"] (slow, rebuilds on every run)
- After: ENTRYPOINT ["python", "-m", "gimp_mcp_server"] (fast, uses built .venv)
- Entry point: gimp-mcp-server = "gimp_mcp_server:main" (from pyproject.toml)

This is fourth MCP added in alphabetical order after filtering
out already working MCPs (audiobook, bitwarden, blender, cloudron,
context7, docker, drawio, elasticsearch, freecad, ghost).

Following ADR-007: Sequential Server Validation - one MCP at a time.
This commit is contained in:
2026-01-23 15:20:48 -05:00
parent 2b79f5dd95
commit 2596cc42e0
5 changed files with 142 additions and 1 deletions

View File

@@ -1187,3 +1187,117 @@ Sequential validation of MCP servers with pattern:
### [MCP Integration] gimp-mcp Added and Validated
**Date/Time**: 2026-01-23 02:10:00 PM EST
**Type**: MCP Integration
**Status**: Completed - Awaiting User Validation
**What Was Done**:
Added gimp-mcp (GIMP MCP Server) to Crush integration as fourth MCP in alphabetical order.
**Work Completed**:
1. **Built container**:
```bash
docker compose build gimp-mcp
```
Result: Successfully built (418MB, Python + uv)
2. **Fixed Dockerfile**:
- Problem: `ENTRYPOINT ["uvx", "gimp-mcp-server"]` caused uvx to rebuild packages on every run
- Solution: Changed to `ENTRYPOINT ["python", "-m", "gimp_mcp_server"]`
- Result: Uses pre-built .venv from container build, much faster and more reliable
3. **Created wrapper script**:
- File: `mcp-gimp-wrapper.sh`
- Pattern: Same as working MCP wrappers (container cleanup, explicit naming)
- Environment variables: PYTHONUNBUFFERED=1
4. **Tested MCP protocol**:
```bash
echo '{"jsonrpc":"2.0","method":"initialize",...}' | \
timeout 10 docker run --rm -i kneldevstack-aimiddleware-gimp-mcp
```
Result: Valid JSON-RPC response returned (GimpMCP v1.10.1, protocol version 2024-11-05)
5. **Added to crush.json**:
```json
"gimp": {
"type": "stdio",
"command": "/path/to/mcp-gimp-wrapper.sh",
"timeout": 180
}
```
6. **Updated documentation**:
- STATUS.md: Added gimp-mcp to "Working MCP Servers" and "Recently Built"
- JOURNAL.md: This entry
**Server Details**:
- Name: GimpMCP
- Version: 1.10.1
- Purpose: GIMP 3.0 integration through Model Context Protocol
- Type: stdio-based MCP
- Size: 418MB
- Build: Python with uv package manager
- Environment Variables Required:
- PYTHONUNBUFFERED=1 (for proper Python output buffering)
- External Service Required: GIMP 3.0 with server running
**Validation Results**:
- Container builds: ✓
- Dockerfile fix applied: ✓
- MCP protocol handshake: ✓
- Wrapper script execution: ✓
- JSON-RPC initialize response: ✓
- Protocol version: 2024-11-05 ✓
- Server capabilities returned: ✓
**Dockerfile Fix Details**:
- Before: `ENTRYPOINT ["uvx", "gimp-mcp-server"]` (slow, rebuilds packages)
- After: `ENTRYPOINT ["python", "-m", "gimp_mcp_server"]` (fast, uses .venv)
- Entry point from pyproject.toml: `gimp-mcp-server = "gimp_mcp_server:main"`
**Files Created**:
- `/home/charles/Projects/KNEL/KNEL-AIMiddleware/mcp-gimp-wrapper.sh` (executable)
**Files Modified**:
- `/home/charles/Projects/KNEL/KNEL-AIMiddleware/dockerfiles/gimp-mcp/Dockerfile` (fixed entry point)
- `/home/charles/Projects/KNEL/KNEL-AIMiddleware/crush.json` (added gimp entry)
- `/home/charles/Projects/KNEL/KNEL-AIMiddleware/STATUS.md` (updated status)
**Working MCPs to Date** (11 total):
1. audiobook-mcp
2. bitwarden-mcp
3. blender-mcp
4. cloudron-mcp
5. context7-mcp
6. docker-mcp
7. drawio-mcp
8. elasticsearch-mcp
9. freecad-mcp
10. ghost-mcp
11. **gimp-mcp** (NEW - awaiting validation)
**Remaining MCPs** (alphabetical order, filtering out working):
- imap-mcp
- kicad-mcp (special case: host-only, requires KiCAD running)
- mcp-ansible (ansibe-mcp)
- mcp-redmine (redmine-mcp)
- matomo-mcp
- nextcloud-mcp (special case: HTTP-based)
- discourse-mcp
- docspace-mcp
- penpot-mcp
- postizz-mcp
- proxmox-mcp
- snipeit-mcp
- terraform-mcp
- wordpress-mcp
- kubernetes-mcp (special case: requires kube config)
**Pattern Applied**: ADR-007 (Sequential Server Validation) - one MCP at a time, validate before proceeding.
---