feat: add MCP servers infrastructure with Docker Compose
- Add vendor directory for cloned MCP repositories - Create docker-compose.yml with 27 MCP/LSP servers - Implement KNELDevStack-AIMW- container naming convention - Add STATUS.md for tracking validation progress - Add AGENTS.md documentation for all configured agents - Update .gitignore to exclude vendor directory All servers categorized by function: - Design & Engineering (3) - Hosting & Infrastructure (5) - Development Tools (2) - Content Management (4) - Communication & Collaboration (3) - Analytics & Security (2) - Productivity & Automation (6) - Additional Tools (3) 💘 Generated with Crush Assisted-by: GLM-4.7 via Crush <crush@charm.land>
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
vendor/
|
||||||
176
AGENTS.md
Normal file
176
AGENTS.md
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
# AI Agents Documentation
|
||||||
|
|
||||||
|
This document tracks the AI agents and MCP servers configured in this project.
|
||||||
|
|
||||||
|
## Agents Overview
|
||||||
|
|
||||||
|
### Available MCP Servers
|
||||||
|
|
||||||
|
#### Design & Engineering (3 servers)
|
||||||
|
| Service | Container Name | Status | Description |
|
||||||
|
|---------|---------------|--------|-------------|
|
||||||
|
| kicad-mcp | KNELDevStack-AIMW-kicad-mcp | In Progress | PCB design automation with 64 tools, JLCPCB integration |
|
||||||
|
| blender-mcp | KNELDevStack-AIMW-blender-mcp | Pending | 3D modeling, materials, scenes, AI 3D model generation |
|
||||||
|
| freecad-mcp | KNELDevStack-AIMW-freecad-mcp | Pending | CAD modeling, Python execution, parts library |
|
||||||
|
|
||||||
|
#### Hosting & Infrastructure (5 servers)
|
||||||
|
| Service | Container Name | Status | Description |
|
||||||
|
|---------|---------------|--------|-------------|
|
||||||
|
| kubernetes-mcp | KNELDevStack-AIMW-kubernetes-mcp | Pending | K8s/OpenShift management (native Go implementation) |
|
||||||
|
| docker-mcp | KNELDevStack-AIMW-docker-mcp | Pending | Container and compose stack management |
|
||||||
|
| proxmox-mcp | KNELDevStack-AIMW-proxmox-mcp | Pending | Hypervisor VM/container management |
|
||||||
|
| terraform-mcp | KNELDevStack-AIMW-terraform-mcp | Pending | IaC automation, HCP Terraform, workspace management |
|
||||||
|
| cloudron-mcp | KNELDevStack-AIMW-cloudron-mcp | Pending | Self-hosted app management |
|
||||||
|
|
||||||
|
#### Development Tools (2 servers)
|
||||||
|
| Service | Container Name | Status | Description |
|
||||||
|
|---------|---------------|--------|-------------|
|
||||||
|
| bash-language-server | KNELDevStack-AIMW-bash-language-server | Pending | LSP for bash (diagnostics, completion, formatting) |
|
||||||
|
| context7-mcp | KNELDevStack-AIMW-context7-mcp | Pending | MCP server framework and SDK for documentation |
|
||||||
|
|
||||||
|
#### Content Management (4 servers)
|
||||||
|
| Service | Container Name | Status | Description |
|
||||||
|
|---------|---------------|--------|-------------|
|
||||||
|
| nextcloud-mcp | KNELDevStack-AIMW-nextcloud-mcp | Pending | 90+ tools across 8 apps (Notes, Calendar, Files, Deck, etc.) |
|
||||||
|
| ghost-mcp | KNELDevStack-AIMW-ghost-mcp | Pending | CMS post, member, newsletter management |
|
||||||
|
| docspace-mcp | KNELDevStack-AIMW-docspace-mcp | Pending | Room, file, collaboration management |
|
||||||
|
| wordpress-mcp | KNELDevStack-AIMW-wordpress-mcp | Pending | WordPress integration via Abilities API |
|
||||||
|
|
||||||
|
#### Communication & Collaboration (3 servers)
|
||||||
|
| Service | Container Name | Status | Description |
|
||||||
|
|---------|---------------|--------|-------------|
|
||||||
|
| discourse-mcp | KNELDevStack-AIMW-discourse-mcp | Pending | Forum search, posts, topics, categories (read/write modes) |
|
||||||
|
| imap-mcp | KNELDevStack-AIMW-imap-mcp | Pending | Email browsing, composition, Gmail OAuth2 support |
|
||||||
|
| postizz-mcp | KNELDevStack-AIMW-postizz-mcp | Pending | Social media management platform |
|
||||||
|
|
||||||
|
#### Analytics & Security (2 servers)
|
||||||
|
| Service | Container Name | Status | Description |
|
||||||
|
|---------|---------------|--------|-------------|
|
||||||
|
| matomo-mcp | KNELDevStack-AIMW-matomo-mcp | Pending | Analytics integration |
|
||||||
|
| bitwarden-mcp | KNELDevStack-AIMW-bitwarden-mcp | Pending | Official password vault management |
|
||||||
|
|
||||||
|
#### Productivity & Automation (6 servers)
|
||||||
|
| Service | Container Name | Status | Description |
|
||||||
|
|---------|---------------|--------|-------------|
|
||||||
|
| gimp-mcp | KNELDevStack-AIMW-gimp-mcp | Pending | Image editing with GIMP 3.0, OCR support |
|
||||||
|
| snipeit-mcp | KNELDevStack-AIMW-snipeit-mcp | Pending | Asset inventory, maintenance tracking |
|
||||||
|
| mcp-redmine | KNELDevStack-AIMW-mcp-redmine | Pending | Project management, issue tracking, file operations |
|
||||||
|
| mcp-ansible | KNELDevStack-AIMW-mcp-ansible | Pending | IT automation playbooks |
|
||||||
|
| elasticsearch-mcp | KNELDevStack-AIMW-elasticsearch-mcp | Pending | Search and index management (Rust) |
|
||||||
|
| audiobook-mcp | KNELDevStack-AIMW-audiobook-mcp | Pending | Audiobook management with AI-powered features |
|
||||||
|
|
||||||
|
#### Additional Tools (3 servers)
|
||||||
|
| Service | Container Name | Status | Description |
|
||||||
|
|---------|---------------|--------|-------------|
|
||||||
|
| drawio-mcp | KNELDevStack-AIMW-drawio-mcp | Pending | Draw.io diagram management |
|
||||||
|
| docker-language-server | KNELDevStack-AIMW-docker-language-server | Pending | Language server for Dockerfiles, Compose files, Bake files |
|
||||||
|
|
||||||
|
## Agent Capabilities
|
||||||
|
|
||||||
|
### By Language
|
||||||
|
|
||||||
|
#### TypeScript/Node.js (13 servers)
|
||||||
|
Most use `npx` for installation:
|
||||||
|
- KiCAD MCP
|
||||||
|
- Bitwarden MCP
|
||||||
|
- Discourse MCP
|
||||||
|
- Ghost MCP
|
||||||
|
- Cloudron MCP
|
||||||
|
- Kubernetes MCP
|
||||||
|
- Draw.io MCP
|
||||||
|
- Matomo MCP
|
||||||
|
- Postiz MCP
|
||||||
|
- WordPress MCP
|
||||||
|
- Audiobook MCP
|
||||||
|
- Context7 MCP
|
||||||
|
- Bash Language Server
|
||||||
|
|
||||||
|
#### Python (10 servers)
|
||||||
|
Most use `uvx` for installation:
|
||||||
|
- Blender MCP
|
||||||
|
- FreeCAD MCP
|
||||||
|
- GIMP MCP
|
||||||
|
- Docker MCP
|
||||||
|
- Proxmox MCP
|
||||||
|
- Snipe-IT MCP
|
||||||
|
- Redmine MCP
|
||||||
|
- IMAP MCP
|
||||||
|
- Ansible MCP
|
||||||
|
- Nextcloud MCP (hybrid)
|
||||||
|
|
||||||
|
#### Go (2 servers)
|
||||||
|
- Kubernetes MCP (also available via npx)
|
||||||
|
- Terraform MCP
|
||||||
|
|
||||||
|
#### Rust (1 server)
|
||||||
|
- Elasticsearch MCP
|
||||||
|
|
||||||
|
## Environment Variables Reference
|
||||||
|
|
||||||
|
Common environment variables required for MCP servers:
|
||||||
|
|
||||||
|
| Service | Required Variables |
|
||||||
|
|---------|-------------------|
|
||||||
|
| bitwarden-mcp | `BITWARDEN_CLIENT_ID`, `BITWARDEN_CLIENT_SECRET`, `BITWARDEN_PASSWORD`, `BITWARDEN_SERVER_URL` |
|
||||||
|
| discourse-mcp | `DISCOURSE_URL`, `DISCOURSE_API_KEY`, `DISCOURSE_API_USERNAME` |
|
||||||
|
| ghost-mcp | `GHOST_API_URL`, `GHOST_ADMIN_API_KEY` |
|
||||||
|
| cloudron-mcp | `CLOUDRON_URL`, `CLOUDRON_TOKEN` |
|
||||||
|
| nextcloud-mcp | `NEXTCLOUD_HOST`, `NEXTCLOUD_USERNAME`, `NEXTCLOUD_APP_PASSWORD` |
|
||||||
|
| proxmox-mcp | `PROXMOX_HOST`, `PROXMOX_USER`, `PROXMOX_TOKEN`, `PROXMOX_NODE` |
|
||||||
|
| snipeit-mcp | `SNIPEIT_URL`, `SNIPEIT_TOKEN` |
|
||||||
|
| redmine-mcp | `REDMINE_URL`, `REDMINE_API_KEY` |
|
||||||
|
| wordpress-mcp | `WORDPRESS_URL`, `WORDPRESS_USERNAME`, `WORDPRESS_APPLICATION_PASSWORD` |
|
||||||
|
| docspace-mcp | `DOCSPACE_HOST`, `DOCSPACE_TOKEN` |
|
||||||
|
| imap-mcp | `IMAP_SERVER`, `IMAP_PORT`, `IMAP_USERNAME`, `IMAP_PASSWORD` |
|
||||||
|
| postizz-mcp | `POSTIZ_API_KEY`, `POSTIZ_URL` |
|
||||||
|
| matomo-mcp | `MATOMO_URL`, `MATOMO_TOKEN` |
|
||||||
|
| elasticsearch-mcp | `ELASTICSEARCH_URL`, `ELASTICSEARCH_USERNAME`, `ELASTICSEARCH_PASSWORD` |
|
||||||
|
| context7-mcp | `UPSTASH_REDIS_REST_URL`, `UPSTASH_REDIS_REST_TOKEN` |
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
To start an agent:
|
||||||
|
```bash
|
||||||
|
docker compose up -d <service-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
Example:
|
||||||
|
```bash
|
||||||
|
docker compose up -d kicad-mcp
|
||||||
|
```
|
||||||
|
|
||||||
|
To view logs:
|
||||||
|
```bash
|
||||||
|
docker compose logs -f <service-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
To stop an agent:
|
||||||
|
```bash
|
||||||
|
docker compose stop <service-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Development Notes
|
||||||
|
|
||||||
|
- All containers use the prefix `KNELDevStack-AIMW-` for easy identification
|
||||||
|
- Container names are in PascalCase for readability
|
||||||
|
- Service names are lowercase for Docker Compose compatibility
|
||||||
|
- Each agent is validated individually before moving to the next
|
||||||
|
- Vendor directory is gitignored to avoid committing cloned repositories
|
||||||
|
|
||||||
|
## Validation Checklist
|
||||||
|
|
||||||
|
For each agent, verify:
|
||||||
|
- [ ] Container builds successfully
|
||||||
|
- [ ] Container starts without errors
|
||||||
|
- [ ] Logs show proper initialization
|
||||||
|
- [ ] Environment variables are correctly set (if required)
|
||||||
|
- [ ] MCP protocol handshake completes
|
||||||
|
- [ ] Tools are registered and available
|
||||||
|
- [ ] Resources are accessible (if applicable)
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
- [Model Context Protocol](https://modelcontextprotocol.io/)
|
||||||
|
- [MCP SDK](https://github.com/modelcontextprotocol/sdk)
|
||||||
|
- [AIWorkStack-dev](https://github.com/stars/ReachableCEO/lists/aiworkstack-dev)
|
||||||
|
- [AIWorkStack-ops](https://github.com/stars/ReachableCEO/lists/aiworkstack-ops)
|
||||||
57
STATUS.md
Normal file
57
STATUS.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# MCP Servers Setup Status
|
||||||
|
|
||||||
|
Tracking the setup and validation of MCP/LSP servers via Docker Compose.
|
||||||
|
|
||||||
|
| Repository | Status | Notes |
|
||||||
|
|------------|--------|-------|
|
||||||
|
| KiCAD-MCP-Server | Pending | |
|
||||||
|
| freecad-mcp | Pending | |
|
||||||
|
| blender-mcp | Pending | |
|
||||||
|
| context7 | Pending | |
|
||||||
|
| gimp-mcp | Pending | |
|
||||||
|
| bash-language-server | Pending | |
|
||||||
|
| docker-language-server | Pending | |
|
||||||
|
| drawio-mcp-server | Pending | |
|
||||||
|
| matomo-mcp-client | Pending | |
|
||||||
|
| imap-mcp | Pending | |
|
||||||
|
| mcp-redmine | Pending | |
|
||||||
|
| ghost-mcp | Pending | |
|
||||||
|
| discourse-mcp | Pending | |
|
||||||
|
| mcp-cloudron | Pending | |
|
||||||
|
| postizz-MCP | Pending | |
|
||||||
|
| snipeit-mcp | Pending | |
|
||||||
|
| nextcloud-mcp-server | Pending | |
|
||||||
|
| docspace-mcp | Pending | |
|
||||||
|
| docker-mcp | Pending | |
|
||||||
|
| kubernetes-mcp-server | Pending | |
|
||||||
|
| ProxmoxMCP | Pending | |
|
||||||
|
| terraform-mcp-server | Pending | |
|
||||||
|
| mcp-ansible | Pending | |
|
||||||
|
| mcp-server (Bitwarden) | Pending | |
|
||||||
|
| mcp-adapter (WordPress) | Pending | |
|
||||||
|
| audiobook-mcp-server | Pending | |
|
||||||
|
| mcp-server-elasticsearch | Pending | |
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
To build and start a specific server:
|
||||||
|
```bash
|
||||||
|
docker compose up -d <service-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
To view logs:
|
||||||
|
```bash
|
||||||
|
docker compose logs -f <service-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
To stop a server:
|
||||||
|
```bash
|
||||||
|
docker compose stop <service-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
To rebuild a server after changes:
|
||||||
|
```bash
|
||||||
|
docker compose build --no-cache <service-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: Use lowercase service names from the compose file. Container names will still be prefixed with CDS-AIMW-.
|
||||||
422
docker-compose.yml
Normal file
422
docker-compose.yml
Normal file
@@ -0,0 +1,422 @@
|
|||||||
|
services:
|
||||||
|
# ==========================================
|
||||||
|
# Design & Engineering (3 servers)
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# KiCAD MCP - PCB design automation
|
||||||
|
kicad-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/KiCAD-MCP-Server
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-kicad-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- NODE_ENV=production
|
||||||
|
command: ["node", "dist/index.js"]
|
||||||
|
profiles:
|
||||||
|
- dev
|
||||||
|
|
||||||
|
# Blender MCP - 3D modeling and materials
|
||||||
|
blender-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/blender-mcp
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-blender-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- PYTHONUNBUFFERED=1
|
||||||
|
command: ["uvx", "blender-mcp"]
|
||||||
|
profiles:
|
||||||
|
- dev
|
||||||
|
|
||||||
|
# FreeCAD MCP - CAD modeling
|
||||||
|
freecad-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/freecad-mcp
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-freecad-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- PYTHONUNBUFFERED=1
|
||||||
|
command: ["uvx", "freecad-mcp"]
|
||||||
|
profiles:
|
||||||
|
- dev
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# Hosting & Infrastructure (5 servers)
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Kubernetes MCP - K8s/OpenShift management
|
||||||
|
kubernetes-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/kubernetes-mcp-server
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-kubernetes-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "8081:8080"
|
||||||
|
volumes:
|
||||||
|
- ~/.kube/config:/root/.kube/config:ro
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# Docker MCP - Container and compose management
|
||||||
|
docker-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/docker-mcp
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-docker-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- ~/.docker/config.json:/root/.docker/config.json:ro
|
||||||
|
environment:
|
||||||
|
- PYTHONUNBUFFERED=1
|
||||||
|
command: ["uvx", "docker-mcp"]
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# Proxmox MCP - Hypervisor management
|
||||||
|
proxmox-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/ProxmoxMCP
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-proxmox-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- PYTHONUNBUFFERED=1
|
||||||
|
- PROXMOX_HOST=${PROXMOX_HOST}
|
||||||
|
- PROXMOX_USER=${PROXMOX_USER}
|
||||||
|
- PROXMOX_TOKEN=${PROXMOX_TOKEN}
|
||||||
|
- PROXMOX_NODE=${PROXMOX_NODE}
|
||||||
|
command: ["uvx", "proxmox-mcp"]
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# Terraform MCP - IaC automation
|
||||||
|
terraform-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/terraform-mcp-server
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
target: dev
|
||||||
|
container_name: KNELDevStack-AIMW-terraform-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- HOME=/terraform
|
||||||
|
volumes:
|
||||||
|
- ~/.terraform.d:/terraform/.terraform.d:ro
|
||||||
|
- ./terraform-cache:/terraform/.terraform.cache
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# Cloudron MCP - Self-hosted app management
|
||||||
|
cloudron-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/mcp-cloudron
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-cloudron-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- CLOUDRON_URL=${CLOUDRON_URL}
|
||||||
|
- CLOUDRON_TOKEN=${CLOUDRON_TOKEN}
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# Development Tools (2 servers)
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Bash Language Server - LSP for bash
|
||||||
|
bash-language-server:
|
||||||
|
build:
|
||||||
|
context: ./vendor/bash-language-server
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-bash-language-server
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "8082:8080"
|
||||||
|
command: ["npm", "start"]
|
||||||
|
profiles:
|
||||||
|
- dev
|
||||||
|
|
||||||
|
# Context7 MCP - Documentation framework
|
||||||
|
context7-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/context7
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-context7-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- UPSTASH_REDIS_REST_URL=${UPSTASH_REDIS_REST_URL}
|
||||||
|
- UPSTASH_REDIS_REST_TOKEN=${UPSTASH_REDIS_REST_TOKEN}
|
||||||
|
command: ["node", "packages/mcp/dist/index.js", "--transport", "stdio"]
|
||||||
|
profiles:
|
||||||
|
- dev
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# Content Management (4 servers)
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Nextcloud MCP - 90+ tools across 8 apps
|
||||||
|
nextcloud-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/nextcloud-mcp-server
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-nextcloud-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- PYTHONUNBUFFERED=1
|
||||||
|
- NEXTCLOUD_HOST=${NEXTCLOUD_HOST}
|
||||||
|
- NEXTCLOUD_USERNAME=${NEXTCLOUD_USERNAME}
|
||||||
|
- NEXTCLOUD_APP_PASSWORD=${NEXTCLOUD_APP_PASSWORD}
|
||||||
|
ports:
|
||||||
|
- "8083:8080"
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# Ghost MCP - CMS management
|
||||||
|
ghost-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/ghost-mcp
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-ghost-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- GHOST_API_URL=${GHOST_API_URL}
|
||||||
|
- GHOST_ADMIN_API_KEY=${GHOST_ADMIN_API_KEY}
|
||||||
|
command: ["npx", "-y", "@fanyangmeng/ghost-mcp"]
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# ONLYOFFICE DocSpace MCP - Room and file management
|
||||||
|
docspace-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/docspace-mcp
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-docspace-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- DOCSPACE_HOST=${DOCSPACE_HOST}
|
||||||
|
- DOCSPACE_TOKEN=${DOCSPACE_TOKEN}
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# WordPress MCP Adapter
|
||||||
|
wordpress-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/mcp-adapter
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-wordpress-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- WORDPRESS_URL=${WORDPRESS_URL}
|
||||||
|
- WORDPRESS_USERNAME=${WORDPRESS_USERNAME}
|
||||||
|
- WORDPRESS_APPLICATION_PASSWORD=${WORDPRESS_APPLICATION_PASSWORD}
|
||||||
|
command: ["npx", "-y", "@wordpress/mcp-adapter"]
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# Communication & Collaboration (3 servers)
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Discourse MCP - Forum integration
|
||||||
|
discourse-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/discourse-mcp
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-discourse-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- DISCOURSE_URL=${DISCOURSE_URL}
|
||||||
|
- DISCOURSE_API_KEY=${DISCOURSE_API_KEY}
|
||||||
|
- DISCOURSE_API_USERNAME=${DISCOURSE_API_USERNAME}
|
||||||
|
command: ["npx", "-y", "@discourse/mcp"]
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# IMAP MCP - Email processing
|
||||||
|
imap-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/imap-mcp
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-imap-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- PYTHONUNBUFFERED=1
|
||||||
|
- IMAP_SERVER=${IMAP_SERVER}
|
||||||
|
- IMAP_PORT=${IMAP_PORT:-993}
|
||||||
|
- IMAP_USERNAME=${IMAP_USERNAME}
|
||||||
|
- IMAP_PASSWORD=${IMAP_PASSWORD}
|
||||||
|
command: ["uvx", "imap-mcp"]
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# Postiz MCP - Social media management
|
||||||
|
postizz-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/postizz-MCP
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-postizz-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- POSTIZ_API_KEY=${POSTIZ_API_KEY}
|
||||||
|
- POSTIZ_URL=${POSTIZ_URL}
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# Analytics & Security (2 servers)
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Matomo MCP Client
|
||||||
|
matomo-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/matomo-mcp-client
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-matomo-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- MATOMO_URL=${MATOMO_URL}
|
||||||
|
- MATOMO_TOKEN=${MATOMO_TOKEN}
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# Bitwarden MCP - Password vault
|
||||||
|
bitwarden-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/mcp-server
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-bitwarden-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- BITWARDEN_CLIENT_ID=${BITWARDEN_CLIENT_ID}
|
||||||
|
- BITWARDEN_CLIENT_SECRET=${BITWARDEN_CLIENT_SECRET}
|
||||||
|
- BITWARDEN_PASSWORD=${BITWARDEN_PASSWORD}
|
||||||
|
- BITWARDEN_SERVER_URL=${BITWARDEN_SERVER_URL:-https://vault.bitwarden.com}
|
||||||
|
command: ["npx", "-y", "@bitwarden/mcp-server"]
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# Productivity & Automation (6 servers)
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# GIMP MCP - Image editing
|
||||||
|
gimp-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/gimp-mcp
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-gimp-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- PYTHONUNBUFFERED=1
|
||||||
|
command: ["uvx", "gimp-mcp"]
|
||||||
|
profiles:
|
||||||
|
- dev
|
||||||
|
|
||||||
|
# Snipe-IT MCP - Asset inventory
|
||||||
|
snipeit-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/snipeit-mcp
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-snipeit-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- PYTHONUNBUFFERED=1
|
||||||
|
- SNIPEIT_URL=${SNIPEIT_URL}
|
||||||
|
- SNIPEIT_TOKEN=${SNIPEIT_TOKEN}
|
||||||
|
command: ["uvx", "snipeit-mcp"]
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# Redmine MCP - Project management
|
||||||
|
mcp-redmine:
|
||||||
|
build:
|
||||||
|
context: ./vendor/mcp-redmine
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-mcp-redmine
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- PYTHONUNBUFFERED=1
|
||||||
|
- REDMINE_URL=${REDMINE_URL}
|
||||||
|
- REDMINE_API_KEY=${REDMINE_API_KEY}
|
||||||
|
command: ["uvx", "mcp-redmine"]
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# Ansible MCP - IT automation
|
||||||
|
mcp-ansible:
|
||||||
|
build:
|
||||||
|
context: ./vendor/mcp-ansible
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-mcp-ansible
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- PYTHONUNBUFFERED=1
|
||||||
|
volumes:
|
||||||
|
- ./ansible-playbooks:/playbooks:ro
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
command: ["uvx", "mcp-ansible"]
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# Elasticsearch MCP
|
||||||
|
elasticsearch-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/mcp-server-elasticsearch
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-elasticsearch-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- ELASTICSEARCH_URL=${ELASTICSEARCH_URL:-http://localhost:9200}
|
||||||
|
- ELASTICSEARCH_USERNAME=${ELASTICSEARCH_USERNAME}
|
||||||
|
- ELASTICSEARCH_PASSWORD=${ELASTICSEARCH_PASSWORD}
|
||||||
|
ports:
|
||||||
|
- "8084:8080"
|
||||||
|
profiles:
|
||||||
|
- ops
|
||||||
|
|
||||||
|
# Audiobook MCP Server
|
||||||
|
audiobook-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/audiobook-mcp-server
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-audiobook-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- AUDIOBOOK_LIBRARY_PATH=${AUDIOBOOK_LIBRARY_PATH:-/audiobooks}
|
||||||
|
volumes:
|
||||||
|
- ${AUDIOBOOK_LIBRARY_PATH:-/audiobooks}:/audiobooks
|
||||||
|
command: ["npx", "-y", "audiobook-mcp-server"]
|
||||||
|
profiles:
|
||||||
|
- dev
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# Additional Tools (3 servers)
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Draw.io MCP Server
|
||||||
|
drawio-mcp:
|
||||||
|
build:
|
||||||
|
context: ./vendor/drawio-mcp-server
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-drawio-mcp
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- DRAWIO_URL=${DRAWIO_URL:-https://app.diagrams.net}
|
||||||
|
command: ["npx", "-y", "drawio-mcp-server"]
|
||||||
|
profiles:
|
||||||
|
- dev
|
||||||
|
|
||||||
|
# Docker Language Server
|
||||||
|
docker-language-server:
|
||||||
|
build:
|
||||||
|
context: ./vendor/docker-language-server
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: KNELDevStack-AIMW-docker-language-server
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "8085:8080"
|
||||||
|
profiles:
|
||||||
|
- dev
|
||||||
Reference in New Issue
Block a user