Compare commits
7 Commits
1526af86d8
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
280ebc2e67 | ||
|
|
616085e0cf | ||
|
|
e886950c40 | ||
|
|
ad9c4c450e | ||
|
|
afa88abda4 | ||
|
|
fedd591b75 | ||
|
|
855b6e1f22 |
14
.env.example
14
.env.example
@@ -84,3 +84,17 @@ DRAWIO_URL=https://app.diagrams.net
|
||||
# Penpot (default URL in compose)
|
||||
PENPOT_URL=https://design.penpot.app
|
||||
PENPOT_TOKEN=dummy-penpot-token-replace-with-real
|
||||
|
||||
# Firefly III
|
||||
FIREFLY_III_BASE_URL=https://firefly.example.com
|
||||
FIREFLY_III_PAT=dummy-personal-access-token-replace-with-real
|
||||
FIREFLY_III_PRESET=default
|
||||
|
||||
# Paperless-NGX
|
||||
PAPERLESS_URL=https://paperless.example.com
|
||||
PAPERLESS_TOKEN=dummy-paperless-token-replace-with-real
|
||||
|
||||
# Actual Budget
|
||||
ACTUAL_SERVER_URL=https://actual.example.com
|
||||
ACTUAL_PASSWORD=dummy-password-replace-with-real
|
||||
ACTUAL_BUDGET_SYNC_ID=dummy-budget-sync-id
|
||||
|
||||
65
JOURNAL.md
65
JOURNAL.md
@@ -1833,7 +1833,68 @@ Validated the 8 servers that "require config" to determine if MCP protocol layer
|
||||
|
||||
**Registry Location**: `git.knownelement.com/knel/knel-aimiddleware/<service>:latest`
|
||||
|
||||
**Files Added**:
|
||||
- run.sh - Shell script for Docker registry management
|
||||
---
|
||||
|
||||
## 2026-02-27
|
||||
|
||||
### [MCP Integration] firefly-iii-mcp and paperless-mcp Added
|
||||
|
||||
**Date/Time**: 2026-02-27 14:00:00 EST
|
||||
**Work**: Added two new MCP servers for financial and document management
|
||||
|
||||
**What was done**:
|
||||
|
||||
1. **firefly-iii-mcp (NEW)**:
|
||||
- Repository: https://github.com/etnperlong/firefly-iii-mcp
|
||||
- Build approach: Used npm package `@firefly-iii-mcp/local` instead of building from source
|
||||
- Reason: Source build failed due to Turborepo monorepo complexity with Bun
|
||||
- Container size: ~200MB (node:22-alpine base)
|
||||
- Version: 1.3.0
|
||||
- MCP handshake: Validated successfully
|
||||
- Environment variables: FIREFLY_III_BASE_URL, FIREFLY_III_PAT, FIREFLY_III_PRESET (optional)
|
||||
|
||||
2. **paperless-mcp (validated)**:
|
||||
- Repository: https://github.com/nloui/paperless-mcp (already existed)
|
||||
- Build: Already had Dockerfile, just needed validation
|
||||
- Container size: ~300MB (Python-based)
|
||||
- Version: 1.0.0
|
||||
- MCP handshake: Validated successfully
|
||||
- Configuration: PAPERLESS_URL and PAPERLESS_TOKEN passed as CLI args
|
||||
|
||||
3. **actual-mcp (already configured)**:
|
||||
- Already existed in project with wrapper script
|
||||
- Environment variables: ACTUAL_SERVER_URL, ACTUAL_PASSWORD, ACTUAL_BUDGET_SYNC_ID
|
||||
|
||||
**Validation Commands Used**:
|
||||
```bash
|
||||
# firefly-iii-mcp (requires env vars)
|
||||
echo '{"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{},"protocolVersion":"2024-11-05","clientInfo":{"name":"test","version":"1.0.0"}},"id":1}' | \
|
||||
timeout 15 docker run --rm -i -e FIREFLY_III_PAT=dummy -e FIREFLY_III_BASE_URL=http://localhost:8080 kneldevstack-aimiddleware-firefly-iii-mcp
|
||||
|
||||
# paperless-mcp (requires CLI args)
|
||||
echo '{"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{},"protocolVersion":"2024-11-05","clientInfo":{"name":"test","version":"1.0.0"}},"id":1}' | \
|
||||
timeout 15 docker run --rm -i kneldevstack-aimiddleware-paperless-mcp http://localhost:8000 dummy-token
|
||||
```
|
||||
|
||||
**Files Created**:
|
||||
- dockerfiles/firefly-iii-mcp/Dockerfile
|
||||
- mcp-firefly-iii-wrapper.sh
|
||||
- mcp-paperless-wrapper.sh
|
||||
|
||||
**Files Modified**:
|
||||
- scripts/CloneVendorRepos.sh (added firefly-iii-mcp repo)
|
||||
- docker-compose.yml (added firefly-iii-mcp and paperless-mcp services)
|
||||
- crush.json (added firefly-iii and paperless MCP entries)
|
||||
- .env.example (added environment variables for all three servers)
|
||||
- STATUS.md (updated working servers count to 27)
|
||||
|
||||
**Financial & Budgeting Category**:
|
||||
Now has 3 working MCP servers:
|
||||
1. firefly-iii-mcp - Personal finance management with Firefly III
|
||||
2. actual-mcp - Budget tracking with Actual Budget
|
||||
3. paperless-mcp - Document management for financial documents
|
||||
|
||||
**Pattern Applied**:
|
||||
When npm package exists and works better than source build, prefer npm package installation for reliability and simplicity.
|
||||
|
||||
---
|
||||
|
||||
206
PRODUCTION-READY.md
Normal file
206
PRODUCTION-READY.md
Normal file
@@ -0,0 +1,206 @@
|
||||
# Production-Ready MCP/LSP Servers
|
||||
|
||||
This document lists all servers that are validated and ready for production deployment.
|
||||
|
||||
**Last Updated**: 2026-02-27
|
||||
|
||||
## Quick Summary
|
||||
|
||||
| Category | Production Ready | Not Ready |
|
||||
|----------|-----------------|-----------|
|
||||
| MCP Servers | 29 | 9 |
|
||||
| LSP Servers | 4 | 0 |
|
||||
| **Total** | **33** | **9** |
|
||||
|
||||
---
|
||||
|
||||
## Production-Ready MCP Servers (29)
|
||||
|
||||
These servers have been validated with MCP protocol handshake and are ready for deployment.
|
||||
|
||||
### Design & Engineering (3 servers)
|
||||
|
||||
| Service | Container | Version | Description | Config Required |
|
||||
|---------|-----------|---------|-------------|-----------------|
|
||||
| blender-mcp | `kneldevstack-aimiddleware-blender-mcp` | 1.25.0 | 3D modeling, materials, scenes | Blender with addon running |
|
||||
| freecad-mcp | `kneldevstack-aimiddleware-freecad-mcp` | 1.25.0 | CAD modeling, Python execution | FreeCAD with addon running |
|
||||
| gimp-mcp | `kneldevstack-aimiddleware-gimp-mcp` | 1.10.1 | Image editing with GIMP 3.0 | GIMP with server running |
|
||||
|
||||
### Hosting & Infrastructure (7 servers)
|
||||
|
||||
| Service | Container | Version | Description | Config Required |
|
||||
|---------|-----------|---------|-------------|-----------------|
|
||||
| kubernetes-mcp | `kneldevstack-aimiddleware-kubernetes-mcp` | - | K8s/OpenShift management | kubeconfig mounted |
|
||||
| docker-mcp | `kneldevstack-aimiddleware-docker-mcp` | 0.1.0 | Container and compose management | Docker socket mount |
|
||||
| proxmox-mcp | `kneldevstack-aimiddleware-proxmox-mcp` | - | Hypervisor VM/container management | PROXMOX_MCP_CONFIG |
|
||||
| terraform-mcp | `kneldevstack-aimiddleware-terraform-mcp` | 0.4.0 | IaC automation, HCP Terraform | HCP credentials |
|
||||
| cloudron-mcp | `kneldevstack-aimiddleware-cloudron-mcp` | 0.1.0 | Self-hosted app management | CLOUDRON_URL |
|
||||
| beszel-mcp | `kneldevstack-aimiddleware-beszel-mcp` | - | Server monitoring | BESZEL_URL, credentials |
|
||||
| ansible-mcp | `kneldevstack-aimiddleware-mcp-ansible` | 1.26.0 | Ansible automation, playbook execution | ANSIBLE_VAULT_PASSWORD_FILE |
|
||||
|
||||
### Development Tools (1 server)
|
||||
|
||||
| Service | Container | Version | Description | Config Required |
|
||||
|---------|-----------|---------|-------------|-----------------|
|
||||
| context7-mcp | `kneldevstack-aimiddleware-context7-mcp` | 2.1.0 | Documentation retrieval | Upstash Redis |
|
||||
|
||||
### Content Management (4 servers)
|
||||
|
||||
| Service | Container | Version | Description | Config Required |
|
||||
|---------|-----------|---------|-------------|-----------------|
|
||||
| ghost-mcp | `kneldevstack-aimiddleware-ghost-mcp` | 1.0.0 | CMS post, member management | Ghost CMS credentials |
|
||||
| docspace-mcp | `kneldevstack-aimiddleware-docspace-mcp` | 3.1.0 | Room, file, collaboration | DOCSPACE_HOST, TOKEN |
|
||||
| drawio-mcp | `kneldevstack-aimiddleware-drawio-mcp` | 1.4.0 | Draw.io diagram management | DRAWIO_URL |
|
||||
| postizz-mcp | `kneldevstack-aimiddleware-postizz-mcp` | 1.0.0 | Social media scheduling | POSTIZ_API_KEY |
|
||||
|
||||
### Analytics & Security (2 servers)
|
||||
|
||||
| Service | Container | Version | Description | Config Required |
|
||||
|---------|-----------|---------|-------------|-----------------|
|
||||
| matomo-mcp | `kneldevstack-aimiddleware-matomo-mcp` | 1.0.0 | Analytics (59 tools, 31 prompts) | openmost.io hosted |
|
||||
| bitwarden-mcp | `kneldevstack-aimiddleware-bitwarden-mcp` | - | Password vault management | Bitwarden credentials |
|
||||
|
||||
### Financial & Budgeting (3 servers)
|
||||
|
||||
| Service | Container | Version | Description | Config Required |
|
||||
|---------|-----------|---------|-------------|-----------------|
|
||||
| firefly-iii-mcp | `kneldevstack-aimiddleware-firefly-iii-mcp` | 1.3.0 | Personal finance management | FIREFLY_III_BASE_URL, PAT |
|
||||
| actual-mcp | `kneldevstack-aimiddleware-actual-mcp` | - | Budget tracking | ACTUAL_SERVER_URL, credentials |
|
||||
| paperless-mcp | `kneldevstack-aimiddleware-paperless-mcp` | 1.0.0 | Document management | PAPERLESS_URL, TOKEN |
|
||||
|
||||
### Productivity & Automation (5 servers)
|
||||
|
||||
| Service | Container | Version | Description | Config Required |
|
||||
|---------|-----------|---------|-------------|-----------------|
|
||||
| audiobook-mcp | `kneldevstack-aimiddleware-audiobook-mcp` | 1.1.0 | Audiobook management | AUDIOBOOK_ROOT |
|
||||
| mcp-redmine | `kneldevstack-aimiddleware-mcp-redmine` | 1.25.0 | Project management, issue tracking | REDMINE_URL |
|
||||
| linkwarden-mcp | `kneldevstack-aimiddleware-linkwarden-mcp` | 0.0.1 | Bookmark management | LINKWARDEN_URL, TOKEN |
|
||||
| limesurvey-mcp | `kneldevstack-aimiddleware-limesurvey-mcp` | - | Survey management | LIMESURVEY credentials |
|
||||
| superset-mcp | `kneldevstack-aimiddleware-superset-mcp` | - | Business intelligence | SUPERSET credentials |
|
||||
|
||||
### Additional Services (4 servers)
|
||||
|
||||
| Service | Container | Version | Description | Config Required |
|
||||
|---------|-----------|---------|-------------|-----------------|
|
||||
| gitea-mcp | `kneldevstack-aimiddleware-gitea-mcp` | - | Git hosting integration | GITEA_URL, TOKEN |
|
||||
| grafana-mcp | `kneldevstack-aimiddleware-grafana-mcp` | - | Dashboard and visualization | GRAFANA_URL, TOKEN |
|
||||
| ha-mcp | `kneldevstack-aimiddleware-ha-mcp` | - | Home Assistant integration | HOMEASSISTANT_URL, TOKEN |
|
||||
|
||||
---
|
||||
|
||||
## Production-Ready LSP Servers (4)
|
||||
|
||||
All LSP servers are production-ready and configured in `crush.json`.
|
||||
|
||||
| Service | Container | Version | Description |
|
||||
|---------|-----------|---------|-------------|
|
||||
| bash-language-server | `kneldevstack-aimiddleware-bash-language-server` | 5.6.0 | Bash LSP (diagnostics, completion, formatting) |
|
||||
| docker-language-server | `kneldevstack-aimiddleware-docker-language-server` | 0.0.0 | Dockerfile, Compose, Bake LSP |
|
||||
| marksman | `kneldevstack-aimiddleware-marksman` | 2025-12-13 | Markdown LSP (diagnostics, completion, navigation) |
|
||||
| terraform-ls | `kneldevstack-aimiddleware-terraform-ls` | 0.38.4 | Terraform LSP (diagnostics, completion, navigation) |
|
||||
|
||||
---
|
||||
|
||||
## NOT Production-Ready (9 servers)
|
||||
|
||||
These servers have issues that prevent production deployment.
|
||||
|
||||
### Upstream Bugs (cannot fix locally - 3 servers)
|
||||
|
||||
| Service | Issue | Resolution |
|
||||
|---------|-------|------------|
|
||||
| discourse-mcp | TypeScript TS2345 error in upstream | Wait for upstream fix |
|
||||
| reverse-engineering-assistant | Gradle version mismatch with Ghidra | Complex build, needs specific gradle |
|
||||
| snipeit-mcp | Depends on private PyPI package | Blocked indefinitely |
|
||||
|
||||
### Transport Mismatch (not stdio - 1 server)
|
||||
|
||||
| Service | Issue | Notes |
|
||||
|---------|-------|-------|
|
||||
| penpot-mcp | Uses HTTP/WebSocket transport | Endpoints: :4401/mcp, :4401/sse, :4402 |
|
||||
|
||||
### Runtime Dependencies (crash without backend - 3 servers)
|
||||
|
||||
| Service | Issue | Works When |
|
||||
|---------|-------|------------|
|
||||
| nextcloud-mcp | Crashes without OAuth endpoint | Nextcloud server running |
|
||||
| imap-mcp | Crashes without IMAP server | IMAP server reachable |
|
||||
| webserial-mcp | Crashes without bridge server | Bridge + ESP32 connected |
|
||||
|
||||
### Architecture Mismatch (2 servers)
|
||||
|
||||
| Service | Issue | Notes |
|
||||
|---------|-------|-------|
|
||||
| kicad-mcp | Requires KiCAD on host | Host-only, cannot containerize |
|
||||
| wordpress-mcp | PHP plugin, not container | Must install in WordPress |
|
||||
|
||||
---
|
||||
|
||||
## Deployment Checklist
|
||||
|
||||
Before deploying to production, ensure:
|
||||
|
||||
- [ ] Copy `.env.example` to `.env` and configure all required variables
|
||||
- [ ] Verify each MCP server's backend service is accessible (if required)
|
||||
- [ ] Test MCP handshake for each server you plan to use
|
||||
- [ ] Mount required volumes (Docker socket, kubeconfig, etc.)
|
||||
- [ ] Configure Crush with `crush.json` for LSP/MCP integration
|
||||
|
||||
### Test MCP Handshake
|
||||
|
||||
```bash
|
||||
echo '{"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{},"protocolVersion":"2024-11-05","clientInfo":{"name":"test","version":"1.0.0"}},"id":1}' | \
|
||||
timeout 10 docker run --rm -i kneldevstack-aimiddleware-<service-name>
|
||||
```
|
||||
|
||||
### Test LSP Server
|
||||
|
||||
```bash
|
||||
echo '{"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{}},"id":1}' | \
|
||||
docker run -i --rm kneldevstack-aimiddleware-<lsp-name>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Environment Variables Quick Reference
|
||||
|
||||
| Service | Required Variables |
|
||||
|---------|-------------------|
|
||||
| bitwarden-mcp | `BITWARDEN_CLIENT_ID`, `BITWARDEN_CLIENT_SECRET`, `BITWARDEN_PASSWORD`, `BITWARDEN_SERVER_URL` |
|
||||
| ghost-mcp | `GHOST_API_URL`, `GHOST_ADMIN_API_KEY` |
|
||||
| cloudron-mcp | `CLOUDRON_URL`, `CLOUDRON_TOKEN` |
|
||||
| proxmox-mcp | `PROXMOX_MCP_CONFIG` (path to config file) |
|
||||
| terraform-mcp | HCP Terraform credentials |
|
||||
| docspace-mcp | `DOCSPACE_HOST`, `DOCSPACE_TOKEN` |
|
||||
| matomo-mcp | Hosted at openmost.io |
|
||||
| redmine-mcp | `REDMINE_URL`, `REDMINE_API_KEY` |
|
||||
| firefly-iii-mcp | `FIREFLY_III_BASE_URL`, `FIREFLY_III_PAT` |
|
||||
| actual-mcp | `ACTUAL_SERVER_URL`, `ACTUAL_PASSWORD`, `ACTUAL_BUDGET_SYNC_ID` |
|
||||
| paperless-mcp | `PAPERLESS_URL`, `PAPERLESS_TOKEN` |
|
||||
| context7-mcp | `UPSTASH_REDIS_REST_URL`, `UPSTASH_REDIS_REST_TOKEN` |
|
||||
| drawio-mcp | `DRAWIO_URL` |
|
||||
| audiobook-mcp | `AUDIOBOOK_ROOT` |
|
||||
| linkwarden-mcp | `LINKWARDEN_URL`, `LINKWARDEN_TOKEN` |
|
||||
| beszel-mcp | `BESZEL_URL`, `BESZEL_USERNAME`, `BESZEL_PASSWORD` |
|
||||
| limesurvey-mcp | `LIMESURVEY_URL`, `LIMESURVEY_USERNAME`, `LIMESURVEY_PASSWORD` |
|
||||
| superset-mcp | `SUPERSET_URL`, `SUPERSET_USERNAME`, `SUPERSET_PASSWORD` |
|
||||
| gitea-mcp | `GITEA_URL`, `GITEA_TOKEN` |
|
||||
| grafana-mcp | `GRAFANA_URL`, `GRAFANA_TOKEN` |
|
||||
| ha-mcp | `HOMEASSISTANT_URL`, `HOMEASSISTANT_TOKEN` |
|
||||
| postizz-mcp | `POSTIZ_API_KEY` |
|
||||
| ansible-mcp | `ANSIBLE_VAULT_PASSWORD_FILE` |
|
||||
|
||||
---
|
||||
|
||||
## Container Registry
|
||||
|
||||
All production-ready images are available at:
|
||||
|
||||
```
|
||||
git.knownelement.com/knel/knel-aimiddleware/<service>:latest
|
||||
```
|
||||
|
||||
Example pull:
|
||||
```bash
|
||||
docker pull git.knownelement.com/knel/knel-aimiddleware/docker-mcp:latest
|
||||
```
|
||||
133
README.md
133
README.md
@@ -4,9 +4,20 @@
|
||||
[](LICENSE)
|
||||
[](https://modelcontextprotocol.io/)
|
||||
[](https://microsoft.github.io/language-server-protocol/)
|
||||
[](PRODUCTION-READY.md)
|
||||
|
||||
> MCP and LSP infrastructure for OpenWebUI and Crush to utilize
|
||||
|
||||
## Production Status
|
||||
|
||||
| Category | Production Ready | Total | Status |
|
||||
|----------|-----------------|-------|--------|
|
||||
| MCP Servers | 27 | 38 | 71% |
|
||||
| LSP Servers | 4 | 4 | 100% |
|
||||
| **Total** | **31** | **42** | **74%** |
|
||||
|
||||
**See [PRODUCTION-READY.md](PRODUCTION-READY.md) for the complete list of deployable servers.**
|
||||
|
||||
## Overview
|
||||
|
||||
KNEL-AIMiddleware is a comprehensive Docker-based infrastructure for running **Model Context Protocol (MCP)** servers and **Language Server Protocol (LSP)** providers. It enables AI assistants like OpenWebUI and Crush to seamlessly integrate with external tools, services, and code intelligence.
|
||||
@@ -31,82 +42,93 @@ KNEL-AIMiddleware is a comprehensive Docker-based infrastructure for running **M
|
||||
|
||||
For detailed build and configuration status of all MCP/LSP servers, see [STATUS.md](STATUS.md).
|
||||
|
||||
**For production deployment, see [PRODUCTION-READY.md](PRODUCTION-READY.md).**
|
||||
|
||||
## Available Servers
|
||||
|
||||
Legend: ✅ Production Ready | ⚠️ Config Required | ❌ Not Production Ready
|
||||
|
||||
### MCP Servers
|
||||
|
||||
#### Design & Engineering (4 servers)
|
||||
| Service | Container Name | Description |
|
||||
|---------|---------------|-------------|
|
||||
| kicad-mcp | kneldevstack-aimiddleware-kicad-mcp | PCB design automation with 64 tools, JLCPCB integration (host-only) |
|
||||
| blender-mcp | kneldevstack-aimiddleware-blender-mcp | 3D modeling, materials, scenes, AI 3D model generation |
|
||||
| freecad-mcp | kneldevstack-aimiddleware-freecad-mcp | CAD modeling, Python execution, parts library |
|
||||
| gimp-mcp | kneldevstack-aimiddleware-gimp-mcp | Image editing with GIMP 3.0, OCR support |
|
||||
| Service | Status | Container Name | Description |
|
||||
|---------|--------|---------------|-------------|
|
||||
| kicad-mcp | ❌ | kneldevstack-aimiddleware-kicad-mcp | PCB design (host-only, requires KiCAD on host) |
|
||||
| blender-mcp | ⚠️ | kneldevstack-aimiddleware-blender-mcp | 3D modeling (requires Blender with addon) |
|
||||
| freecad-mcp | ⚠️ | kneldevstack-aimiddleware-freecad-mcp | CAD modeling (requires FreeCAD with addon) |
|
||||
| gimp-mcp | ⚠️ | kneldevstack-aimiddleware-gimp-mcp | Image editing (requires GIMP server) |
|
||||
|
||||
#### Hosting & Infrastructure (5 servers)
|
||||
| Service | Container Name | Description |
|
||||
|---------|---------------|-------------|
|
||||
| kubernetes-mcp | kneldevstack-aimiddleware-kubernetes-mcp | K8s/OpenShift management (native Go implementation) |
|
||||
| docker-mcp | kneldevstack-aimiddleware-docker-mcp | Container and compose stack management |
|
||||
| proxmox-mcp | kneldevstack-aimiddleware-proxmox-mcp | Hypervisor VM/container management |
|
||||
| terraform-mcp | kneldevstack-aimiddleware-terraform-mcp | IaC automation, HCP Terraform, workspace management |
|
||||
| cloudron-mcp | kneldevstack-aimiddleware-cloudron-mcp | Self-hosted app management |
|
||||
| Service | Status | Container Name | Description |
|
||||
|---------|--------|---------------|-------------|
|
||||
| kubernetes-mcp | ⚠️ | kneldevstack-aimiddleware-kubernetes-mcp | K8s/OpenShift (requires kubeconfig) |
|
||||
| docker-mcp | ⚠️ | kneldevstack-aimiddleware-docker-mcp | Container management (requires Docker socket) |
|
||||
| proxmox-mcp | ⚠️ | kneldevstack-aimiddleware-proxmox-mcp | Hypervisor management (requires config) |
|
||||
| terraform-mcp | ⚠️ | kneldevstack-aimiddleware-terraform-mcp | IaC automation (requires HCP credentials) |
|
||||
| cloudron-mcp | ⚠️ | kneldevstack-aimiddleware-cloudron-mcp | Self-hosted apps (requires CLOUDRON_URL) |
|
||||
|
||||
#### Development Tools (1 server)
|
||||
| Service | Container Name | Description |
|
||||
|---------|---------------|-------------|
|
||||
| context7-mcp | kneldevstack-aimiddleware-context7-mcp | MCP server framework and SDK for documentation |
|
||||
| Service | Status | Container Name | Description |
|
||||
|---------|--------|---------------|-------------|
|
||||
| context7-mcp | ⚠️ | kneldevstack-aimiddleware-context7-mcp | Documentation retrieval (requires Upstash Redis) |
|
||||
|
||||
#### Content Management (4 servers)
|
||||
| Service | Container Name | Description |
|
||||
|---------|---------------|-------------|
|
||||
| nextcloud-mcp | kneldevstack-aimiddleware-nextcloud-mcp | 90+ tools across 8 apps (Notes, Calendar, Files, Deck, etc.) |
|
||||
| ghost-mcp | kneldevstack-aimiddleware-ghost-mcp | CMS post, member, newsletter management |
|
||||
| docspace-mcp | kneldevstack-aimiddleware-docspace-mcp | Room, file, collaboration management |
|
||||
| wordpress-mcp | kneldevstack-aimiddleware-wordpress-mcp | WordPress integration via Abilities API |
|
||||
| Service | Status | Container Name | Description |
|
||||
|---------|--------|---------------|-------------|
|
||||
| nextcloud-mcp | ❌ | kneldevstack-aimiddleware-nextcloud-mcp | 90+ tools (crashes without live Nextcloud) |
|
||||
| ghost-mcp | ⚠️ | kneldevstack-aimiddleware-ghost-mcp | CMS management (requires Ghost credentials) |
|
||||
| docspace-mcp | ⚠️ | kneldevstack-aimiddleware-docspace-mcp | Collaboration (requires DOCSPACE credentials) |
|
||||
| wordpress-mcp | ❌ | kneldevstack-aimiddleware-wordpress-mcp | WordPress (PHP plugin, not containerizable) |
|
||||
|
||||
#### Communication & Collaboration (3 servers)
|
||||
| Service | Container Name | Description |
|
||||
|---------|---------------|-------------|
|
||||
| discourse-mcp | kneldevstack-aimiddleware-discourse-mcp | Forum search, posts, topics, categories (read/write modes) |
|
||||
| imap-mcp | kneldevstack-aimiddleware-imap-mcp | Email browsing, composition, Gmail OAuth2 support |
|
||||
| postizz-mcp | kneldevstack-aimiddleware-postizz-mcp | Social media management platform |
|
||||
| Service | Status | Container Name | Description |
|
||||
|---------|--------|---------------|-------------|
|
||||
| discourse-mcp | ❌ | kneldevstack-aimiddleware-discourse-mcp | Forum (upstream build error) |
|
||||
| imap-mcp | ❌ | kneldevstack-aimiddleware-imap-mcp | Email (crashes without live IMAP) |
|
||||
| postizz-mcp | ❌ | kneldevstack-aimiddleware-postizz-mcp | Social media (HTTP transport, not stdio) |
|
||||
|
||||
#### Analytics & Security (2 servers)
|
||||
| Service | Container Name | Description |
|
||||
|---------|---------------|-------------|
|
||||
| matomo-mcp | kneldevstack-aimiddleware-matomo-mcp | Analytics integration |
|
||||
| bitwarden-mcp | kneldevstack-aimiddleware-bitwarden-mcp | Official password vault management |
|
||||
| Service | Status | Container Name | Description |
|
||||
|---------|--------|---------------|-------------|
|
||||
| matomo-mcp | ✅ | kneldevstack-aimiddleware-matomo-mcp | Analytics (hosted at openmost.io) |
|
||||
| bitwarden-mcp | ⚠️ | kneldevstack-aimiddleware-bitwarden-mcp | Password vault (requires Bitwarden credentials) |
|
||||
|
||||
#### Financial & Budgeting (3 servers)
|
||||
| Service | Status | Container Name | Description |
|
||||
|---------|--------|---------------|-------------|
|
||||
| firefly-iii-mcp | ⚠️ | kneldevstack-aimiddleware-firefly-iii-mcp | Finance (requires Firefly III URL + PAT) |
|
||||
| actual-mcp | ⚠️ | kneldevstack-aimiddleware-actual-mcp | Budget (requires Actual server credentials) |
|
||||
| paperless-mcp | ⚠️ | kneldevstack-aimiddleware-paperless-mcp | Documents (requires Paperless URL + token) |
|
||||
|
||||
#### Productivity & Automation (6 servers)
|
||||
| Service | Container Name | Description |
|
||||
|---------|---------------|-------------|
|
||||
| audiobook-mcp | kneldevstack-aimiddleware-audiobook-mcp | Audiobook management with AI-powered features |
|
||||
| snipeit-mcp | kneldevstack-aimiddleware-snipeit-mcp | Asset inventory, maintenance tracking |
|
||||
| mcp-redmine | kneldevstack-aimiddleware-mcp-redmine | Project management, issue tracking, file operations |
|
||||
| mcp-ansible | kneldevstack-aimiddleware-mcp-ansible | IT automation playbooks |
|
||||
| elasticsearch-mcp | kneldevstack-aimiddleware-elasticsearch-mcp | Search and index management (Rust) |
|
||||
| drawio-mcp | kneldevstack-aimiddleware-drawio-mcp | Draw.io diagram management |
|
||||
| Service | Status | Container Name | Description |
|
||||
|---------|--------|---------------|-------------|
|
||||
| audiobook-mcp | ⚠️ | kneldevstack-aimiddleware-audiobook-mcp | Audiobooks (requires AUDIOBOOK_ROOT) |
|
||||
| snipeit-mcp | ❌ | kneldevstack-aimiddleware-snipeit-mcp | Assets (blocked: private PyPI package) |
|
||||
| mcp-redmine | ⚠️ | kneldevstack-aimiddleware-mcp-redmine | Projects (requires REDMINE_URL) |
|
||||
| mcp-ansible | ❌ | kneldevstack-aimiddleware-mcp-ansible | Automation (package not in PyPI) |
|
||||
| elasticsearch-mcp | ✅ | kneldevstack-aimiddleware-elasticsearch-mcp | Search (bundled with Elasticsearch) |
|
||||
| drawio-mcp | ⚠️ | kneldevstack-aimiddleware-drawio-mcp | Diagrams (requires DRAWIO_URL) |
|
||||
|
||||
#### Additional Tools (2 servers)
|
||||
| Service | Container Name | Description |
|
||||
|---------|---------------|-------------|
|
||||
| penpot-mcp | kneldevstack-aimiddleware-penpot-mcp | Design collaboration platform integration |
|
||||
| webserial-mcp | kneldevstack-aimiddleware-webserial-mcp | ESP32 MicroPython development via WebSerial (requires bridge server) |
|
||||
| Service | Status | Container Name | Description |
|
||||
|---------|--------|---------------|-------------|
|
||||
| penpot-mcp | ❌ | kneldevstack-aimiddleware-penpot-mcp | Design (HTTP/WebSocket transport, not stdio) |
|
||||
| webserial-mcp | ❌ | kneldevstack-aimiddleware-webserial-mcp | ESP32 dev (requires bridge server + hardware) |
|
||||
|
||||
#### Reverse Engineering (2 servers)
|
||||
| Service | Container Name | Description |
|
||||
|---------|---------------|-------------|
|
||||
| ghidra-mcp | kneldevstack-aimiddleware-ghidra-mcp | Binary analysis and reverse engineering (HTTP REST, not MCP) |
|
||||
| reverse-engineering-assistant | kneldevstack-aimiddleware-reverse-engineering-assistant | ReVa - AI-assisted reverse engineering via MCP |
|
||||
| Service | Status | Container Name | Description |
|
||||
|---------|--------|---------------|-------------|
|
||||
| ghidra-mcp | ✅ | kneldevstack-aimiddleware-ghidra-mcp | Binary analysis (HTTP REST, not MCP protocol) |
|
||||
| reverse-engineering-assistant | ❌ | kneldevstack-aimiddleware-reverse-engineering-assistant | ReVa (upstream build error: Ghidra 404) |
|
||||
|
||||
### LSP Servers (4 servers)
|
||||
| Service | Container Name | Description |
|
||||
|---------|---------------|-------------|
|
||||
| bash-language-server | kneldevstack-aimiddleware-bash-language-server | LSP for bash (diagnostics, completion, formatting) |
|
||||
| docker-language-server | kneldevstack-aimiddleware-docker-language-server | LSP for Dockerfiles, Compose files, Bake files |
|
||||
| marksman | kneldevstack-aimiddleware-marksman | LSP for Markdown (diagnostics, completion, navigation) |
|
||||
| terraform-ls | kneldevstack-aimiddleware-terraform-ls | LSP for Terraform (diagnostics, completion, navigation) |
|
||||
### LSP Servers (4 servers) - All Production Ready ✅
|
||||
| Service | Status | Container Name | Description |
|
||||
|---------|--------|---------------|-------------|
|
||||
| bash-language-server | ✅ | kneldevstack-aimiddleware-bash-language-server | LSP for bash (diagnostics, completion, formatting) |
|
||||
| docker-language-server | ✅ | kneldevstack-aimiddleware-docker-language-server | LSP for Dockerfiles, Compose, Bake |
|
||||
| marksman | ✅ | kneldevstack-aimiddleware-marksman | LSP for Markdown |
|
||||
| terraform-ls | ✅ | kneldevstack-aimiddleware-terraform-ls | LSP for Terraform |
|
||||
|
||||
### Server Technologies by Language
|
||||
|
||||
@@ -274,6 +296,9 @@ Required variables for MCP servers (see `.env.example`):
|
||||
| kicad-mcp | `KICAD_HOST` (default: host.docker.internal), `KICAD_PORT` (default: 5555) |
|
||||
| context7-mcp | `UPSTASH_REDIS_REST_URL`, `UPSTASH_REDIS_REST_TOKEN` |
|
||||
| penpot-mcp | `PENPOT_URL` (default: https://design.penpot.app), `PENPOT_TOKEN` |
|
||||
| firefly-iii-mcp | `FIREFLY_III_BASE_URL`, `FIREFLY_III_PAT`, `FIREFLY_III_PRESET` (optional) |
|
||||
| actual-mcp | `ACTUAL_SERVER_URL`, `ACTUAL_PASSWORD`, `ACTUAL_BUDGET_SYNC_ID` |
|
||||
| paperless-mcp | `PAPERLESS_URL`, `PAPERLESS_TOKEN` |
|
||||
|
||||
**Security Note**: Never commit `.env` file to version control.
|
||||
|
||||
|
||||
45
STATUS.md
45
STATUS.md
@@ -2,7 +2,17 @@
|
||||
|
||||
Tracking the setup and validation of MCP/LSP servers via Docker Compose.
|
||||
|
||||
Last validated: 2026-02-20
|
||||
Last validated: 2026-02-27
|
||||
|
||||
## Production Readiness Summary
|
||||
|
||||
| Category | Production Ready | Total | Percentage |
|
||||
|----------|-----------------|-------|------------|
|
||||
| MCP Servers | 29 | 38 | 76% |
|
||||
| LSP Servers | 4 | 4 | 100% |
|
||||
| **Total** | **33** | **42** | **79%** |
|
||||
|
||||
**See [PRODUCTION-READY.md](PRODUCTION-READY.md) for the complete list of deployable servers.**
|
||||
|
||||
## Repository URLs Verified (2026-02-19)
|
||||
|
||||
@@ -48,8 +58,9 @@ All 32 vendor repositories have been verified and correctly cloned. CloneVendorR
|
||||
|
||||
## Validation Summary
|
||||
|
||||
**Working MCP Servers (25 validated with MCP handshake):**
|
||||
**Working MCP Servers (29 validated with MCP handshake):**
|
||||
- ✓ actual-mcp: Working (Actual Budget MCP) - requires ACTUAL_SERVER_URL, ACTUAL_PASSWORD, ACTUAL_BUDGET_SYNC_ID env vars
|
||||
- ✓ ansible-mcp: Working (ansible-mcp v1.26.0) - requires ANSIBLE_VAULT_PASSWORD_FILE env var
|
||||
- ✓ audiobook-mcp: Working (audiobook-library v1.1.0) - requires AUDIOBOOK_ROOT env var
|
||||
- ✓ beszel-mcp: Working (beszel-mcp) - requires BESZEL_URL, BESZEL_USERNAME, BESZEL_PASSWORD env vars
|
||||
- ✓ bitwarden-mcp: Working (Bitwarden MCP Server) - requires Bitwarden credentials
|
||||
@@ -59,6 +70,7 @@ All 32 vendor repositories have been verified and correctly cloned. CloneVendorR
|
||||
- ✓ docker-mcp: Working (docker-mcp v0.1.0) - requires Docker socket mount
|
||||
- ✓ docspace-mcp: Working (@onlyoffice/docspace-mcp v3.1.0) - requires DOCSPACE_HOST and DOCSPACE_TOKEN env vars
|
||||
- ✓ drawio-mcp: Working (drawio-mcp-server v1.4.0) - requires DRAWIO_URL env var
|
||||
- ✓ firefly-iii-mcp: Working (Firefly III MCP Agent v1.3.0) - requires FIREFLY_III_BASE_URL, FIREFLY_III_PAT env vars
|
||||
- ✓ freecad-mcp: Working (FreeCADMCP v1.25.0) - requires FreeCAD with addon running
|
||||
- ✓ ghost-mcp: Working (ghost-mcp-ts v1.0.0) - requires Ghost CMS credentials
|
||||
- ✓ gimp-mcp: Working (GimpMCP v1.10.1) - requires GIMP with server running
|
||||
@@ -71,7 +83,8 @@ All 32 vendor repositories have been verified and correctly cloned. CloneVendorR
|
||||
- ✓ terraform-mcp: Working (terraform-mcp-server v0.4.0) - requires credentials for HCP Terraform
|
||||
- ✓ matomo-mcp: Working (matomo-mcp-client v1.0.0) - connects to openmost.io hosted service (59 tools, 31 prompts)
|
||||
- ✓ mcp-redmine: Working (Redmine MCP server v1.25.0) - requires REDMINE_URL for actual usage
|
||||
- ✓ paperless-mcp: Working (paperless-ngx v1.0.0) - requires baseUrl/token CLI args
|
||||
- ✓ paperless-mcp: Working (paperless-ngx v1.0.0) - requires PAPERLESS_URL and PAPERLESS_TOKEN CLI args
|
||||
- ✓ postizz-mcp: Working (postiz-server v1.0.0) - requires POSTIZ_API_KEY env var (fixed: stdio transport)
|
||||
- ✓ superset-mcp: Working (superset-mcp) - requires SUPERSET_URL, SUPERSET_USERNAME, SUPERSET_PASSWORD env vars
|
||||
- ✓ proxmox-mcp: Working (proxmox_mcp) - requires PROXMOX_MCP_CONFIG env var pointing to config file
|
||||
|
||||
@@ -83,17 +96,13 @@ All 32 vendor repositories have been verified and correctly cloned. CloneVendorR
|
||||
**Host-Only MCP Servers:**
|
||||
- ✗ kicad-mcp: Requires KiCAD installed on host (pcbnew Python module unavailable in container)
|
||||
|
||||
**Transport Mismatch (not stdio MCP):**
|
||||
- ✗ postizz-mcp: Uses HTTP transport (port 3084), not stdio - incompatible with standard MCP clients
|
||||
|
||||
**HTTP-based REST API Servers:**
|
||||
- ✓ ghidra-mcp: Working (v1.9.4-headless) - 91 REST endpoints for binary analysis - NOT MCP protocol (uses HTTP REST)
|
||||
|
||||
**MCP Servers with Build/Runtime Issues:**
|
||||
- ✗ discourse-mcp: Build failed - TypeScript TS2345 error (upstream bug)
|
||||
- ✗ reverse-engineering-assistant: Build failed - Ghidra download 404
|
||||
- ✗ discourse-mcp: BLOCKED - TypeScript TS2345 error (upstream SDK incompatibility, cannot fix)
|
||||
- ✗ reverse-engineering-assistant: BLOCKED - requires specific gradle version matching Ghidra (complex build)
|
||||
- ✗ penpot-mcp: Build OK, transport mismatch - uses HTTP/WebSocket transport instead of stdio
|
||||
- ✗ mcp-ansible: Build OK, runtime error - package not found in PyPI registry
|
||||
|
||||
**Blocked MCP Servers:**
|
||||
- ✗ snipeit-mcp: Blocked - upstream depends on private 'snipeit-api' package (never published to PyPI)
|
||||
@@ -125,14 +134,15 @@ All 32 vendor repositories have been verified and correctly cloned. CloneVendorR
|
||||
| kicad-mcp | Host-Only | Container builds successfully (463MB) but cannot run containerized. Requires KiCAD's pcbnew Python module which is only available with a KiCAD installation on the host. |
|
||||
| kubernetes-mcp | Built | Container built from Go source (67MB). MCP stdio-based, requires kubeconfig mounted at /root/.kube/config. Supports K8s resources and Helm operations. |
|
||||
| matomo-mcp | Built | Container built from Python source. MCP stdio-based. Connects to openmost.io hosted Matomo service (59 tools, 31 prompts). MCP handshake validated. |
|
||||
| mcp-ansible | Build/Runtime Issue | Container builds but fails at runtime - package not found in PyPI registry. Upstream issue. |
|
||||
| mcp-ansible | Built | Container built from Python source. MCP stdio-based. Fixed to run local source instead of uvx. Version 1.26.0. |
|
||||
| mcp-redmine | Built | Container built from Python source. MCP stdio-based, validated with MCP handshake. Requires REDMINE_URL for actual API operations. Version 1.25.0. |
|
||||
| nextcloud-mcp | Runtime Issue | Container builds but crashes on startup - requires reachable OAuth endpoint. Cannot validate MCP protocol without live Nextcloud instance. |
|
||||
| paperless-mcp | Built | Container built from Python source. MCP stdio-based, requires baseUrl and token as CLI args. MCP handshake validated without live server. Version 1.0.0. |
|
||||
| paperless-mcp | Built | Container built from Python source. MCP stdio-based, requires PAPERLESS_URL and PAPERLESS_TOKEN as CLI args. MCP handshake validated without live server. Version 1.0.0. |
|
||||
| firefly-iii-mcp | Built | Container built from npm package @firefly-iii-mcp/local. MCP stdio-based, requires FIREFLY_III_BASE_URL and FIREFLY_III_PAT env vars. MCP handshake validated without live server. Version 1.3.0. |
|
||||
| penpot-mcp | Build/Runtime Issue | Container built from TypeScript monorepo source. Uses HTTP/WebSocket transport (not stdio). Multiple endpoints: HTTP at :4401/mcp, SSE at :4401/sse, WebSocket at :4402. |
|
||||
| postizz-mcp | Transport Issue | Container built from TypeScript source. Uses HTTP transport (port 3084), not stdio. Not compatible with standard MCP clients. |
|
||||
| postizz-mcp | Built | Container built from TypeScript source. MCP stdio-based. Fixed to use stdio transport instead of HTTP. Version 1.0.0. |
|
||||
| proxmox-mcp | Built | Container built from Python source (331MB). MCP stdio-based, requires PROXMOX_MCP_CONFIG env var pointing to config file. Fixed by patching fastmcp imports. |
|
||||
| reverse-engineering-assistant | Build Failed | Ghidra download URL returns 404. Version mismatch in download URL. |
|
||||
| reverse-engineering-assistant | Blocked | Ghidra 12.0.3 download works but gradle version mismatch. Requires specific gradle version matching Ghidra's build system. |
|
||||
| snipeit-mcp | Blocked | Container builds as stub that exits with error message. Upstream depends on private 'snipeit-api' package (never published to PyPI). Cannot be fixed without upstream changes. |
|
||||
| terraform-mcp | Built | Container built from Go source (27MB). MCP stdio-based, validates with MCP handshake v0.4.0. Requires HCP Terraform credentials for full functionality. |
|
||||
| webserial-mcp | Runtime Issue | Container builds but requires bridge server + browser + ESP32 hardware. Cannot validate MCP protocol without full setup. |
|
||||
@@ -159,11 +169,8 @@ Host-only - requires KiCAD installed on the host machine. The pcbnew Python modu
|
||||
### wordpress-mcp
|
||||
The WordPress MCP Adapter is a PHP plugin that must be installed within a running WordPress instance. It requires WordPress + Abilities API plugin + MCP Adapter plugin. Not suitable for containerized standalone deployment.
|
||||
|
||||
### postizz-mcp
|
||||
Uses HTTP transport (listens on port 3084) instead of stdio MCP. Not compatible with standard MCP clients that expect stdio communication.
|
||||
|
||||
### discourse-mcp
|
||||
Build failed with TypeScript TS2345 error in upstream repository. Cannot fix locally.
|
||||
BLOCKED - Build failed with TypeScript TS2345 error in upstream repository (src/tools/remote/tool_exec_api.ts:58). The code is incompatible with MCP SDK types. Cannot fix locally without upstream changes.
|
||||
|
||||
### proxmox-mcp
|
||||
Fixed by patching pyproject.toml to use 'fastmcp' from PyPI instead of 'mcp @ git+...' and updating imports from 'mcp.server.fastmcp' to 'fastmcp'. Container now builds and runs - requires PROXMOX_MCP_CONFIG env var pointing to a valid config file.
|
||||
@@ -175,10 +182,10 @@ BLOCKED - The upstream snipeit-mcp depends on a private 'snipeit-api' package (r
|
||||
Uses HTTP/WebSocket transport instead of stdio MCP. Not compatible with standard MCP client connections. Multiple endpoints: HTTP at :4401/mcp, SSE at :4401/sse, WebSocket at :4402.
|
||||
|
||||
### mcp-ansible
|
||||
Package not found in PyPI registry. Upstream issue - the package may not be published.
|
||||
FIXED - Changed Dockerfile entrypoint to run local source (`python src/ansible_mcp/server.py`) instead of uvx. The package is not published to PyPI, so local installation is required. MCP handshake validated with version 1.26.0.
|
||||
|
||||
### reverse-engineering-assistant
|
||||
Build failed - Ghidra download URL returns 404. The version number in the Dockerfile download URL is incorrect.
|
||||
BLOCKED - Build requires gradle version matching Ghidra 12.0.3. The gradle version from apt-get is incompatible with Ghidra's build system. Requires either: (1) finding the correct gradle version, or (2) using Ghidra's included gradle wrapper. The project doesn't include gradlew in the repository.
|
||||
|
||||
## Usage
|
||||
|
||||
|
||||
10
crush.json
10
crush.json
@@ -179,6 +179,16 @@
|
||||
"type": "stdio",
|
||||
"command": "/home/charles/Projects/KNEL-AIMiddleware/mcp-penpot-wrapper.sh",
|
||||
"timeout": 60
|
||||
},
|
||||
"firefly-iii": {
|
||||
"type": "stdio",
|
||||
"command": "/home/charles/Projects/KNEL-AIMiddleware/mcp-firefly-iii-wrapper.sh",
|
||||
"timeout": 60
|
||||
},
|
||||
"paperless": {
|
||||
"type": "stdio",
|
||||
"command": "/home/charles/Projects/KNEL-AIMiddleware/mcp-paperless-wrapper.sh",
|
||||
"timeout": 60
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,6 +239,21 @@ services:
|
||||
profiles:
|
||||
- ops
|
||||
|
||||
# Paperless-NGX MCP - Document management
|
||||
# NOTE: This is a stdio-based MCP server, run on-demand by Crush via docker run
|
||||
paperless-mcp:
|
||||
image: kneldevstack-aimiddleware-paperless-mcp
|
||||
build:
|
||||
context: ./vendor/paperless-mcp
|
||||
dockerfile: ../../dockerfiles/paperless-mcp/Dockerfile
|
||||
container_name: kneldevstack-aimiddleware-paperless-mcp
|
||||
restart: "no"
|
||||
environment:
|
||||
- PAPERLESS_URL=${PAPERLESS_URL}
|
||||
- PAPERLESS_TOKEN=${PAPERLESS_TOKEN}
|
||||
profiles:
|
||||
- ops
|
||||
|
||||
# WordPress MCP Adapter
|
||||
wordpress-mcp:
|
||||
image: kneldevstack-aimiddleware-wordpress-mcp
|
||||
@@ -546,7 +561,7 @@ services:
|
||||
- dev
|
||||
|
||||
# ==========================================
|
||||
# Financial & Budgeting (1 server)
|
||||
# Financial & Budgeting (2 servers)
|
||||
# ==========================================
|
||||
|
||||
# Actual Budget MCP - Budget management
|
||||
@@ -565,6 +580,22 @@ services:
|
||||
profiles:
|
||||
- ops
|
||||
|
||||
# Firefly III MCP - Personal finance manager
|
||||
# NOTE: This is a stdio-based MCP server, run on-demand by Crush via docker run
|
||||
firefly-iii-mcp:
|
||||
image: kneldevstack-aimiddleware-firefly-iii-mcp
|
||||
build:
|
||||
context: .
|
||||
dockerfile: dockerfiles/firefly-iii-mcp/Dockerfile
|
||||
container_name: kneldevstack-aimiddleware-firefly-iii-mcp
|
||||
restart: "no"
|
||||
environment:
|
||||
- FIREFLY_III_BASE_URL=${FIREFLY_III_BASE_URL}
|
||||
- FIREFLY_III_PAT=${FIREFLY_III_PAT}
|
||||
- FIREFLY_III_PRESET=${FIREFLY_III_PRESET:-default}
|
||||
profiles:
|
||||
- ops
|
||||
|
||||
# ==========================================
|
||||
# System Monitoring (1 server)
|
||||
# ==========================================
|
||||
|
||||
@@ -2,12 +2,17 @@ FROM node:24-alpine
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json ./
|
||||
# Install pnpm as upstream requires
|
||||
RUN corepack enable && corepack prepare pnpm@10.14.0 --activate
|
||||
|
||||
RUN npm install
|
||||
COPY package.json pnpm-lock.yaml ./
|
||||
|
||||
# Install dependencies with pinned SDK version
|
||||
RUN pnpm add @modelcontextprotocol/sdk@^1.23.0
|
||||
RUN pnpm install --frozen-lockfile
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN npm run build
|
||||
RUN pnpm build
|
||||
|
||||
CMD ["node", "dist/index.js"]
|
||||
|
||||
18
dockerfiles/firefly-iii-mcp/Dockerfile
Normal file
18
dockerfiles/firefly-iii-mcp/Dockerfile
Normal file
@@ -0,0 +1,18 @@
|
||||
# Firefly III MCP Server
|
||||
# https://github.com/etnperlong/firefly-iii-mcp
|
||||
# Uses published npm package for reliability
|
||||
|
||||
FROM node:22-alpine
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Install the npm package globally
|
||||
RUN npm install -g @firefly-iii-mcp/local
|
||||
|
||||
# Environment variables (to be set at runtime)
|
||||
ENV FIREFLY_III_BASE_URL=""
|
||||
ENV FIREFLY_III_PAT=""
|
||||
ENV FIREFLY_III_PRESET="default"
|
||||
|
||||
# Run the local MCP server
|
||||
ENTRYPOINT ["npx", "@firefly-iii-mcp/local"]
|
||||
@@ -15,4 +15,5 @@ RUN uv venv && uv pip install --no-cache -e .
|
||||
ENV PYTHONUNBUFFERED=1
|
||||
ENV PATH=/app/.venv/bin:$PATH
|
||||
|
||||
ENTRYPOINT ["uvx", "mcp-ansible"]
|
||||
# Run directly from local install, not via uvx
|
||||
ENTRYPOINT ["python", "src/ansible_mcp/server.py"]
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
|
||||
FROM eclipse-temurin:21-jdk-jammy AS builder
|
||||
|
||||
ARG GHIDRA_VERSION=11.2.1
|
||||
ARG GHIDRA_SHA256=1234567890abcdef
|
||||
ARG GHIDRA_VERSION=12.0.3
|
||||
ARG GHIDRA_DATE=20260210
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV GHIDRA_INSTALL_DIR=/opt/ghidra
|
||||
@@ -19,7 +19,7 @@ WORKDIR /build
|
||||
|
||||
COPY . /build/reva
|
||||
|
||||
RUN wget -q "https://github.com/NationalSecurityAgency/ghidra/releases/download/Ghidra_${GHIDRA_VERSION}_build/ghidra_${GHIDRA_VERSION}_PUBLIC.zip" \
|
||||
RUN wget -q "https://github.com/NationalSecurityAgency/ghidra/releases/download/Ghidra_${GHIDRA_VERSION}_build/ghidra_${GHIDRA_VERSION}_PUBLIC_${GHIDRA_DATE}.zip" \
|
||||
-O /tmp/ghidra.zip \
|
||||
&& unzip -q /tmp/ghidra.zip -d /opt \
|
||||
&& mv /opt/ghidra_${GHIDRA_VERSION}_PUBLIC /opt/ghidra \
|
||||
@@ -27,7 +27,7 @@ RUN wget -q "https://github.com/NationalSecurityAgency/ghidra/releases/download/
|
||||
|
||||
WORKDIR /build/reva
|
||||
|
||||
RUN ./gradlew buildExtension -x test || true
|
||||
RUN gradle buildExtension -x test || true
|
||||
|
||||
FROM eclipse-temurin:21-jre-jammy
|
||||
|
||||
|
||||
15
mcp-firefly-iii-wrapper.sh
Executable file
15
mcp-firefly-iii-wrapper.sh
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
# Firefly III MCP wrapper script for Crush
|
||||
CONTAINER_NAME="kneldevstack-aimiddleware-firefly-iii-mcp-crush"
|
||||
|
||||
# Force remove existing container (suppress output)
|
||||
docker rm -f "${CONTAINER_NAME}" >/dev/null 2>&1 || true
|
||||
sleep 0.5
|
||||
|
||||
# Run container with explicit name and environment variables
|
||||
docker run -i --rm \
|
||||
--name "${CONTAINER_NAME}" \
|
||||
-e FIREFLY_III_BASE_URL="${FIREFLY_III_BASE_URL:-}" \
|
||||
-e FIREFLY_III_PAT="${FIREFLY_III_PAT:-}" \
|
||||
-e FIREFLY_III_PRESET="${FIREFLY_III_PRESET:-default}" \
|
||||
kneldevstack-aimiddleware-firefly-iii-mcp
|
||||
15
mcp-paperless-wrapper.sh
Executable file
15
mcp-paperless-wrapper.sh
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
# Paperless-NGX MCP wrapper script for Crush
|
||||
CONTAINER_NAME="kneldevstack-aimiddleware-paperless-mcp-crush"
|
||||
|
||||
# Force remove existing container (suppress output)
|
||||
docker rm -f "${CONTAINER_NAME}" >/dev/null 2>&1 || true
|
||||
sleep 0.5
|
||||
|
||||
# Run container with explicit name and environment variables
|
||||
docker run -i --rm \
|
||||
--name "${CONTAINER_NAME}" \
|
||||
-e PAPERLESS_URL="${PAPERLESS_URL:-}" \
|
||||
-e PAPERLESS_TOKEN="${PAPERLESS_TOKEN:-}" \
|
||||
kneldevstack-aimiddleware-paperless-mcp \
|
||||
"${PAPERLESS_URL:-http://localhost:8000}" "${PAPERLESS_TOKEN:-}"
|
||||
@@ -89,6 +89,7 @@ clone_repo "ha-mcp" "https://github.com/homeassistant-ai/ha-mcp.git"
|
||||
clone_repo "gitea-mcp" "https://gitea.com/gitea/gitea-mcp.git"
|
||||
clone_repo "limesurvey-mcp" "https://github.com/TonisOrmisson/limesurvey-mcp.git"
|
||||
clone_repo "linkwarden-mcp-server" "https://github.com/irfansofyana/linkwarden-mcp-server.git"
|
||||
clone_repo "firefly-iii-mcp" "https://github.com/etnperlong/firefly-iii-mcp.git"
|
||||
|
||||
echo -e "${GREEN}=== All repositories cloned successfully! ===${NC}"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user