feat: update fleet to tested MCPs + add 10 new MCPs with Dockerfiles + Woodpecker CI

This commit is contained in:
Tobias J. Endres 2026-06-23 15:09:54 +02:00
parent 1d06ba2209
commit 2078644d69
34 changed files with 527 additions and 357 deletions

View file

@ -2,75 +2,125 @@ when:
- branch: main
event: push
steps:
build-forgejo:
variables:
- &build-step
image: docker:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
FORGEJO_REGISTRY_TOKEN:
from_secret: forgejo_registry_token
steps:
build-forgejo:
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-forgejo:latest -f forgejo/Dockerfile forgejo/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-forgejo:latest
build-woodpecker:
image: docker:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
FORGEJO_REGISTRY_TOKEN:
from_secret: forgejo_registry_token
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-woodpecker:latest -f woodpecker/Dockerfile woodpecker/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-woodpecker:latest
build-semaphore:
image: docker:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
FORGEJO_REGISTRY_TOKEN:
from_secret: forgejo_registry_token
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-semaphore:latest -f semaphore/Dockerfile semaphore/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-semaphore:latest
build-github:
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker pull ghcr.io/github/github-mcp-server:latest
- docker tag ghcr.io/github/github-mcp-server:latest forgejo.corentic.eu/corentic/mcp-fleet-github:latest
- docker push forgejo.corentic.eu/corentic/mcp-fleet-github:latest
build-postgresql:
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-postgresql:latest -f postgresql/Dockerfile postgresql/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-postgresql:latest
build-portainer:
image: docker:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
FORGEJO_REGISTRY_TOKEN:
from_secret: forgejo_registry_token
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-portainer:latest -f portainer/Dockerfile portainer/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-portainer:latest
build-github:
image: docker:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
FORGEJO_REGISTRY_TOKEN:
from_secret: forgejo_registry_token
build-nginx-proxy-manager:
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-github:latest -f github/Dockerfile github/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-github:latest
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-nginx-proxy-manager:latest -f nginx-proxy-manager/Dockerfile nginx-proxy-manager/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-nginx-proxy-manager:latest
build-postgresql:
image: docker:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
FORGEJO_REGISTRY_TOKEN:
from_secret: forgejo_registry_token
build-taiga:
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-postgresql:latest -f postgresql/Dockerfile postgresql/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-postgresql:latest
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-taiga:latest -f taiga/Dockerfile taiga/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-taiga:latest
build-nextcloud:
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-nextcloud:latest -f nextcloud/Dockerfile nextcloud/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-nextcloud:latest
build-kdrive:
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-kdrive:latest -f kdrive/Dockerfile kdrive/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-kdrive:latest
build-kontist:
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-kontist:latest -f kontist/Dockerfile kontist/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-kontist:latest
build-bitwarden:
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-bitwarden:latest -f bitwarden/Dockerfile bitwarden/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-bitwarden:latest
build-networking:
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-networking:latest -f networking/Dockerfile networking/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-networking:latest
build-filesystem:
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-filesystem:latest -f filesystem/Dockerfile filesystem/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-filesystem:latest
build-docker:
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-docker:latest -f docker/Dockerfile docker/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-docker:latest
build-web-search:
<<: *build-step
commands:
- docker login forgejo.corentic.eu -u tobi -p $FORGEJO_REGISTRY_TOKEN
- docker build -t forgejo.corentic.eu/corentic/mcp-fleet-web-search:latest -f web-search/Dockerfile web-search/
- docker push forgejo.corentic.eu/corentic/mcp-fleet-web-search:latest

11
bitwarden/Dockerfile Normal file
View file

@ -0,0 +1,11 @@
FROM node:22-slim
RUN apt-get update && apt-get install -y --no-install-recommends curl unzip && rm -rf /var/lib/apt/lists/*
RUN curl -fsSL "https://github.com/bitwarden/clients/releases/download/cli-v2025.4.0/bw-linux-2025.4.0.zip" -o /tmp/bw.zip && unzip -o /tmp/bw.zip -d /usr/local/bin && rm /tmp/bw.zip && chmod +x /usr/local/bin/bw
RUN npm install -g mcp-proxy@6.5.2 @bitwarden/mcp-server@2026.5.1
ENV BW_API_BASE_URL=
ENV BW_IDENTITY_URL=
ENV BW_CLIENT_ID=
ENV BW_CLIENT_SECRET=
ENV BW_PASSWORD=
EXPOSE 8112
CMD ["mcp-proxy", "--port", "8112", "--host", "0.0.0.0", "--", "mcp-server-bitwarden"]

37
bitwarden/README.md Normal file
View file

@ -0,0 +1,37 @@
# bitwarden-mcp
MCP server for Bitwarden/Vaultwarden vault operations.
Source: [`@bitwarden/mcp-server`](https://npm.im/@bitwarden/mcp-server)
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `BW_API_BASE_URL` | Yes | Self-hosted Vaultwarden API URL (e.g. `https://vault.corentic.eu/api`) |
| `BW_IDENTITY_URL` | Yes | Self-hosted Vaultwarden identity URL (e.g. `https://vault.corentic.eu/identity`) |
| `BW_CLIENT_ID` | Yes | Bitwarden client ID (from Admin Panel → API Keys) |
| `BW_CLIENT_SECRET` | Yes | Bitwarden client secret |
| `BW_PASSWORD` | Yes | Vault master password |
| `BW_SESSION` | No | Session key (optional, obtained via `bw unlock --raw`) |
## Usage
```bash
docker run -d \
--name bitwarden-mcp \
-p 8112:8112 \
-e BW_API_BASE_URL=https://vault.corentic.eu/api \
-e BW_IDENTITY_URL=https://vault.corentic.eu/identity \
-e BW_CLIENT_ID=user_xxx \
-e BW_CLIENT_SECRET=your_secret \
-e BW_PASSWORD=master_password \
forgejo.corentic.eu/corentic/mcp-fleet-bitwarden:latest
```
## Tools
- `list_folders`, `create_folder` — Folder management
- `list_items`, `search_items` — Item listing/search
- `get_item` — Get item details
- `create_item`, `edit_item`, `delete_item` — CRUD operations

6
docker/Dockerfile Normal file
View file

@ -0,0 +1,6 @@
FROM node:22-slim
RUN apt-get update && apt-get install -y --no-install-recommends docker.io && rm -rf /var/lib/apt/lists/*
RUN npm install -g mcp-proxy@6.5.2 mcp-server-docker
EXPOSE 8115
VOLUME /var/run/docker.sock
CMD ["mcp-proxy", "--port", "8115", "--host", "0.0.0.0", "--", "mcp-server-docker"]

25
docker/README.md Normal file
View file

@ -0,0 +1,25 @@
# docker-mcp
MCP server for Docker container management.
Source: [`mcp-server-docker`](https://npm.im/mcp-server-docker)
## Environment Variables
None required. Mount the Docker socket:
```bash
docker run -d \
--name docker-mcp \
-p 8115:8115 \
-v /var/run/docker.sock:/var/run/docker.sock \
forgejo.corentic.eu/corentic/mcp-fleet-docker:latest
```
## Tools
- `list_containers` — List running containers
- `inspect_container` — Container details
- `list_images` — List Docker images
- `exec_command` — Execute command in container
- `container_logs` — Fetch container logs

4
filesystem/Dockerfile Normal file
View file

@ -0,0 +1,4 @@
FROM node:22-slim
RUN npm install -g mcp-proxy@6.5.2 @modelcontextprotocol/server-filesystem
EXPOSE 8114
CMD ["mcp-proxy", "--port", "8114", "--host", "0.0.0.0", "--", "mcp-server-filesystem"]

25
filesystem/README.md Normal file
View file

@ -0,0 +1,25 @@
# filesystem-mcp
MCP server for filesystem operations (read, write, search files).
Source: [`@modelcontextprotocol/server-filesystem`](https://npm.im/@modelcontextprotocol/server-filesystem)
## Environment Variables
None required. Mount the directory you want to expose:
```bash
docker run -d \
--name filesystem-mcp \
-p 8114:8114 \
-v /path/to/expose:/workspace \
forgejo.corentic.eu/corentic/mcp-fleet-filesystem:latest
```
## Tools
- `read_file` — Read file contents
- `write_file` — Write/create files
- `search_files` — Search files by pattern
- `list_directory` — List directory contents
- `get_file_info` — File metadata

View file

@ -1,7 +1,4 @@
FROM node:22-slim
RUN npm install -g mcp-proxy@6.5.2 @openmanbo/forgejo-mcp@0.1.0
EXPOSE 8101
CMD ["mcp-proxy", "--port", "8101", "--host", "0.0.0.0", "--", "forgejo-mcp"]

View file

@ -10,7 +10,6 @@ Source: [`@openmanbo/forgejo-mcp`](https://npm.im/@openmanbo/forgejo-mcp)
|----------|----------|-------------|
| `FORGEJO_URL` | Yes | Forgejo instance URL (e.g. `https://forgejo.corentic.eu`) |
| `FORGEJO_TOKEN` | Yes | Forgejo API token or personal access token |
| `FORGEJO_USERNAME` | No | Username for certain operations |
## Usage
@ -20,48 +19,12 @@ docker run -d \
-p 8101:8101 \
-e FORGEJO_URL=https://forgejo.corentic.eu \
-e FORGEJO_TOKEN=your_token \
-e FORGEJO_USERNAME=tobi \
forgejo.corentic.eu/corentic/mcp-fleet-forgejo:latest
```
## Tools
### Issues
- **`search_issues`** — Search issues/PRs across all repos. Params: `q`, `type` (issues/pulls), `state` (open/closed), `labels`, `owner`, `assigned`, `created`, `mentioned`, `since`, `before`, `page`, `limit`
- **`list_issues`** — List issues in a repo. Params: `owner`, `repo`, `state`, `type`, `labels`, `page`, `limit`
- **`get_issue`** — Get issue/PR details. Params: `owner`, `repo`, `index`
- **`create_issue`** — Create issue. Params: `owner`, `repo`, `title`, `body`, `assignees`, `labels`, `milestone`
- **`edit_issue`** — Edit issue. Params: `owner`, `repo`, `index`, `title`, `body`, `state`, `assignees`, `milestone`
- **`list_issue_comments`** — List comments. Params: `owner`, `repo`, `index`, `page`, `limit`
- **`create_comment`** — Add comment. Params: `owner`, `repo`, `index`, `body`
### Repositories
- **`search_repos`** — Search repos. Params: `q`, `topic`, `include_desc`, `owner`, `is_private`, `archived`, `page`, `limit`
- **`get_repo`** — Get repo details. Params: `owner`, `repo`
### Pull Requests
- **`list_pull_requests`** — List PRs. Params: `owner`, `repo`, `state`, `sort`, `labels`, `milestone`, `page`, `limit`
- **`get_pull_request`** — Get PR details. Params: `owner`, `repo`, `index`
- **`create_pull_request`** — Create PR. Params: `owner`, `repo`, `title`, `body`, `head`, `base`, `assignees`, `labels`, `milestone`
- **`edit_pull_request`** — Update PR. Params: `owner`, `repo`, `index`, `title`, `body`, `state`, `base`, `assignees`, `labels`, `milestone`
- **`merge_pull_request`** — Merge PR. Params: `owner`, `repo`, `index`, `Do` (merge/rebase/squash), `delete_branch_after_merge`, `force_merge`, `merge_when_checks_succeed`
- **`get_pull_request_diff`** — Get PR diff. Params: `owner`, `repo`, `index`
- **`get_pull_request_files`** — Get changed files. Params: `owner`, `repo`, `index`, `skip`, `limit`
- **`update_pull_request_branch`** — Update PR branch with base. Params: `owner`, `repo`, `index`, `style` (rebase/merge)
### Pull Request Reviews
- **`list_pull_request_reviews`** — List reviews. Params: `owner`, `repo`, `index`, `page`, `limit`
- **`get_pull_request_review`** — Get review details. Params: `owner`, `repo`, `index`, `review_id`
- **`create_pull_request_review`** — Create/submit review. Params: `owner`, `repo`, `index`, `event` (APPROVED/REQUEST_CHANGES/COMMENT/PENDING), `body`, `commit_id`, `comments[]` (line-level)
- **`submit_pull_request_review`** — Submit pending review. Params: `owner`, `repo`, `index`, `review_id`, `event`, `body`
- **`delete_pull_request_review`** — Delete review. Params: `owner`, `repo`, `index`, `review_id`
- **`dismiss_pull_request_review`** — Dismiss review. Params: `owner`, `repo`, `index`, `review_id`, `message`
- **`get_pull_request_review_comments`** — List review comments. Params: `owner`, `repo`, `index`, `review_id`
### Users & Notifications
- **`get_user`** — Get authenticated user profile
- **`get_user_info`** — Get user profile by login. Params: `username`
- **`get_git_token`** — Get git credentials for cloning
- **`list_notifications`** — List notifications. Params: `all`, `since`, `before`, `page`, `limit`
- **`mark_notification_read`** — Mark notification read. Params: `id`
- **`mark_all_notifications_read`** — Mark all read. Params: `last_read_at`
- Issues: search, list, get, create, edit, comments
- Repositories: search, get
- Pull requests: list, get, create, edit, merge, diff, files, reviews
- Users & notifications: profile, notifications

View file

@ -1,7 +1,3 @@
FROM node:22-slim
RUN npm install -g mcp-proxy@6.5.2 @modelcontextprotocol/server-github@2025.4.8
FROM ghcr.io/github/github-mcp-server:latest
ENV GITHUB_PERSONAL_ACCESS_TOKEN=
EXPOSE 8104
CMD ["mcp-proxy", "--port", "8104", "--host", "0.0.0.0", "--", "mcp-server-github"]

View file

@ -1,8 +1,8 @@
# github-mcp
MCP server for the GitHub API.
MCP server for the GitHub API. Uses the official Docker image from GitHub.
Source: [`@modelcontextprotocol/server-github`](https://www.npmjs.com/package/@modelcontextprotocol/server-github) (deprecated)
Source: [`ghcr.io/github/github-mcp-server`](https://github.com/github/github-mcp-server)
## Environment Variables
@ -20,55 +20,8 @@ docker run -d \
forgejo.corentic.eu/corentic/mcp-fleet-github:latest
```
This MCP uses stdio transport (no mcp-proxy). Clients connect directly via stdio.
## Tools
### Repositories
- **`create_repository`** — Create a GitHub repository. Params: `name`, `description`, `private`, `autoInit`
- **`search_repositories`** — Search for GitHub repositories. Params: `query`, `search_options` (sort, order, per_page, page)
- **`fork_repository`** — Fork a repository. Params: `owner`, `repo`, `organization`
- **`get_repository`** — Get repository details. Params: `owner`, `repo`
- **`list_repositories`** — List repositories for user/org. Params: `owner`, `type`, `sort`, `direction`, `per_page`, `page`
### Pull Requests
- **`get_pull_request`** — Get PR details. Params: `owner`, `repo`, `pull_number`
- **`list_pull_requests`** — List PRs. Params: `owner`, `repo`, `state`, `head`, `base`, `sort`, `direction`, `per_page`, `page`
- **`create_pull_request`** — Create PR. Params: `owner`, `repo`, `title`, `head`, `base`, `body`, `draft`, `maintainer_can_modify`
- **`merge_pull_request`** — Merge PR. Params: `owner`, `repo`, `pull_number`, `commit_title`, `commit_message`, `merge_method` (merge/squash/rebase)
- **`get_pull_request_files`** — List changed files in a PR. Params: `owner`, `repo`, `pull_number`
- **`get_pull_request_status`** — Get combined status of all status checks for a PR. Params: `owner`, `repo`, `pull_number`
- **`update_pull_request_branch`** — Update PR branch with latest base branch. Params: `owner`, `repo`, `pull_number`, `expected_head_sha`
- **`get_pull_request_comments`** — List review comments on a PR. Params: `owner`, `repo`, `pull_number`
- **`create_pull_request_review`** — Create a review on a PR. Params: `owner`, `repo`, `pull_number`, `body`, `event` (APPROVE/REQUEST_CHANGES/COMMENT), `comments[]`
- **`list_pull_request_reviews`** — List reviews on a PR. Params: `owner`, `repo`, `pull_number`
### Issues
- **`create_issue`** — Create issue. Params: `owner`, `repo`, `title`, `body`, `assignees`, `labels`, `milestone`
- **`list_issues`** — List issues. Params: `owner`, `repo`, `state`, `labels`, `sort`, `direction`, `since`, `per_page`, `page`
- **`add_issue_comment`** — Add comment. Params: `owner`, `repo`, `issue_number`, `body`
- **`search_issues`** — Search issues across GitHub. Params: `q`, `sort`, `order`, `per_page`, `page`
- **`get_issue`** — Get issue details. Params: `owner`, `repo`, `issue_number`
- **`update_issue`** — Update issue. Params: `owner`, `repo`, `issue_number`, `title`, `body`, `state`, `labels`, `assignees`, `milestone`
### Actions
- **`list_workflows`** — List workflows in a repo. Params: `owner`, `repo`, `per_page`, `page`
- **`list_workflow_runs`** — List workflow runs. Params: `owner`, `repo`, `workflow_id`, `branch`, `status`, `per_page`, `page`
- **`get_workflow_run`** — Get workflow run details. Params: `owner`, `repo`, `run_id`
- **`get_workflow_run_usage`** — Get workflow run usage stats. Params: `owner`, `repo`, `run_id`
### Contents
- **`get_content`** — Get file contents. Params: `owner`, `repo`, `path`, `branch`
- **`create_or_update_file`** — Create or update file. Params: `owner`, `repo`, `path`, `content`, `message`, `branch`, `sha`
### Commits & Branches
- **`list_commits`** — List commits. Params: `owner`, `repo`, `sha` (branch), `path`, `author`, `since`, `until`, `per_page`, `page`
- **`get_commit`** — Get commit details. Params: `owner`, `repo`, `ref`
- **`list_branches`** — List branches. Params: `owner`, `repo`, `protected`, `per_page`, `page`
- **`create_branch`** — Create branch reference. Params: `owner`, `repo`, `branch_name`, `sha`
### Users
- **`get_me`** — Get authenticated user profile
- **`search_users`** — Search users. Params: `q`
### Releases
- **`list_releases`** — List releases. Params: `owner`, `repo`, `per_page`, `page`
- **`get_release`** — Get release by tag. Params: `owner`, `repo`, `tag`
Repositories (CRUD, search, fork), pull requests (full lifecycle with reviews), issues (CRUD, search, comments), Actions (workflows, runs), file contents (read/write), commits, branches, users, releases.

4
kdrive/Dockerfile Normal file
View file

@ -0,0 +1,4 @@
FROM node:22-slim
RUN npm install -g mcp-proxy@6.5.2 @infomaniak/mcp-server-kdrive@1.1.1
EXPOSE 8108
CMD ["mcp-proxy", "--port", "8108", "--host", "0.0.0.0", "--", "mcp-server-kdrive"]

27
kdrive/README.md Normal file
View file

@ -0,0 +1,27 @@
# kdrive-mcp
MCP server for Infomaniak kDrive.
Source: [`@infomaniak/mcp-server-kdrive`](https://npm.im/@infomaniak/mcp-server-kdrive)
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `KDRIVE_TOKEN` | Yes | kDrive API token from Infomaniak Manager |
| `KDRIVE_ID` | Yes | kDrive numeric ID |
## Usage
```bash
docker run -d \
--name kdrive-mcp \
-p 8108:8108 \
-e KDRIVE_TOKEN=your_token \
-e KDRIVE_ID=1911443 \
forgejo.corentic.eu/corentic/mcp-fleet-kdrive:latest
```
## Tools
List drives, list files/folders, read files, search, upload/download.

11
kontist/Dockerfile Normal file
View file

@ -0,0 +1,11 @@
FROM node:22-slim
RUN apt-get update && apt-get install -y --no-install-recommends git && rm -rf /var/lib/apt/lists/*
RUN git clone https://github.com/tobiasendres-dev/kontist-mcp.git /app/kontist-mcp
WORKDIR /app/kontist-mcp
RUN npm install
RUN npm install -g mcp-proxy@6.5.2
ENV KONTIST_CLIENT_ID=
ENV KONTIST_CLIENT_SECRET=
VOLUME /root/.config/kontist
EXPOSE 8111
CMD ["mcp-proxy", "--port", "8111", "--host", "0.0.0.0", "--", "node", "server.mjs"]

47
kontist/README.md Normal file
View file

@ -0,0 +1,47 @@
# kontist-mcp
MCP server for Kontist banking API (balance, transactions, transfers).
Source: [`github.com/tobiasendres-dev/kontist-mcp`](https://github.com/tobiasendres-dev/kontist-mcp)
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `KONTIST_CLIENT_ID` | Yes | Client ID from kontist.dev |
| `KONTIST_CLIENT_SECRET` | Yes | Client secret from kontist.dev |
## Usage
This MCP requires OAuth tokens. Run the OAuth flow once on the host:
```bash
# Clone, install, run auth
git clone https://github.com/tobiasendres-dev/kontist-mcp.git
cd kontist-mcp
npm install
KONTIST_CLIENT_ID=xxx KONTIST_CLIENT_SECRET=xxx npm run auth
```
Then mount the tokens file into the container:
```bash
docker run -d \
--name kontist-mcp \
-p 8111:8111 \
-v ~/.config/kontist:/root/.config/kontist \
-e KONTIST_CLIENT_ID=your_client_id \
-e KONTIST_CLIENT_SECRET=your_client_secret \
forgejo.corentic.eu/corentic/mcp-fleet-kontist:latest
```
## Tools
- `get_balance` — Current balance + available balance
- `get_account` — Account details (IBAN, holder)
- `list_transactions` — Recent transactions
- `create_transfer` — Create a transfer (requires TAN)
- `confirm_transfer` — Confirm with TAN
- `list_cards` — List all cards
Tokens expire after ~1 hour. Re-run `npm run auth` to refresh.

4
networking/Dockerfile Normal file
View file

@ -0,0 +1,4 @@
FROM node:22-slim
RUN npm install -g mcp-proxy@6.5.2 @leviai/netrecon-mcp@1.0.0
EXPOSE 8113
CMD ["mcp-proxy", "--port", "8113", "--host", "0.0.0.0", "--", "netrecon-mcp"]

27
networking/README.md Normal file
View file

@ -0,0 +1,27 @@
# netrecon-mcp
MCP server for networking diagnostics (DNS, WHOIS, ping, traceroute).
Source: [`@leviai/netrecon-mcp`](https://npm.im/@leviai/netrecon-mcp)
## Environment Variables
None required.
## Usage
```bash
docker run -d \
--name networking-mcp \
-p 8113:8113 \
forgejo.corentic.eu/corentic/mcp-fleet-networking:latest
```
## Tools
- `dns_lookup` — DNS resolution
- `ping` — ICMP ping
- `traceroute` — Route tracing
- `whois` — WHOIS lookup
- `http_check` — HTTP status check
- `port_check` — TCP port connectivity

5
nextcloud/Dockerfile Normal file
View file

@ -0,0 +1,5 @@
FROM node:22-slim
RUN apt-get update && apt-get install -y --no-install-recommends python3 python3-pip python3-venv && rm -rf /var/lib/apt/lists/*
RUN pip3 install --no-cache-dir --break-system-packages "nc-mcp-server>=0.7.0" && npm install -g mcp-proxy@6.5.2
EXPOSE 8107
CMD ["mcp-proxy", "--port", "8107", "--host", "0.0.0.0", "--", "nc-mcp-server"]

29
nextcloud/README.md Normal file
View file

@ -0,0 +1,29 @@
# nextcloud-mcp
MCP server for Nextcloud (files, shares, users, apps).
Source: [`nc-mcp-server`](https://pypi.org/project/nc-mcp-server/)
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `NEXTCLOUD_URL` | Yes | Nextcloud instance URL (e.g. `https://cloud.corentic.eu`) |
| `NEXTCLOUD_USER` | Yes | Nextcloud admin username |
| `NEXTCLOUD_PASSWORD` | Yes | Nextcloud admin password |
## Usage
```bash
docker run -d \
--name nextcloud-mcp \
-p 8107:8107 \
-e NEXTCLOUD_URL=https://cloud.corentic.eu \
-e NEXTCLOUD_USER=admin \
-e NEXTCLOUD_PASSWORD=your_password \
forgejo.corentic.eu/corentic/mcp-fleet-nextcloud:latest
```
## Tools
Files & folders (list, read, write, search), shares management, users & groups, apps (enable/disable), system info (version, storage, usage).

View file

@ -0,0 +1,5 @@
FROM node:22-slim
RUN apt-get update && apt-get install -y --no-install-recommends python3 python3-pip python3-venv && rm -rf /var/lib/apt/lists/*
RUN pip3 install --no-cache-dir --break-system-packages "nginx-proxy-manager-mcp>=2.14.0" && npm install -g mcp-proxy@6.5.2
EXPOSE 8105
CMD ["mcp-proxy", "--port", "8105", "--host", "0.0.0.0", "--", "nginx-proxy-manager-mcp"]

View file

@ -0,0 +1,29 @@
# nginx-proxy-manager-mcp
MCP server for Nginx Proxy Manager.
Source: [`nginx-proxy-manager-mcp`](https://pypi.org/project/nginx-proxy-manager-mcp/)
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `NPM_URL` | Yes | Nginx Proxy Manager instance URL (e.g. `https://npm.corentic.eu`) |
| `NPM_EMAIL` | Yes | Login email |
| `NPM_PASSWORD` | Yes | Login password |
## Usage
```bash
docker run -d \
--name nginx-proxy-manager-mcp \
-p 8105:8105 \
-e NPM_URL=https://npm.corentic.eu \
-e NPM_EMAIL=admin@example.com \
-e NPM_PASSWORD=your_password \
forgejo.corentic.eu/corentic/mcp-fleet-nginx-proxy-manager:latest
```
## Tools
Proxy hosts management, stream management, access lists, SSL certificates, audit logs.

37
playwright/README.md Normal file
View file

@ -0,0 +1,37 @@
# playwright-mcp
MCP server for browser automation via Playwright.
Source: [`@playwright/mcp`](https://npm.im/@playwright/mcp)
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `PLAYWRIGHT_MCP_HEADLESS` | No | Run headless (`true`/`false`, default: `true`) |
| `PLAYWRIGHT_MCP_BROWSER` | No | Browser to use (`firefox`, `chromium`, `webkit`, default: `chromium`) |
## Usage
This MCP runs better natively (not in a container) because it needs direct display access for headed mode and browser binaries.
```bash
npx @playwright/mcp
# or with options:
PLAYWRIGHT_MCP_HEADLESS=true PLAYWRIGHT_MCP_BROWSER=firefox npx @playwright/mcp
```
For headed mode (visible browser window), ensure a display is available and run:
```bash
PLAYWRIGHT_MCP_HEADLESS=false PLAYWRIGHT_MCP_BROWSER=firefox npx @playwright/mcp
```
## Tools
- Navigation (goto, back, forward, refresh)
- Element interaction (click, fill, select, hover)
- Screenshots (full page, element)
- Form filling and submission
- Console and network monitoring
- PDF generation

View file

@ -1,14 +1,6 @@
FROM node:22-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv \
&& rm -rf /var/lib/apt/lists/*
RUN pip3 install --no-cache-dir --break-system-packages portainer-mcp && \
npm install -g mcp-proxy@6.5.2
ENV PORTAINER_VERIFY_SSL=false
RUN apt-get update && apt-get install -y --no-install-recommends python3 python3-pip python3-venv && rm -rf /var/lib/apt/lists/*
RUN pip3 install --no-cache-dir --break-system-packages "mcp-portainer~=2.42.0" && npm install -g mcp-proxy@6.5.2
ENV PORTAINER_TLS_VERIFY=false
EXPOSE 8110
CMD ["mcp-proxy", "--port", "8110", "--host", "0.0.0.0", "--", "portainer-mcp"]
CMD ["mcp-proxy", "--port", "8110", "--host", "0.0.0.0", "--", "mcp-portainer"]

View file

@ -1,17 +1,16 @@
# portainer-mcp
MCP server for Portainer (Docker/K8s management).
MCP server for Portainer (Docker/K8s management). Uses API key authentication.
Source: [`portainer-mcp`](https://pypi.org/project/portainer-mcp/) (v0.5.1)
Source: [`mcp-portainer`](https://pypi.org/project/mcp-portainer/) (v2.42.0)
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `PORTAINER_URL` | Yes | Base URL of the Portainer instance (e.g. `https://portainer.corentic.eu`) |
| `PORTAINER_USERNAME` | Yes | Portainer username (use `admin` if using API key) |
| `PORTAINER_PASSWORD` | Yes | Portainer password or API key |
| `PORTAINER_VERIFY_SSL` | No | Verify SSL certificate (`true`/`false`, default: `true`) |
| `PORTAINER_API_KEY` | Yes | Portainer API key (generate in Portainer UI: user avatar → Account Settings → Access Tokens → Add token) |
| `PORTAINER_TLS_VERIFY` | No | Verify SSL certificate (`true`/`false`, default: `true`) |
| `PORTAINER_DEFAULT_ENDPOINT` | No | Default endpoint ID (default: `1`) |
| `PORTAINER_TIMEOUT` | No | Request timeout in seconds (default: `30`) |
| `PORTAINER_LONG_TIMEOUT` | No | Long request timeout in seconds (default: `300`) |
@ -23,67 +22,13 @@ docker run -d \
--name portainer-mcp \
-p 8110:8110 \
-e PORTAINER_URL=https://portainer.corentic.eu \
-e PORTAINER_USERNAME=admin \
-e PORTAINER_PASSWORD=your_api_key_or_password \
-e PORTAINER_VERIFY_SSL=false \
-e PORTAINER_API_KEY=ptr_xxx \
-e PORTAINER_TLS_VERIFY=false \
forgejo.corentic.eu/corentic/mcp-fleet-portainer:latest
```
To get an API key: Portainer web UI → click your avatar → Account Settings → Access Tokens → Add token. Give it a name and copy the token immediately (shown once).
## Tools
### Auth & System
- **`portainer_status`** — Verify connection to Portainer and auth status
- **`portainer_docker_info`** — Docker system info. Params: `endpoint_id`
- **`portainer_docker_disk_usage`** — Docker disk usage. Params: `endpoint_id`
### Endpoints (Environments)
- **`portainer_endpoints_list`** — List all environments (Docker/K8s endpoints)
- **`portainer_endpoint_inspect`** — Inspect endpoint details. Params: `endpoint_id`
### Containers
- **`portainer_containers_list`** — List containers. Params: `endpoint_id`, `all`, `limit`, `filters`
- **`portainer_container_inspect`** — Inspect container. Params: `endpoint_id`, `container_id`
- **`portainer_container_start`** — Start container. Params: `endpoint_id`, `container_id`
- **`portainer_container_stop`** — Stop container. Params: `endpoint_id`, `container_id`
- **`portainer_container_restart`** — Restart container. Params: `endpoint_id`, `container_id`
- **`portainer_container_remove`** — Remove container. Params: `endpoint_id`, `container_id`, `force`, `remove_volumes`
- **`portainer_container_logs`** — Get container logs. Params: `endpoint_id`, `container_id`, `tail`, `stdout`, `stderr`
- **`portainer_container_logs_grep`** — Search container logs for pattern. Params: `endpoint_id`, `container_id`, `pattern`, `tail`, `stdout`, `stderr`
- **`portainer_container_stats`** — Get container stats (CPU, memory, etc.). Params: `endpoint_id`, `container_id`
- **`portainer_container_exec`** — Execute command in container. Params: `endpoint_id`, `container_id`, `command`, `workdir`, `timeout`
### Stacks
- **`portainer_stacks_list`** — List stacks. Params: `endpoint_id`
- **`portainer_stack_inspect`** — Inspect stack. Params: `stack_id`
- **`portainer_stack_deploy`** — Deploy stack from compose. Params: `endpoint_id`, `name`, `compose_content`, `env_vars`
- **`portainer_stack_update`** — Update stack compose. Params: `stack_id`, `endpoint_id`, `compose_content`, `env_vars`, `prune`, `pull_image`
- **`portainer_stack_delete`** — Delete stack. Params: `stack_id`, `endpoint_id`
- **`portainer_stack_start`** — Start stack. Params: `stack_id`, `endpoint_id`
- **`portainer_stack_stop`** — Stop stack. Params: `stack_id`, `endpoint_id`
- **`portainer_stack_logs_errors`** — Scan stack container logs for errors. Params: `endpoint_id`, `stack_name`
- **`portainer_laravel_errors`** — Scan for Laravel errors in stack containers. Params: `endpoint_id`, `stack_name`
- **`portainer_laravel_tinker`** — Run Laravel tinker in container. Params: `endpoint_id`, `stack_name`, `command`, `service`
### Images
- **`portainer_images_list`** — List images. Params: `endpoint_id`, `with_usage`
- **`portainer_image_inspect`** — Inspect image. Params: `endpoint_id`, `image_ref`
- **`portainer_image_pull`** — Pull image from registry. Params: `endpoint_id`, `image`, `registry_auth`
- **`portainer_image_remove`** — Remove image. Params: `endpoint_id`, `image_ref`, `force`
### Networks
- **`portainer_networks_list`** — List networks. Params: `endpoint_id`
- **`portainer_network_inspect`** — Inspect network. Params: `endpoint_id`, `network_id`
- **`portainer_network_create`** — Create network. Params: `endpoint_id`, `name`, `driver`, `subnet`, `gateway`
- **`portainer_network_remove`** — Remove network. Params: `endpoint_id`, `network_id`
- **`portainer_network_connect`** — Connect container to network. Params: `endpoint_id`, `network_id`, `container_id`
- **`portainer_network_disconnect`** — Disconnect container from network. Params: `endpoint_id`, `network_id`, `container_id`, `force`
### Volumes
- **`portainer_volumes_list`** — List volumes. Params: `endpoint_id`
- **`portainer_volume_inspect`** — Inspect volume. Params: `endpoint_id`, `volume_id`
- **`portainer_volume_create`** — Create volume. Params: `endpoint_id`, `name`, `driver`, `labels`
- **`portainer_volume_remove`** — Remove volume. Params: `endpoint_id`, `volume_id`, `force`
### Users
- **`portainer_users_list`** — List Portainer users
- **`portainer_user_inspect`** — Inspect user. Params: `user_id`
Auth, endpoints, containers (list, inspect, start/stop/restart, logs, exec, stats), stacks (deploy, update, delete), images, networks, volumes, users (193+ tools).

View file

@ -1,7 +1,4 @@
FROM node:22-slim
RUN npm install -g mcp-proxy@6.5.2 mcp-postgres@1.3.0
RUN npm install -g mcp-proxy@6.5.2 @modelcontextprotocol/server-postgres@0.6.2
EXPOSE 8109
CMD ["mcp-proxy", "--port", "8109", "--host", "0.0.0.0", "--", "mcp-postgres"]
CMD ["mcp-proxy", "--port", "8109", "--host", "0.0.0.0", "--", "mcp-server-postgres"]

View file

@ -2,19 +2,13 @@
MCP server for PostgreSQL database operations.
Source: [`mcp-postgres`](https://npm.im/mcp-postgres)
Source: [`@modelcontextprotocol/server-postgres`](https://npm.im/@modelcontextprotocol/server-postgres)
## Environment Variables
Uses standard PostgreSQL environment variables via `pg` module:
| Variable | Required | Description |
|----------|----------|-------------|
| `PGHOST` | Yes | PostgreSQL host |
| `PGPORT` | No | PostgreSQL port (default: `5432`) |
| `PGUSER` | Yes | PostgreSQL user |
| `PGPASSWORD` | Yes | PostgreSQL password |
| `PGDATABASE` | Yes | PostgreSQL database name |
| `DATABASE_URL` | Yes | Full PostgreSQL connection URL (e.g. `postgresql://user:pass@host:5432/db?sslmode=disable`) |
## Usage
@ -22,11 +16,7 @@ Uses standard PostgreSQL environment variables via `pg` module:
docker run -d \
--name postgresql-mcp \
-p 8109:8109 \
-e PGHOST=postgres.example.com \
-e PGPORT=5432 \
-e PGUSER=myuser \
-e PGPASSWORD=secret \
-e PGDATABASE=mydb \
-e DATABASE_URL=postgresql://user:pass@host:5432/mydb \
forgejo.corentic.eu/corentic/mcp-fleet-postgresql:latest
```

View file

@ -1,11 +1,5 @@
FROM python:3.12-slim
RUN pip install --no-cache-dir semaphore-mcp
ENV MCP_TRANSPORT=http \
MCP_HOST=0.0.0.0 \
MCP_PORT=8103
ENV MCP_TRANSPORT=http MCP_HOST=0.0.0.0 MCP_PORT=8103
EXPOSE 8103
CMD ["semaphore-mcp"]

View file

@ -2,15 +2,15 @@
MCP server for SemaphoreUI Ansible automation.
Source: [`cloin/semaphore-mcp`](https://github.com/cloin/semaphore-mcp) (v1.0.4)
Source: [`cloin/semaphore-mcp`](https://github.com/cloin/semaphore-mcp)
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `SEMAPHORE_URL` | Yes | Base URL of the SemaphoreUI instance (e.g. `https://semaphore.corentic.eu`) |
| `SEMAPHORE_TOKEN` | Yes | API token from SemaphoreUI user settings |
| `MCP_PORT` | No | Port for the MCP HTTP server (default: `8000`) |
| `SEMAPHORE_API_TOKEN` | Yes | API token from SemaphoreUI user settings |
| `MCP_PORT` | No | Port for the MCP HTTP server (default: `8000`, overridden to `8103`) |
| `MCP_TRANSPORT` | No | Transport mode (`http` or `stdio`, default: `http`) |
| `MCP_HOST` | No | Bind address (default: `0.0.0.0`) |
@ -21,78 +21,12 @@ docker run -d \
--name semaphore-mcp \
-p 8103:8103 \
-e SEMAPHORE_URL=https://semaphore.corentic.eu \
-e SEMAPHORE_TOKEN=your_token \
-e SEMAPHORE_API_TOKEN=your_token \
forgejo.corentic.eu/corentic/mcp-fleet-semaphore:latest
```
This MCP uses HTTP transport natively (no mcp-proxy wrapper). Connect via:
```
http://host:8103/mcp
```
This MCP uses native HTTP transport (no mcp-proxy). Connect via SSE at `http://host:8103/mcp`.
## Tools
### Projects
- **`list_projects`** — List all projects
- **`get_project`** — Get project details. Params: `project_id`
- **`create_project`** — Create project. Params: `name`, `alert`, `alert_chat`, `max_parallel_tasks`, `project_type`, `demo`
- **`update_project`** — Update project. Params: `project_id`, `name`, `alert`, `alert_chat`, `max_parallel_tasks`
- **`delete_project`** — Delete project. Params: `project_id`
### Templates
- **`list_templates`** — List templates. Params: `project_id`
- **`get_template`** — Get template. Params: `project_id`, `template_id`
- **`create_template`** — Create template. Params: `project_id`, `name`, `playbook`, `inventory_id`, `repository_id`, `environment_id`, `description`, `arguments`, `allow_override_args_in_task`, `suppress_success_alerts`, `app`, `git_branch`, `survey_vars`, `vaults`, `template_type`, `start_version`, `build_template_id`, `autorun`, `view_id`, `task_params`
- **`update_template`** — Update template. Params: `project_id`, `template_id`, plus same fields as create
- **`delete_template`** — Delete template. Params: `project_id`, `template_id`
- **`stop_all_template_tasks`** — Stop all running tasks for a template. Params: `project_id`, `template_id`
### Schedules
- **`list_schedules`** — List schedules. Params: `project_id`
- **`list_template_schedules`** — List schedules per template. Params: `project_id`, `template_id`
- **`get_schedule`** — Get schedule. Params: `project_id`, `schedule_id`
- **`create_schedule`** — Create schedule. Params: `project_id`, `template_id`, `name`, `cron_format`, `active`, `schedule_type` ("" for cron or "run_at"), `run_at`, `task_params`, `delete_after_run`, `repository_id`
- **`update_schedule`** — Update schedule. Params: `project_id`, `schedule_id`, plus same fields as create
- **`set_schedule_active`** — Enable/disable schedule. Params: `project_id`, `schedule_id`, `active`
- **`delete_schedule`** — Delete schedule. Params: `project_id`, `schedule_id`
- **`validate_schedule_cron_format`** — Validate cron expression. Params: `project_id`, `cron_format`
### Tasks
- **`list_tasks`** — List tasks. Params: `project_id`, `limit`, `status`, `tags`
- **`get_task`** — Get task details. Params: `project_id`, `task_id`
- **`run_task`** — Run task from template. Params: `template_id`, `project_id`, `environment`, `limit`, `dry_run`, `diff`, `debug`, `playbook`, `git_branch`, `message`, `arguments`, `inventory_id`, `follow`
- **`get_latest_failed_task`** — Most recent failed task. Params: `project_id`
- **`filter_tasks`** — Filter tasks by criteria. Params: `project_id`, `status`, `limit`, `use_last_tasks`
- **`stop_task`** — Stop running task. Params: `project_id`, `task_id`
- **`bulk_stop_tasks`** — Stop multiple tasks. Params: `project_id`, `task_ids`, `confirm`
- **`get_waiting_tasks`** — List all waiting tasks. Params: `project_id`
- **`get_task_raw_output`** — Get task raw output. Params: `project_id`, `task_id`
- **`analyze_task_failure`** — Analyze failed task. Params: `project_id`, `task_id`
- **`bulk_analyze_failures`** — Analyze multiple failed tasks. Params: `project_id`, `limit`
### Environments
- **`list_environments`** — List environments. Params: `project_id`
- **`get_environment`** — Get environment. Params: `project_id`, `environment_id`
- **`create_environment`** — Create environment. Params: `project_id`, `name`, `env_data`
- **`update_environment`** — Update environment. Params: `project_id`, `environment_id`, `name`, `env_data`
- **`delete_environment`** — Delete environment. Params: `project_id`, `environment_id`
### Inventory
- **`list_inventory`** — List inventory. Params: `project_id`
- **`get_inventory`** — Get inventory item. Params: `project_id`, `inventory_id`
- **`create_inventory`** — Create inventory. Params: `project_id`, `name`, `inventory_data`, `inventory_type`
- **`update_inventory`** — Update inventory. Params: `project_id`, `inventory_id`, `name`, `inventory_data`, `inventory_type`
- **`delete_inventory`** — Delete inventory. Params: `project_id`, `inventory_id`
### Repositories
- **`list_repositories`** — List repos. Params: `project_id`
- **`get_repository`** — Get repo. Params: `project_id`, `repository_id`
- **`create_repository`** — Create repo. Params: `project_id`, `name`, `git_url`, `git_branch`, `ssh_key_id`
- **`update_repository`** — Update repo. Params: `project_id`, `repository_id`, `name`, `git_url`, `git_branch`, `ssh_key_id`
- **`delete_repository`** — Delete repo. Params: `project_id`, `repository_id`
### Access Keys
- **`list_access_keys`** — List access keys. Params: `project_id`
- **`create_access_key`** — Create access key. Params: `project_id`, `name`, `key_type` (none/ssh/login_password), `login`, `password`, `private_key`
- **`delete_access_key`** — Delete access key. Params: `project_id`, `key_id`
Projects, templates, schedules, tasks, environments, inventory, repositories, access keys (98+ tools).

4
taiga/Dockerfile Normal file
View file

@ -0,0 +1,4 @@
FROM node:22-slim
RUN npm install -g mcp-proxy@6.5.2 @illodev/taiga-mcp@1.0.0
EXPOSE 8106
CMD ["mcp-proxy", "--port", "8106", "--host", "0.0.0.0", "--", "taiga-mcp"]

29
taiga/README.md Normal file
View file

@ -0,0 +1,29 @@
# taiga-mcp
MCP server for Taiga project management.
Source: [`@illodev/taiga-mcp`](https://npm.im/@illodev/taiga-mcp)
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `TAIGA_URL` | Yes | Taiga instance URL (e.g. `https://taiga.corentic.eu`) |
| `TAIGA_USERNAME` | Yes | Taiga login username |
| `TAIGA_PASSWORD` | Yes | Taiga login password |
## Usage
```bash
docker run -d \
--name taiga-mcp \
-p 8106:8106 \
-e TAIGA_URL=https://taiga.corentic.eu \
-e TAIGA_USERNAME=your_user \
-e TAIGA_PASSWORD=your_password \
forgejo.corentic.eu/corentic/mcp-fleet-taiga:latest
```
## Tools
Projects, user stories, tasks, issues, sprints, wiki pages, team management.

5
web-search/Dockerfile Normal file
View file

@ -0,0 +1,5 @@
FROM node:22-slim
RUN apt-get update && apt-get install -y --no-install-recommends python3 python3-pip python3-venv && rm -rf /var/lib/apt/lists/*
RUN pip3 install --no-cache-dir --break-system-packages web-researcher-mcp && npm install -g mcp-proxy@6.5.2
EXPOSE 8116
CMD ["mcp-proxy", "--port", "8116", "--host", "0.0.0.0", "--", "web-researcher-mcp"]

23
web-search/README.md Normal file
View file

@ -0,0 +1,23 @@
# web-researcher-mcp
MCP server for web search and content fetching.
Source: [`web-researcher-mcp`](https://pypi.org/project/web-researcher-mcp/)
## Environment Variables
None required.
## Usage
```bash
docker run -d \
--name web-search-mcp \
-p 8116:8116 \
forgejo.corentic.eu/corentic/mcp-fleet-web-search:latest
```
## Tools
- `web_search` — Search the web
- `web_fetch` — Fetch and extract content from a URL

View file

@ -1,7 +1,4 @@
FROM node:22-slim
RUN npm install -g mcp-proxy@6.5.2 @devpuccino/mcp-woodpecker@1.1.2
EXPOSE 8102
CMD ["mcp-proxy", "--port", "8102", "--host", "0.0.0.0", "--", "mcp-woodpecker"]

View file

@ -8,7 +8,7 @@ Source: [`@devpuccino/mcp-woodpecker`](https://www.npmjs.com/package/@devpuccino
| Variable | Required | Description |
|----------|----------|-------------|
| `WOODPECKER_URL` | Yes | Base URL of the Woodpecker instance (e.g. `https://woodpecker.corentic.eu`) |
| `WOODPECKER_URL` | Yes | Base URL of the Woodpecker instance (e.g. `https://ci.corentic.eu`) |
| `WOODPECKER_API_KEY` | Yes | Woodpecker API key with required scopes |
## Usage
@ -17,43 +17,11 @@ Source: [`@devpuccino/mcp-woodpecker`](https://www.npmjs.com/package/@devpuccino
docker run -d \
--name woodpecker-mcp \
-p 8102:8102 \
-e WOODPECKER_URL=https://woodpecker.corentic.eu \
-e WOODPECKER_API_KEY=your_key_here \
-e WOODPECKER_URL=https://ci.corentic.eu \
-e WOODPECKER_API_KEY=your_key \
forgejo.corentic.eu/corentic/mcp-fleet-woodpecker:latest
```
## Tools
- `activate_repository`
- `cancel_pipeline`
- `create_cron`
- `create_org_secret`
- `create_registry`
- `create_secret`
- `delete_cron`
- `delete_org_secret`
- `delete_pipeline_logs`
- `delete_registry`
- `delete_repository`
- `delete_secret`
- `get_cron`
- `get_current_user`
- `get_org_secret`
- `get_pipeline`
- `get_pipeline_logs`
- `get_pipeline_status`
- `get_registry`
- `get_repository`
- `get_secret`
- `list_crons`
- `list_org_secrets`
- `list_pipelines`
- `list_registries`
- `list_repositories`
- `list_secrets`
- `lookup_organization`
- `trigger_pipeline`
- `update_cron`
- `update_org_secret`
- `update_repository`
- `update_secret`
Repositories, pipelines, cron jobs, secrets, registries, organizations (33 tools total).