A comprehensive MCP server for Semaphore UI integration
Project description
Semaphore MCP Server
A Model Context Protocol (MCP) server for Semaphore UI - the modern open-source alternative to Ansible Tower/AWX.
This server enables AI assistants and MCP-compatible tools to interact with Semaphore UI for managing Ansible, Terraform, and other automation workflows.
Features
- Project Management — List, create, and delete projects
- Task Management — Launch, monitor, stop, and retrieve output of tasks
- Template Management — CRUD operations on job templates
- Inventory Management — Manage Ansible inventories
- Repository Management — Manage Git repositories
- Environment Management — Manage environment variable sets
- Key Store — List and manage SSH keys and credentials
- Schedule Management — Create and manage cron-based schedules
- User & Events — Get user info and project event logs
- Server Info — Check server health and version
Installation
pip install -e .
Or with the semaphore client from a local path:
pip install -e /path/to/python3-semaphore-client
pip install -e .
Configuration
Copy .env.example to .env and configure:
cp .env.example .env
Required environment variables:
| Variable | Description |
|---|---|
SEMAPHORE_URL |
Base URL of your Semaphore UI instance (e.g., http://localhost:3000) |
SEMAPHORE_TOKEN |
API Bearer token (create via Semaphore UI or API) |
Optional environment variables:
| Variable | Default | Description |
|---|---|---|
READ_ONLY |
true |
Set to false to enable write operations |
DEBUG |
(unset) | Set to true for verbose logging |
Creating an API Token
- Via Web UI (Semaphore 2.14+): Go to your user settings and create a token
- Via API:
# Login curl -c /tmp/semaphore-cookie -XPOST \ -H 'Content-Type: application/json' \ -d '{"auth": "YOUR_LOGIN", "password": "YOUR_PASSWORD"}' \ http://localhost:3000/api/auth/login # Generate token curl -b /tmp/semaphore-cookie -XPOST \ http://localhost:3000/api/user/tokens
Usage
Running the MCP Server
semaphore-mcp
MCP Configuration
Add to your MCP client configuration (e.g., VS Code mcp.json):
{
"servers": {
"semaphore": {
"command": "semaphore-mcp",
"env": {
"SEMAPHORE_URL": "http://localhost:3000",
"SEMAPHORE_TOKEN": "your-token-here",
"READ_ONLY": "false"
}
}
}
}
Or for Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"semaphore": {
"command": "semaphore-mcp",
"env": {
"SEMAPHORE_URL": "http://localhost:3000",
"SEMAPHORE_TOKEN": "your-token-here"
}
}
}
}
Available Tools
| Tool | Description |
|---|---|
project_list |
List all projects |
project_get |
Get project details |
project_create |
Create a new project |
project_delete |
Delete a project |
task_list |
List tasks in a project |
task_get |
Get task details |
task_launch |
Launch a task from a template |
task_stop |
Stop a running task |
task_output |
Get task output/log |
task_delete |
Delete a task |
template_list |
List templates in a project |
template_get |
Get template details |
template_create |
Create a new template |
template_delete |
Delete a template |
inventory_list |
List inventories in a project |
inventory_get |
Get inventory details |
inventory_create |
Create a new inventory |
inventory_delete |
Delete an inventory |
repository_list |
List repositories in a project |
repository_get |
Get repository details |
repository_create |
Create a new repository |
repository_delete |
Delete a repository |
environment_list |
List environments in a project |
environment_get |
Get environment details |
environment_create |
Create a new environment |
environment_delete |
Delete an environment |
key_list |
List keys/credentials in a project |
key_get |
Get key details |
key_delete |
Delete a key |
schedule_list |
List schedules in a project |
schedule_create |
Create a new schedule |
schedule_delete |
Delete a schedule |
user_get_current |
Get current user info |
user_tokens |
List user API tokens |
event_list |
List project events |
server_info |
Get server version/info |
server_ping |
Check server connectivity |
Dependencies
This project uses python3-semaphore-client — an OpenAPI-generated Python client library for the Semaphore UI API (v2.16.14).
Development
# Install in development mode
pip install -e ".[dev]"
# Run directly
python -m src.semaphore_mcp_server
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file semaphore_mcp_server-0.1.1.tar.gz.
File metadata
- Download URL: semaphore_mcp_server-0.1.1.tar.gz
- Upload date:
- Size: 9.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa90b36de018377e5f18bef01282605bb137c4d7fb4cf670501114b38ff9de19
|
|
| MD5 |
3d60aef4897218dba50b8bf979284f18
|
|
| BLAKE2b-256 |
5c286ecaf5ae9bec01c10f26a7f061629db5ad56fc9d56331d671633d8408615
|
File details
Details for the file semaphore_mcp_server-0.1.1-py3-none-any.whl.
File metadata
- Download URL: semaphore_mcp_server-0.1.1-py3-none-any.whl
- Upload date:
- Size: 8.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aea0cb9391f85e4c446c6129c419d02371aba067aa4a8f206fc53a0453602f0f
|
|
| MD5 |
3705fd751062eb7939c0864e404e7a19
|
|
| BLAKE2b-256 |
5086a143584fe5bed6aa04c3f81b460d07d40550e0187b2577ea0322d48abe17
|