Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoPort for the SeaShell MCP server to listen on, passed via the --port argument (e.g. --port 9876 for Claude Desktop, --port 9879 for Claude Code CLI).
SEASHELL_ALLOW_SECRET_READNoSet to 1 (e.g. SEASHELL_ALLOW_SECRET_READ=1) in the server environment to allow wave_secret_get to return plaintext secret values; otherwise the plaintext value is withheld.

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

CapabilityDetails
tools
{
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
suggest_commandC

Suggests a terminal command based on the user's request

execute_commandB

Executes a terminal command and captures its output. Runs silently by default (no visible block). Pass show_in_wave=true only when you want the user to watch the command run in a visible Wave Terminal block — e.g. a build, install, or multi-step process. For 5 consecutive commands, leave show_in_wave unset so they all run quietly without cluttering Wave.

execute_with_auto_retrieveA

Executes a command and automatically waits for and returns its output. Preferred for quick commands that don't need a visible terminal tab. Use open_terminal_tab only for long-running processes like builds or servers.

preview_commandB

Preview a command without executing it

get_command_outputC

Retrieve the output of a previously executed command

execute_pipelineB

Execute a pipeline of commands with conditional logic (stop/continue/warn on failure)

execute_with_streamingB

Execute a command with real-time output streaming - ideal for long-running builds

save_templateB

Save a command template with variables for reuse

run_templateC

Execute a saved command template with variable substitution

list_templatesB

List all saved command templates

list_recent_commandsB

List recent commands from history with status, duration, and exit codes

self_checkB

Run health check on configuration, database, terminal, and recent error rates

copy_to_clipboardA

Copy text to the macOS system clipboard

read_from_clipboardA

Read the current contents of the macOS system clipboard

set_notification_preferenceC

Toggle macOS notification preferences for command completion alerts

get_environment_contextB

Get current terminal environment context including git branch, active venv, node version, docker status, and working directory

execute_and_parseB

Execute a command and return structured parsed output (supports git status, git log, docker ps, test results, ls -la, and JSON)

capture_environmentB

Capture a snapshot of the current shell environment variables with a named label

diff_environmentB

Compare two environment snapshots and show additions, removals, and changes

save_workspace_profileB

Save current project context as a named workspace profile (directory, commands, env vars, terminal preference)

load_workspace_profileB

Load a saved workspace profile to restore project context

list_workspace_profilesB

List all saved workspace profiles

delete_workspace_profileC

Delete a saved workspace profile

open_terminal_tabA

Open a new named terminal tab. ONLY use for long-running commands that need their own visible tab (builds, installs, servers, cloning repos). For quick commands, prefer execute_command or execute_with_auto_retrieve instead. If a session already exists, use send_to_session to reuse it.

send_to_sessionA

Send a command to an existing named terminal session, reusing its tab. Always prefer this over opening a new tab when a relevant session already exists. Use list_sessions first to check for available sessions.

list_sessionsA

List all active terminal sessions. Check this before opening new tabs to avoid creating duplicates. Reuse existing sessions with send_to_session whenever possible.

close_sessionA

Close a named terminal session and optionally close its tab. Use to clean up sessions that are no longer needed. Pass close_tab: true to also close the terminal tab.

cleanup_sessionsA

Remove stale terminal sessions that have been inactive. Use periodically to clean up accumulated tabs. Sessions inactive longer than inactive_minutes (default: 30) are removed. Set close_tabs to true to also close the terminal tabs.

add_file_watchC

Set up a file system watcher that triggers a command when files change

remove_file_watchB

Remove an active file system watcher

list_file_watchesB

List all active file system watchers

ssh_executeB

Execute a command on a remote host via SSH (key-based authentication only)

save_ssh_profileC

Save an SSH connection profile for quick reuse

list_ssh_profilesA

List all saved SSH connection profiles

delete_ssh_profileC

Delete a saved SSH connection profile

check_interactiveA

Check if a command is interactive (requires TTY/stdin) before executing it. Returns safety level: safe, cautious, interactive, or blocked with suggestions for non-interactive alternatives

wave_get_settingsA

Read Wave Terminal settings from ~/.waveterm/settings.json. Optionally filter by namespace prefix (e.g. 'ai', 'term', 'window', 'app').

wave_get_widgetsA

List all custom widgets configured in Wave Terminal (from ~/.waveterm/widgets.json).

wave_get_ai_presetsA

List all AI model presets configured in Wave Terminal (from ~/.waveterm/aipresets.json).

wave_get_backgroundsA

List all tab background definitions in Wave Terminal (from ~/.waveterm/backgrounds.json).

wave_set_settingA

Update a single Wave Terminal setting in settings.json. First call returns a confirmation; pass approved=true to execute. Examples of keys: 'ai:model', 'term:theme', 'term:fontsize', 'app:tabbar'.

wave_create_widgetA

Create a new custom widget in Wave Terminal (writes to ~/.waveterm/widgets.json). First call returns a confirmation; pass approved=true to execute.

wave_update_widgetA

Update an existing Wave Terminal widget. First call returns a confirmation; pass approved=true to execute.

wave_delete_widgetA

Remove a custom widget from Wave Terminal. First call returns a confirmation; pass approved=true to execute.

wave_set_ai_presetA

Create or update a Wave Terminal AI model preset in ~/.waveterm/aipresets.json. First call returns a confirmation; pass approved=true to execute.

wave_set_themeA

Set the Wave Terminal theme (writes 'term:theme' to settings.json). First call returns a confirmation; pass approved=true to execute.

wave_set_appearanceA

Update Wave Terminal window or terminal appearance settings (writes to settings.json). First call returns a confirmation; pass approved=true to execute. Supported: font_size, font_family, transparency, tab_bar, ctrl_v_paste, confirm_quit, mac_option_is_meta, bell_sound, bell_indicator, default_new_block.

wave_helper_statusA

Check whether the Seashell Helper block is connected. Shows which tool tier is available.

wave_connect_helperB

Connect the MCP server to the Seashell Helper block running inside Wave Terminal. The helper must already be running (open the Seashell Helper widget in Wave first).

wave_list_workspacesA

List all Wave Terminal workspaces with their IDs, names, icons, and colours. Requires the Seashell Helper block to be running.

wave_list_blocksA

List blocks in Wave Terminal, optionally filtered by workspace, tab, or view type. Requires the Seashell Helper block.

wave_create_blockA

Create a new block in Wave Terminal. First call returns a confirmation; pass approved=true to execute. Requires the Seashell Helper block.

wave_delete_blockA

Delete a block from Wave Terminal. First call returns a confirmation; pass approved=true to execute. Requires the Seashell Helper block.

wave_get_scrollbackA

Get terminal scrollback content from a Wave block. Requires the Seashell Helper block.

wave_run_in_blockA

Run a command in a new Wave Terminal block. First call returns a confirmation; pass approved=true to execute. Requires the Seashell Helper block.

wave_view_fileB

Open a file in a Wave Terminal preview block. Requires the Seashell Helper block.

wave_edit_fileA

Open a file for editing in Wave Terminal. First call returns a confirmation; pass approved=true to execute. Requires the Seashell Helper block.

wave_secret_listA

List all Wave Terminal secret keys (Tier C — requires approved=true and a non-empty reason). Requires the Seashell Helper.

wave_secret_setB

Set a Wave Terminal secret (Tier C — requires approved=true and a non-empty reason). Requires the Seashell Helper.

wave_secret_getA

Read a Wave Terminal secret (Tier C — requires approved=true and a non-empty reason). The plaintext value is withheld unless SEASHELL_ALLOW_SECRET_READ=1. Requires the Seashell Helper.

wave_secret_deleteA

Delete a Wave Terminal secret (Tier C — requires approved=true and a non-empty reason). Requires the Seashell Helper.

wave_create_fish_widgetA

Add a Fish shell widget to the Wave widget bar (convenience wrapper around wave_create_widget). First call returns a confirmation; pass approved=true to execute.

wave_bootstrap_workspaceA

Bootstrap a Wave tab with a project-specific block layout. Templates: general, python-dev, node-dev, swift-dev. First call returns a confirmation; pass approved=true to execute. Requires the Seashell Helper.

read_user_inboxA

Drain unread notes the user left for Claude via the seashell-msg shell command. Aggregates across the global inbox (~/.seashell/inbox.jsonl) AND every registered project inbox (.seashell-inbox/inbox.jsonl in each project root). Each note carries a timestamp, working directory, project label, and (optionally) attachments + a reply_token. Read messages are archived. Call this when the user's chat message is brief or implies they were elsewhere (e.g. "?", "continue", "check inbox"). If any returned message has a reply_token, you should answer via reply_to_user.

inbox_countA

Cheap peek across the global inbox + every registered project inbox. Returns total unread count, age of the oldest message, and a per-project breakdown. Call before read_user_inbox if you only want to know whether anything is waiting.

inbox_historyB

Browse archived messages across all inboxes (global + every registered project). Sorted most-recent-first.

reply_to_userA

Post a reply to a user inbox message. Use this when a message returned by read_user_inbox had a reply_token — that means the user invoked seashell-ask and is blocking on your answer. The reply is written to the appropriate replies.jsonl (global or per-project) and seashell-ask picks it up within ~1 second. If the user just left a note via seashell-msg (no reply_token), no reply call is needed — answer in chat normally.

read_my_repliesA

Browse the OUTBOUND history — replies you've previously sent via reply_to_user. Aggregates across the global inbox and every registered project's replies.jsonl. Use this to answer questions like "what was the last thing you said in this project?" or "what did you tell me about X?" without needing to manually open the file. Sorted most-recent-first.

read_session_transcriptA

Read the most recent N turns of a Claude Code session's transcript, without resuming it. Use this when the user asks 'what's the status of project X?' or 'what did we last talk about in ?' — you read the actual transcript instead of relying on memory. Resolution: pass project (fuzzy name) and Seashell follows the project's .seashell-inbox/primary-session.txt pointer (or falls back to the largest .jsonl in that project's Claude Code dir). Or pass session_id (full UUID or prefix) for direct lookup. Returns formatted user/assistant turns; tool calls are flagged with [used: <tool>] and thinking blocks with [thought]. Long messages auto-truncate.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 69 tools

Disambiguation2/5

Several clusters of tools have fuzzy boundaries: execute_command, execute_with_auto_retrieve, execute_with_streaming, execute_pipeline, execute_and_parse, preview_command and suggest_command all occupy 'run a command' space, and wave_set_setting / wave_set_theme / wave_set_appearance overlap heavily. The verbose descriptions do mitigate this, but an agent still faces real misselection risk across the execution and Wave-config families. wave_create_widget vs wave_create_fish_widget vs wave_bootstrap_workspace are another near-duplicate trio.

Naming Consistency4/5

Predominantly consistent snake_case verb_noun (execute_command, list_templates, save_ssh_profile, wave_list_blocks), with the wave_ family acting as a clean namespace. Minor deviations exist (ssh_execute inverts the verb_noun order, add_file_watch departs from the execute/list pattern), but overall readable and predictable.

Tool Count1/5

69 tools is far beyond a well-scoped surface and includes many convenience wrappers (wave_create_fish_widget wraps wave_create_widget). The count reflects an accumulation of features rather than a deliberately designed set, and the sheer volume contributes directly to the disambiguation problems.

Completeness4/5

Coverage is genuinely broad and lifecycle-oriented: command execution, sessions, templates, environment snapshots, workspace profiles, SSH profiles, file watches, Wave config/blocks/secrets, and the inbox/reply/transcript flow. Small gaps remain — templates have list/save/run but no delete or update, and environment snapshots can be captured and diffed but not listed or removed.

Maintenance

ActivityNo data
ResponsivenessSyncing