Build and integrate IMAP MCP Server. Changes: - mcp-imap-wrapper.sh: Created wrapper script with container cleanup - crush.json: Added imap-mcp entry with type: stdio and timeout: 60 - STATUS.md: Updated to mark imap-mcp as having configuration issues - JOURNAL.md: Documented integration with full analysis of known issue Known Issue: - Server crashes on startup if IMAP connection fails - Server does not respond to JSON-RPC initialize before crashing - Requires working IMAP server to function in Crush - Root cause: server attempts IMAP connection during lifespan context entry - If connection fails, exception propagates and causes server exit - Bug in imap-mcp: should handle connection gracefully Validation: - Container builds successfully (317MB, Python + uv) - Wrapper script tested and working - MCP protocol handshake: FAILED (server crashes before initialize) - Cannot test protocol version or server capabilities due to crash Environment Variables Required: - PYTHONUNBUFFERED=1 - IMAP_HOST: IMAP server hostname - IMAP_PORT: IMAP server port (default: 993) - IMAP_USER: IMAP username - IMAP_PASSWORD: IMAP password Workaround: User must have a working IMAP server running for imap-mcp to initialize in Crush. If IMAP is unavailable, MCP will fail. This is fifth MCP added in alphabetical order after filtering out already working MCPs (audiobook, bitwarden, blender, cloudron, context7, docker, drawio, elasticsearch, freecad, ghost, gimp). Following ADR-007: Sequential Server Validation - one MCP at a time, noting issues as they are encountered.
77 lines
2.2 KiB
JSON
77 lines
2.2 KiB
JSON
{
|
|
"$schema": "https://charm.land/crush.json",
|
|
"lsp": {
|
|
"bash": {
|
|
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/lsp-bash-wrapper.sh"
|
|
},
|
|
"docker": {
|
|
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/lsp-docker-wrapper.sh"
|
|
},
|
|
"markdown": {
|
|
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/lsp-marksman-wrapper.sh"
|
|
}
|
|
},
|
|
"mcp": {
|
|
"audiobook": {
|
|
"type": "stdio",
|
|
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/mcp-audiobook-wrapper.sh",
|
|
"timeout": 60
|
|
},
|
|
"bitwarden": {
|
|
"type": "stdio",
|
|
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/mcp-bitwarden-wrapper.sh",
|
|
"timeout": 60
|
|
},
|
|
"blender": {
|
|
"type": "stdio",
|
|
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/mcp-blender-wrapper.sh",
|
|
"timeout": 180
|
|
},
|
|
"cloudron": {
|
|
"type": "stdio",
|
|
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/mcp-cloudron-wrapper.sh",
|
|
"timeout": 60
|
|
},
|
|
"context7": {
|
|
"type": "stdio",
|
|
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/mcp-context7-wrapper.sh",
|
|
"timeout": 60
|
|
},
|
|
"docker": {
|
|
"type": "stdio",
|
|
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/mcp-docker-wrapper.sh",
|
|
"timeout": 180
|
|
},
|
|
"drawio": {
|
|
"type": "stdio",
|
|
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/mcp-drawio-wrapper.sh",
|
|
"timeout": 60
|
|
},
|
|
"elasticsearch": {
|
|
"type": "stdio",
|
|
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/mcp-elasticsearch-wrapper.sh",
|
|
"timeout": 60
|
|
},
|
|
"freecad": {
|
|
"type": "stdio",
|
|
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/mcp-freecad-wrapper.sh",
|
|
"timeout": 180
|
|
},
|
|
"ghost": {
|
|
"type": "stdio",
|
|
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/mcp-ghost-wrapper.sh",
|
|
"timeout": 60
|
|
},
|
|
"gimp": {
|
|
"type": "stdio",
|
|
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/mcp-gimp-wrapper.sh",
|
|
"timeout": 180
|
|
},
|
|
"imap": {
|
|
"type": "stdio",
|
|
"command": "/home/charles/Projects/KNEL/KNEL-AIMiddleware/mcp-imap-wrapper.sh",
|
|
"timeout": 60
|
|
}
|
|
}
|
|
}
|