From 2078644d690074bb01e5479b4e5e722d476144b4 Mon Sep 17 00:00:00 2001 From: "Tobias J. Endres" Date: Tue, 23 Jun 2026 15:09:54 +0200 Subject: [PATCH] feat: update fleet to tested MCPs + add 10 new MCPs with Dockerfiles + Woodpecker CI --- .woodpecker.yml | 126 +++++++++++++++++++++++---------- bitwarden/Dockerfile | 11 +++ bitwarden/README.md | 37 ++++++++++ docker/Dockerfile | 6 ++ docker/README.md | 25 +++++++ filesystem/Dockerfile | 4 ++ filesystem/README.md | 25 +++++++ forgejo/Dockerfile | 5 +- forgejo/README.md | 45 ++---------- github/Dockerfile | 10 +-- github/README.md | 57 ++------------- kdrive/Dockerfile | 4 ++ kdrive/README.md | 27 +++++++ kontist/Dockerfile | 11 +++ kontist/README.md | 47 ++++++++++++ networking/Dockerfile | 4 ++ networking/README.md | 27 +++++++ nextcloud/Dockerfile | 5 ++ nextcloud/README.md | 29 ++++++++ nginx-proxy-manager/Dockerfile | 5 ++ nginx-proxy-manager/README.md | 29 ++++++++ playwright/README.md | 37 ++++++++++ portainer/Dockerfile | 16 ++--- portainer/README.md | 73 +++---------------- postgresql/Dockerfile | 7 +- postgresql/README.md | 18 ++--- semaphore/Dockerfile | 10 +-- semaphore/README.md | 78 ++------------------ taiga/Dockerfile | 4 ++ taiga/README.md | 29 ++++++++ web-search/Dockerfile | 5 ++ web-search/README.md | 23 ++++++ woodpecker/Dockerfile | 5 +- woodpecker/README.md | 40 ++--------- 34 files changed, 527 insertions(+), 357 deletions(-) create mode 100644 bitwarden/Dockerfile create mode 100644 bitwarden/README.md create mode 100644 docker/Dockerfile create mode 100644 docker/README.md create mode 100644 filesystem/Dockerfile create mode 100644 filesystem/README.md create mode 100644 kdrive/Dockerfile create mode 100644 kdrive/README.md create mode 100644 kontist/Dockerfile create mode 100644 kontist/README.md create mode 100644 networking/Dockerfile create mode 100644 networking/README.md create mode 100644 nextcloud/Dockerfile create mode 100644 nextcloud/README.md create mode 100644 nginx-proxy-manager/Dockerfile create mode 100644 nginx-proxy-manager/README.md create mode 100644 playwright/README.md create mode 100644 taiga/Dockerfile create mode 100644 taiga/README.md create mode 100644 web-search/Dockerfile create mode 100644 web-search/README.md diff --git a/.woodpecker.yml b/.woodpecker.yml index 78b411d..0b5fd03 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -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 diff --git a/bitwarden/Dockerfile b/bitwarden/Dockerfile new file mode 100644 index 0000000..1c2f7fa --- /dev/null +++ b/bitwarden/Dockerfile @@ -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"] \ No newline at end of file diff --git a/bitwarden/README.md b/bitwarden/README.md new file mode 100644 index 0000000..8e2f680 --- /dev/null +++ b/bitwarden/README.md @@ -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 \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..4b9a50e --- /dev/null +++ b/docker/Dockerfile @@ -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"] \ No newline at end of file diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000..4f5d890 --- /dev/null +++ b/docker/README.md @@ -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 \ No newline at end of file diff --git a/filesystem/Dockerfile b/filesystem/Dockerfile new file mode 100644 index 0000000..e6e8be0 --- /dev/null +++ b/filesystem/Dockerfile @@ -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"] \ No newline at end of file diff --git a/filesystem/README.md b/filesystem/README.md new file mode 100644 index 0000000..c135db1 --- /dev/null +++ b/filesystem/README.md @@ -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 \ No newline at end of file diff --git a/forgejo/Dockerfile b/forgejo/Dockerfile index ea24bfd..bacc679 100644 --- a/forgejo/Dockerfile +++ b/forgejo/Dockerfile @@ -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"] +CMD ["mcp-proxy", "--port", "8101", "--host", "0.0.0.0", "--", "forgejo-mcp"] \ No newline at end of file diff --git a/forgejo/README.md b/forgejo/README.md index 7fa17cd..1057a74 100644 --- a/forgejo/README.md +++ b/forgejo/README.md @@ -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 \ No newline at end of file diff --git a/github/Dockerfile b/github/Dockerfile index ec7880b..6974b27 100644 --- a/github/Dockerfile +++ b/github/Dockerfile @@ -1,7 +1,3 @@ -FROM node:22-slim - -RUN npm install -g mcp-proxy@6.5.2 @modelcontextprotocol/server-github@2025.4.8 - -EXPOSE 8104 - -CMD ["mcp-proxy", "--port", "8104", "--host", "0.0.0.0", "--", "mcp-server-github"] +FROM ghcr.io/github/github-mcp-server:latest +ENV GITHUB_PERSONAL_ACCESS_TOKEN= +EXPOSE 8104 \ No newline at end of file diff --git a/github/README.md b/github/README.md index eb5ac71..0fce78a 100644 --- a/github/README.md +++ b/github/README.md @@ -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. \ No newline at end of file diff --git a/kdrive/Dockerfile b/kdrive/Dockerfile new file mode 100644 index 0000000..a15956d --- /dev/null +++ b/kdrive/Dockerfile @@ -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"] \ No newline at end of file diff --git a/kdrive/README.md b/kdrive/README.md new file mode 100644 index 0000000..8bb4d61 --- /dev/null +++ b/kdrive/README.md @@ -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. \ No newline at end of file diff --git a/kontist/Dockerfile b/kontist/Dockerfile new file mode 100644 index 0000000..2194187 --- /dev/null +++ b/kontist/Dockerfile @@ -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"] \ No newline at end of file diff --git a/kontist/README.md b/kontist/README.md new file mode 100644 index 0000000..0b3de76 --- /dev/null +++ b/kontist/README.md @@ -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. \ No newline at end of file diff --git a/networking/Dockerfile b/networking/Dockerfile new file mode 100644 index 0000000..1e22d3d --- /dev/null +++ b/networking/Dockerfile @@ -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"] \ No newline at end of file diff --git a/networking/README.md b/networking/README.md new file mode 100644 index 0000000..09d6291 --- /dev/null +++ b/networking/README.md @@ -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 \ No newline at end of file diff --git a/nextcloud/Dockerfile b/nextcloud/Dockerfile new file mode 100644 index 0000000..a323b94 --- /dev/null +++ b/nextcloud/Dockerfile @@ -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"] \ No newline at end of file diff --git a/nextcloud/README.md b/nextcloud/README.md new file mode 100644 index 0000000..c82abad --- /dev/null +++ b/nextcloud/README.md @@ -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). \ No newline at end of file diff --git a/nginx-proxy-manager/Dockerfile b/nginx-proxy-manager/Dockerfile new file mode 100644 index 0000000..1403baa --- /dev/null +++ b/nginx-proxy-manager/Dockerfile @@ -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"] \ No newline at end of file diff --git a/nginx-proxy-manager/README.md b/nginx-proxy-manager/README.md new file mode 100644 index 0000000..357c68d --- /dev/null +++ b/nginx-proxy-manager/README.md @@ -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. \ No newline at end of file diff --git a/playwright/README.md b/playwright/README.md new file mode 100644 index 0000000..23de576 --- /dev/null +++ b/playwright/README.md @@ -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 \ No newline at end of file diff --git a/portainer/Dockerfile b/portainer/Dockerfile index ccbf2b3..638eed5 100644 --- a/portainer/Dockerfile +++ b/portainer/Dockerfile @@ -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"] \ No newline at end of file diff --git a/portainer/README.md b/portainer/README.md index 83b7cc2..d0cd497 100644 --- a/portainer/README.md +++ b/portainer/README.md @@ -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). \ No newline at end of file diff --git a/postgresql/Dockerfile b/postgresql/Dockerfile index 6d5bb45..697ef0c 100644 --- a/postgresql/Dockerfile +++ b/postgresql/Dockerfile @@ -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"] \ No newline at end of file diff --git a/postgresql/README.md b/postgresql/README.md index 70f143d..23920cd 100644 --- a/postgresql/README.md +++ b/postgresql/README.md @@ -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 ``` @@ -36,4 +26,4 @@ docker run -d \ - `execute` — Execute write SQL (INSERT, UPDATE, DELETE, DDL) - `list_tables` — List tables in the database - `describe_table` — Get schema info for a specific table -- `get_table_stats` — Row counts and table statistics +- `get_table_stats` — Row counts and table statistics \ No newline at end of file diff --git a/semaphore/Dockerfile b/semaphore/Dockerfile index b56d6e4..14fae6d 100644 --- a/semaphore/Dockerfile +++ b/semaphore/Dockerfile @@ -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"] +CMD ["semaphore-mcp"] \ No newline at end of file diff --git a/semaphore/README.md b/semaphore/README.md index 5465198..a2ff035 100644 --- a/semaphore/README.md +++ b/semaphore/README.md @@ -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). \ No newline at end of file diff --git a/taiga/Dockerfile b/taiga/Dockerfile new file mode 100644 index 0000000..a46299b --- /dev/null +++ b/taiga/Dockerfile @@ -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"] \ No newline at end of file diff --git a/taiga/README.md b/taiga/README.md new file mode 100644 index 0000000..a76b8a9 --- /dev/null +++ b/taiga/README.md @@ -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. \ No newline at end of file diff --git a/web-search/Dockerfile b/web-search/Dockerfile new file mode 100644 index 0000000..4d1e135 --- /dev/null +++ b/web-search/Dockerfile @@ -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"] \ No newline at end of file diff --git a/web-search/README.md b/web-search/README.md new file mode 100644 index 0000000..de930ed --- /dev/null +++ b/web-search/README.md @@ -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 \ No newline at end of file diff --git a/woodpecker/Dockerfile b/woodpecker/Dockerfile index ea9bfe7..48f25d3 100644 --- a/woodpecker/Dockerfile +++ b/woodpecker/Dockerfile @@ -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"] +CMD ["mcp-proxy", "--port", "8102", "--host", "0.0.0.0", "--", "mcp-woodpecker"] \ No newline at end of file diff --git a/woodpecker/README.md b/woodpecker/README.md index 0389929..b91968a 100644 --- a/woodpecker/README.md +++ b/woodpecker/README.md @@ -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). \ No newline at end of file