TermPipe MCP (wbind-core/termpipe-mcp) is an MCP server listed on the M8ven Trust Index. It scores 36 out of 100, grade F. It declares 119 tools. No publisher has claimed this listing.

F
Warning
36/100

TermPipe MCP

Provides AI assistants with direct terminal access to execute commands, manage files, and run persistent REPL sessions. It features automated installation scripts that educate AI assistants on its capabilities for seamless integration.

Warning. Serious findings were identified. Review the full report before connecting. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

wbind-core

Source: Glama

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
⚠️
Tool descriptions don’t match what handlers do
3 tools describe read intent but their handlers mutate — cond_subscribe (line 315: proc = subprocess.Popen(); list_processes (line 183: proc = subprocess.run(); list_tools (line 438: res = subprocess.run([KB_PATH, "exec", "pwd"], capture_output=True, text=True, timeout=1))
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
Open source with a license and README
Anyone can audit the code, the license is declared, and the publisher documents what it does.
// tools this server exposes119 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

launch_app

Launch an application via normalized launch script. Args: app_name: App name (e.g., "Firefox", "Claude", "Visual_Studio_Code")

list_apps

List available launch scripts. Args: filter_term: Optional filter (e.g., "firefox", "code")

build

Build and deploy a project in a live terminal. Handles pre-build steps, compilation, service detection, restart, and optional service registration.

cond_get_active

Get info about the currently active/focused window.

cond_list_windows

List all available windows across all workspaces.

cond_focus

Focus a window by app-id or name (fuzzy match). Args: target: App ID or window title fragment

cond_close

Close a window by app-id or name (fuzzy match). Args: target: App ID or window title fragment

cond_snap

Snap active window to a screen region. Args: direction: left | right | top | bottom | maximize | center | next | prev

cond_move_window

Move a window. x/y can be pixels or 0.0-1.0 percentage of screen. Args: window_id: Window ID from cond_list_windows x: X position (pixels or 0.0-1.0) y: Y position (pixels or 0.0-1.0)

cond_resize_window

Resize a window. w/h can be pixels or 0.0-1.0 percentage. Args: window_id: Window ID from cond_list_windows w: Width (pixels or 0.0-1.0) h: Height (pixels or 0.0-1.0)

cond_save_layout

Save current window layout to a numbered slot (1-9). Args: slot: Layout slot number

cond_restore_layout

Restore a previously saved window layout. Args: slot: Layout slot number

cond_type

Type text into the active window via compositor input injection. Args: text: Text to type

cond_key

Send a key combination. Separate keys with space or ,,. Examples: 'ctrl+c', 'super,,space', 'ctrl+alt+t' Args: combo: Key combination string

cond_mouse_move

Move the mouse cursor. Args: coords: 'x,y' in pixels e.g. '100,200'

cond_mouse_click

Click a mouse button. Args: button: left | right | middle

cond_launch

Launch an application by name (uses cond app database, fuzzy match). Args: app_name: Application name

cond_search_apps

Search installed applications matching a pattern (supports regex). Args: pattern: Name pattern or regex

cond_get_app_cmd

Get the launch command for an app by name. Args: app_name: Application name

cond_clipboard_get

Get current clipboard content.

cond_clipboard_set

Set clipboard content. Args: text: Content to place in clipboard

cond_clipboard_paste

Trigger Ctrl+V to paste current clipboard content into active window.

cond_screenshot

Take a full-screen screenshot. Auto-copies to clipboard. Args: path: Optional save path. If omitted, clipboard only.

cond_ocr

Capture active window, run AI OCR (qwen-vl via iflow), copy result to clipboard. Returns the recognized text.

cond_ocr_file

Run AI OCR on an existing image file and copy result to clipboard. Args: path: Path to image file

cond_list_hotkeys

List all registered hotkeys.

cond_register_hotkey_script

Register a hotkey to execute a shell script. Args: key: Key combination e.g. 'ctrl+alt+t' script: Shell command or script path to execute

cond_register_hotkey_input

Register a hotkey to execute input commands (type, key, click, etc). Args: key: Key combination command: Input command string

cond_clear_hotkeys

Clear all registered hotkeys.

cond_save_hotkeys

Save current hotkey config to a file. Args: path: Destination file path

cond_load_hotkeys

Load hotkey config from a file. Args: path: Source file path

cond_subscribe

Subscribe to a real-time event stream for a bounded duration. Collects events and returns them as a JSON list.

cond_daemon_send

Send a command directly to the condd daemon via named pipe. Faster than subprocess for high-frequency operations.

cond_visual_query

Take a screenshot and ask cond's built-in vision model to analyze it. Returns plain-text analysis, or structured JSON element map if as_schema=True.

cond_verify_launch

Verify that an application launched successfully by taking a screenshot and asking qwen-vl for a structured verdict.

debug_assist

AI debugging assistant via openrouter — fast, always available.

analyze_file_structure

AI-powered analysis of a file's structure and content. Useful when you need to understand a file before editing it, or when the file structure is unexpected. Args: path: File path to analyze

suggest_edit_approach

AI suggests the best approach for editing a file. Tell it what you want to accomplish, and it recommends which surgical tools to use and in what order. Args: file_path: File you want to edit goal: What you're trying to accomplish

read_file

Read contents of a file. Supports partial reads. Args: path: File path (supports ~ for home) offset: Start line (0-based). Negative = from end length: Max lines to read

write_file

Write content to a file (overwrites). Args: path: File path (supports ~ for home) content: Content to write

append_file

Append content to a file. Args: path: File path (supports ~ for home) content: Content to append

list_directory

List files and directories in a path. Args: path: Directory path (supports ~ for home)

glob_files

Find files matching a glob pattern. Args: pattern: Glob pattern (e.g., "*.py", "**/*.json") path: Root directory

search_file_content

Synchronous grep-like search — returns results immediately in one call.

get_file_info

Get file metadata (size, modified time, etc). Args: path: File path

move_file

Move or rename a file/directory. Args: source: Source path destination: Destination path

create_directory

Create a directory (including parents). Args: path: Directory path to create

write_batch

Write multiple files atomically — all succeed or none do.

gemini_debug

Gemini-powered debugging assistant — second opinion via Gemini CLI subprocess.

gemini_analyze

Gemini-powered file analysis - understand a file before editing. Args: path: File path to analyze

gemini_suggest

Gemini suggests how to edit a file - get edit strategy from Gemini. Args: file_path: File you want to edit goal: What you're trying to accomplish

git_log

Show git commit history for a repository.

git_diff

Show git diff — working tree, staged changes, or between commits/branches.

git_status

Show working tree status — modified, staged, untracked files.

git_show

Show the full diff and metadata for a specific commit.

git_blame

Show who last modified each line of a file (git blame).

ifp_send

Send a prompt to local omniproxy (qwen2.5-coder-7b-instruct).

ifp_model

No-op: all inference is fixed to qwen2.5-coder-7b-instruct via local omniproxy.

ifp_status

Get iFlow status and current configuration.

list_sessions

List all active terminal sessions (running processes). Shows session status including PID, blocked status, and runtime.

read_process_output

Read output from a running process (REPL/interactive session).

interact_with_process

Send input to a running process (REPL, interactive shell, etc).

force_terminate

Force terminate a running process by PID.

list_processes

List all running processes (system-wide).

start_search

Start a streaming search. Args: pattern: What to search for path: Root directory searchType: "files" or "content" filePattern: Filter to specific file types ignoreCase: Case-insensitive search literalSearch: Exact string matching maxResults: Maximum results contextLines: Lines of context around matc

get_more_search_results

Get results from an active search. Args: sessionId: Search ID from start_search offset: Start index length: Number of results to return

stop_search

Stop and clean up a search. Args: sessionId: Search ID to stop

list_searches

List all active searches.

indent

Indent a range of lines by N spaces (0-based, end exclusive).

unindent

Remove up to N leading spaces from a range of lines (0-based, end exclusive).

read_lines

Read specific line range from a file (0-based).

find_in_file

Find pattern in file with line numbers and optional context lines.

read_multiple_files

Read contents of multiple files at once.

smart_replace

Content-addressed find-and-replace with full diagnostics.

remove_duplicates

Remove consecutive duplicate lines in a range.

undo

Undo the last N edits.

history

Show edit history for this session.

insert_lines

Insert lines BEFORE line_number (0-based).

delete_lines

Delete lines start_line..end_line-1 (0-based, end exclusive).

overwrite_lines

Replace a contiguous block of lines with new content (formerly replace_lines).

patch_line

Replace a substring within a single known line (formerly replace_at_line).

system_info

Get high-level system and TermPipe metadata.

get_config

Get current TermPipe configuration.

get_recent_tool_calls

Get recent tool call history.

list_tools

List available tools with tactical briefing and auto-context.

boot

Mid-session context refresh with integrated briefing.

telemetry_report

Query tool-call telemetry from ~/.termpipe/telemetry.db.

reload_tools

Hot-reload all tool modules.

termf_exec

Execute a shell command via TermPipe (existing method, preserved). Args: command: Shell command to execute timeout_ms: Optional timeout in milliseconds run_in_bg: Run in background and return PID

termf_live_exec

Inject a command into a live WezTerm pane via 'wezterm cli send-text'.

termf_live_continue

Execute another command in an existing terminal session. Args: session_id: Session ID from termf_live_exec command: Next command to execute Returns: Command output

termf_live_output

Retrieve latest output from a terminal session. Args: session_id: Optional session ID. If omitted, returns most recent output. Returns: Latest terminal output

termf_list_sessions

List all active terminal sessions.

termf_nlp

Execute NLP command via TermPipe. Translates natural language to CLI. Args: instruction: Natural language instruction

termf_nlp_alias

Generate and install a shell alias/function from natural language. Args: description: What the alias should do

termf_hsp_pipeline

Run command through HSP micro-pipeline for automatic error correction. This implements the full 1-2-3-4 HSP pattern: 1. Execute command in terminal 2. Analyze output for errors 3. Suggest and apply fixes 4. Re-execute and verify 5. Loop until success or max_loops Args: command: Initial command to tr

thread_log

Log a message to the coordination thread.

thread_read

Read recent entries from the coordination thread.

wbind_action

Execute WBind GUI automation actions.

wbind_launch_and_focus

Launch an app and bring it to a known state. Args: app_name: App name (e.g., "Firefox", "Claude") maximize: Whether to maximize the window fullscreen: Whether to make fullscreen with F11

19 further tools are not listed here. The complete surface is in the source.

// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configSHELL
configXDG_CONFIG_HOME
configTERMCP_URL"env": { "": "http://localhost:8421" }
configXDG_SESSION_TYPE
configVIRTUAL_ENV
configWEZTERM_UNIX_SOCKET
configWEZTERM_PANE
configDBUS_SYSTEM_BUS_ADDRESS
configDBUS_SESSION_BUS_ADDRESS
configDISPLAY
// quality suggestions

Tool annotations

No tools have read-only/destructive annotations

Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.

All four hints declared on every tool

119/119 tools missing one or more hints — launch_app (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); list_apps (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); build (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +116 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.

For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.

Destructive tools are labelled

1 tool perform destructive updates without destructiveHint — write_batch deletes at line 391 (p.unlink(missing_ok=True) # file didn't exist before — delete it)

Add destructiveHint:true to any tool whose handler calls .delete(), .upsert(), .update(), unlink, rm, DELETE, DROP, REPLACE INTO, or any operation that overwrites existing data.

Descriptions match behaviour

3 tools describe read intent but their handlers mutate — cond_subscribe (line 315: proc = subprocess.Popen(); list_processes (line 183: proc = subprocess.run(); list_tools (line 438: res = subprocess.run([KB_PATH, "exec", "pwd"], capture_output=True, text=True, timeout=1))

Rename the tool, rewrite the description, or move the side-effect into a separate clearly-named tool.

Tool inputs are validated

103/119 tool handlers declare input schemas (87%)

Declare an inputSchema with zod/joi/yup on every tool definition.

Tool handlers catch errors

Only 45/119 tool handlers wrap calls in try/catch (38%)

Wrap each tool handler body in try/catch and return a structured error response.

Tests exist

No test files found

Add tests that exercise each declared tool.

Shell command execution

2 child_process calls — runs shell commands

Prefer library functions over shell-outs. If you must shell out, ensure all inputs are properly escaped.

Tool description accuracy

4 tools have description/behavior mismatches: cond_subscribe: description implies read-only but handler writes/deletes/executes; list_processes: description implies read-only but handler writes/deletes/executes; start_search: description implies read-only but handler writes/deletes/executes

Update tool descriptions to accurately reflect all capabilities — especially write, delete, or execute operations.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 9 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/wbind-core/termpipe-mcp?variant=verified)](https://m8ven.ai/mcp/wbind-core/termpipe-mcp)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: 718b9c4e04b80ed7fa731161f14ba95ce3fddfa6
code hash: 257cbc7662502b3518ea196caa82c38bc9b9f6a9ba3e89e02312457b9d1da7f2
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client