Back to directory

local-shell-mcp

Curated pickMaintenance: Active

fwerkor/local-shell-mcp

Enables LLM to use a cli environment.

View on GitHubHomepage
$ curl -i http://127.0.0.1:8765/healthz

58

stars

13

forks

Python

Language

MIT

License

2026-05-25

Created

2026-08-27

Last push

MIT-licensed, Python control plane that turns DeepSeek Harness into a scoped shell/filesystem/remote-execution agent via a DSH plugin bundle; container/VM-bounded safety, OAuth, audit logs, and remote-worker reach into firewalled machines.

DSH integration

Native runtime

Author-claimed

Safety audit

Unaudited

Last verified

2026-09-02

License

MIT

01What can it help you accomplish?

  • Run shell, filesystem, Git, and Playwright tasks from DeepSeek Harness against a controlled workspace

    A scoped /workspace with shell, persistent shell, filesystem, search, patch, Playwright, audit, durable logical sessions, file links, and outbound remote-worker access

    DeepSeek Harness users who want to give an LLM a real, scoped execution environment instead of a sandboxed toy

  • Control NAT-, firewall-, or HPC-bound machines that can only connect outward, from a DSH conversation

    One-time remote-worker invites and a `machine` argument on normal tools, so DSH can drive lab/HPC/NPU hosts through outbound HTTPS

    Platform and infra teams running DeepSeek Harness against machines behind strict firewalls or without inbound connectivity

02How to install into DeepSeek Harness

Prerequisites

  • A normal LSM HTTP/MCP service already running on the same host (the bundle installs into an existing service)
  • Python 3.11+ (the README shows a python-3.11+ badge for the project)
  • Docker, for the `docker compose up -d` runtime used in the quick start
  • A DeepSeek Harness profile to install into (the README uses the `web` profile)
  • OAuth values in `.env` for public/HTTPS deployments: `LOCAL_SHELL_MCP_AUTH_MODE=oauth`, an admin PIN, and a JWT secret

Installation steps

  1. 01

    Start the LSM service on the host: `mkdir -p workspaces/default` then `docker compose up -d`, and confirm with `curl -i http://127.0.0.1:8765/healthz`

    $ curl -i http://127.0.0.1:8765/healthz

  2. 02

    Install the plugin bundle into a DSH profile: `dsh plugin --profile web add 'github:fwerkor/local-shell-mcp#main'`

    $ dsh plugin --profile web add 'github:fwerkor/local-shell-mcp#main'

  3. 03

    For production, pin the Git spec to a reviewed release or commit instead of the moving `main` branch

Verify the integration

  • The health check returns 200: `curl -i http://127.0.0.1:8765/healthz`
  • DSH exposes the model tools under the `mcp__lsm__*` namespace

03DSH integration and capability boundaries

DSH integrationNative runtime

Install the repo as a DSH plugin bundle via the dsh CLI; an LSM-aware Streamable HTTP bridge exposes the full LSM tool surface (including remote workers) inside your DSH profile.

  • Workspace shell & filesystem

    shell commands, file paths, and patches under the controlled rootshell / persistent shell output, file read/write/edit/patch/grep/glob, and audit-tracked activity

    runs commands inside the container/VMwrites and patches files under the workspace root
  • Remote workers

    a one-time invite and an optional `machine` argument on normal toolscontrol of NAT/firewall/HPC/NPU/lab machines that connect outward over HTTPS

    runs commands on remote worker machinesopens outbound HTTPS connections to remote endpoints
  • Browser automation (Playwright)

    browser session actions and optional Playwright scriptspage text, PNG/PDF evidence captures, and full Playwright script runs

    launches a headless browser and runs page scripts
  • Dynamic MCP tools

    external MCP server configsprogressively discovered external tools via `mcp_manage` / `mcp_tool_search` / `mcp_tool_inspect` / `mcp_tool_call`

    spawns dynamic stdio MCP servers with a minimal OS environment

04Who is it for? When not to use it?

Good for

  • DeepSeek Harness users who want to give an LLM a real, scoped execution environment instead of a sandboxed toy
  • Platform and infra teams running DeepSeek Harness against machines behind strict firewalls or without inbound connectivity

Not for

  • The connected model is treated as having control of the container or VM — the intended safety boundary is the container/VM, not the host. Run it in a disposable container or VM and do not mount the host root or /var/run/docker.sock.
  • Never expose the service with `LOCAL_SHELL_MCP_AUTH_MODE=none` on a public network; use `oauth` and keep long-lived credentials out of model-visible environment variables.

05Compatibility, maintenance and safety notes

  • The connected model is treated as having control of the container or VM — the intended safety boundary is the container/VM, not the host. Run it in a disposable container or VM and do not mount the host root or /var/run/docker.sock.
  • Never expose the service with `LOCAL_SHELL_MCP_AUTH_MODE=none` on a public network; use `oauth` and keep long-lived credentials out of model-visible environment variables.
2026-05-252026-08-27v4.2.1

MIT · actively maintained (latest release v4.2.1, 2026-08-25)

06Frequently asked questions

What is the DeepSeek Harness integration mode?

The repository is a DSH plugin bundle. With a normal LSM service running on the same host, run `dsh plugin --profile web add 'github:fwerkor/local-shell-mcp#main'` to install it into a DSH profile; an LSM-aware Streamable HTTP bridge exposes the full LSM tool surface.

How are my DSH conversations isolated from each other?

Each DSH Session gets a stable v4 logical-session identity, so its Logical Session, active run, Activity, and native Live Workspace view stay isolated from other DSH conversations and survive DSH-side MCP transport recreation.

What tool namespace does DSH see?

DSH sees the model tools under the normal `mcp__lsm__*` namespace, including remote workers, browser tools, and Dynamic MCP tools.

Should I pin the version when installing?

For production the README advises pinning the Git spec to a reviewed release or commit rather than the moving `main` branch.

Is the service safe to expose publicly?

The intended safety boundary is the container or VM, not the host. Use OAuth, run it in a disposable container/VM, never expose it with `LOCAL_SHELL_MCP_AUTH_MODE=none` on a public network, and keep long-lived credentials out of model-visible env vars.

08Data and sources

  • Author-claimedgithub.com46be7e1e0de9…

    The repository root is also a DSH plugin bundle.

  • Author-claimedgithub.com46be7e1e0de9…

    dsh plugin --profile web add 'github:fwerkor/local-shell-mcp#main'

  • Author-claimedgithub.com46be7e1e0de9…

    The bundle uses an LSM-aware Streamable HTTP bridge and keeps the complete LSM tool surface, including `remote_manage`,…

  • Author-claimedgithub.com46be7e1e0de9…

    DSH sees model tools under the normal `mcp__lsm__*` namespace.

This page is generated from the project’s public documentation, repository metadata and a structured parse of DSH Plugins; last verified on 2026-09-02. Found an error? Submit a correction.

🏆

Best DeepSeek Harness Plugins

Twelve plugins worth installing first — picked from the whole catalog, across every category.

DSH Plugins is an independent community directory of DeepSeek Harness plugins. Not affiliated with or endorsed by DeepSeek. Third-party plugins are not security-audited — review the source before installing.

New DeepSeek Harness plugins, weekly. No spam.