feat: add semaphore-mcp Docker image (native HTTP, no proxy)

This commit is contained in:
tobjend 2026-06-21 17:58:20 +02:00
parent 619f16292e
commit d7e9695959
3 changed files with 70 additions and 0 deletions

View file

@ -23,3 +23,14 @@ pipeline:
- 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
secrets:
- forgejo_registry_token
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

11
semaphore/Dockerfile Normal file
View file

@ -0,0 +1,11 @@
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
EXPOSE 8103
CMD ["semaphore-mcp"]

48
semaphore/README.md Normal file
View file

@ -0,0 +1,48 @@
# semaphore-mcp
MCP server for interacting with SemaphoreUI (Ansible automation).
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_API_TOKEN` | Yes | API token from SemaphoreUI user settings |
| `MCP_PORT` | No | Port for the MCP HTTP server (default: 8000) |
| `MCP_TRANSPORT` | No | Transport mode (`http` or `stdio`, default: `http`) |
| `MCP_HOST` | No | Bind address (default: `0.0.0.0`) |
## Usage
```bash
docker run -d \
--name semaphore-mcp \
-p 8103:8103 \
-e SEMAPHORE_URL=https://semaphore.corentic.eu \
-e SEMAPHORE_API_TOKEN=your_token_here \
forgejo.corentic.eu/corentic/mcp-fleet-semaphore:latest
```
This MCP uses HTTP transport natively (no mcp-proxy wrapper). Connect via:
```
http://host:8103/mcp
```
## Tools
- `create_project`, `get_project`, `update_project`, `delete_project`, `list_projects`
- `create_template`, `get_template`, `update_template`, `delete_template`, `list_templates`
- `create_inventory`, `get_inventory`, `update_inventory`, `delete_inventory`, `list_inventory`
- `create_repository`, `get_repository`, `update_repository`, `delete_repository`, `list_repositories`
- `create_environment`, `get_environment`, `update_environment`, `delete_environment`, `list_environments`
- `create_access_key`, `get_access_key`, `update_access_key`, `delete_access_key`, `list_access_keys`
- `create_schedule`, `get_schedule`, `update_schedule`, `delete_schedule`, `list_schedules`
- `create_view`, `get_view`, `update_view`, `delete_view`, `list_views`
- `run_task`, `get_task`, `get_task_raw_output`, `list_tasks`
- `get_latest_failed_task`, `filter_tasks`
- `list_events`, `get_last_events`
- `stop_task`, `bulk_stop_tasks`, `stop_all_template_tasks`
- `get_project_role`, `update_project_user`, `list_project_users`