Sailfish Devel MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SAILFISH_DEVEL_MCP_LOG_DIR | No | Override the log directory for the server wrapper. The wrapper writes startup, shutdown, MCP request, and tool-call logs to ~/.local/state/sailfish-devel-mcp/server.log by default. | |
| SAILFISH_DEVEL_MCP_SERVER_LABEL | No | Set the server label used in the wrapper startup line so it matches the MCP client's server label. | |
| SAILFISH_SDK_BUILD_ENGINE_IMAGE | No | Override the wrapper image used for SDK builds. Defaults to sailfish-sdk-build-engine:$USER. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| sailfish_doctorA | Check helper compatibility, local tools, SDK targets and configuration without contacting devices. |
| sailfish_obs_watchB | Watch OBS until completion in a detached local job; use sailfish_build_status/cancel or the jobs CLI waiter. |
| sailfish_devicesA | List configured Sailfish OS device aliases and SSH targets. |
| sailfish_device_setupA | Check command availability and session configuration over SSH. By default this only reads device state. Explicit install_missing=true installs missing python3-base or mce-tools from existing repositories in a detached job; use sailfish_build_status/cancel. Missing base OS tools need manual repair. |
| sailfish_device_journalC | Read recent journalctl output from a Sailfish OS device. |
| sailfish_device_topmost_pidB | Query Lipstick for the current topmost window process id. |
| sailfish_device_proc_mapsC | Read or filter /proc//maps on a Sailfish OS device. |
| sailfish_device_lipstick_screenshotB | Ask Lipstick to save a screenshot on the device, optionally pulling it locally. |
| sailfish_device_touchC | Discover the touchscreen input device or inject tap/swipe events over SSH. |
| sailfish_device_touch_workflowC | Capture a Lipstick screenshot, optionally list touch inputs, then inject a tap or swipe. |
| sailfish_device_user_bus_callC | Run a typed dbus-send method call on the defaultuser session bus. |
| sailfish_device_user_session_commandA | Run a short command, limited to 15 seconds, with the configured Sailfish user-session D-Bus environment. Use sailfish_device_command_start for anything that may run longer. |
| sailfish_device_command_startA | Start a detached SSH command with the configured Sailfish user-session environment and immediately return a job id. Use this for GDB, tracing, and any device command that may exceed 15 seconds. |
| sailfish_device_command_statusA | List detached device command jobs or read one job's status. A bounded failure excerpt is included automatically; running logs are omitted by default. |
| sailfish_device_command_cancelB | Request cancellation of a detached device command and its process group. |
| sailfish_device_install_rpmB | Start a detached RPM copy/install transaction; use sailfish_build_status/cancel. |
| sailfish_device_restart_serviceC | Run systemctl start/stop/restart/status for a system or user service. |
| sailfish_device_app_launchA | Launch an installed .desktop entry using gio as the configured session user from their home. Detaches all streams and returns a launch receipt and remote log/status paths. Does not stop apps or boosters. Submission is not proof of foreground activation or rendering; verify separately. |
| sailfish_device_browser_launchB | Stop stale browser state, launch Sailfish Browser with display/session env, and report topmost PID details. |
| sailfish_build_rpmB | Start an asynchronous RPM build. Ordinary local builds share mb2 snapshots; custom inputs or an explicit key use an isolated original target. paths.local_sdk defaults to the live installed SDK, with third-party coderus Docker-image fallback only for explicit named releases. |
| sailfish_build_preflightB | Validate and return a structured Sailfish RPM build plan without mutating the project. |
| sailfish_build_statusA | Read status and recent log output for asynchronous Sailfish RPM build jobs. |
| sailfish_build_cancelB | Request cancellation of a local asynchronous Sailfish RPM build job. |
| sailfish_android_build_hostsB | List configured remote Android/AppSupport build hosts. |
| sailfish_android_buildA | Start a remote Android/AppSupport build under nohup on the configured build host; project_dir must be configured for the host or supplied. |
| sailfish_android_build_statusA | List remote Android/AppSupport build jobs or read one job's status and recent log output. |
| sailfish_android_build_cancelC | Cancel a remote Android/AppSupport build after verifying its process identity. |
| sailfish_sdk_refresh_metadataB | Start a detached SDK metadata refresh; use sailfish_build_status/cancel. |
| sailfish_obs_resultsA | Read OBS results. Use wait_seconds for bounded mechanical monitoring instead of repeated model-driven status calls. |
| sailfish_obs_buildlogC | Fetch a build log from a configured OBS server or explicit API alias; defaults to the API nostream form. |
| sailfish_repo_statusB | Run git status --short --branch under the configured git root. |
| sailfish_repo_findC | Search a repo or subtree under the configured git root. |
| sailfish_spec_summaryC | Parse high-level metadata from a Sailfish RPM spec file. |
| sailfish_qml_find_translationsC | Find qsTrId and translator comments in QML files. |
| sailfish_qml_check_translator_ternariesC | Flag QML ternary qsTrId expressions that need branch-local comments. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Effective configuration | Resolved configuration including private host identifiers and local paths; credential files are not read. |
| Tool summary | Names and descriptions of exposed tools. |
TDQS
Scored across 35 tools
Tools are grouped by domain and most have clearly distinct purposes, such as local RPM build, Android build, OBS, device SSH commands, and QML translation checks. Some boundaries blur because sailfish_build_status/cancel are reused for multiple local async jobs despite the 'build' name, and device_user_session_command vs device_command_start require reading descriptions to distinguish short from long-running commands.
All tool names use snake_case with a consistent sailfish_ prefix, which makes the set predictable. However, the suffix pattern is not uniformly verb_noun: sailfish_devices, sailfish_doctor, sailfish_spec_summary, and sailfish_obs_watch mix noun/state and action forms, though deviations are minor.
35 tools is heavy for a single MCP server, even though the server spans several subdomains including device, build, Android, OBS, repo, SDK, spec, and QML. The breadth justifies many tools, but the surface is at the upper end and could likely be consolidated in places.
The tool set covers a wide lifecycle: build planning, local and Android builds, device inspection and command execution, OBS monitoring, SDK refresh, repo search, spec parsing, and QML translation checks. Minor gaps remain, such as RPM uninstall, explicit app stop/termination, git write operations, and signing/deployment workflows.