Skip to main content
Glama
sureshgollamudi

local-mcp-server

local-mcp-server

Local MCP server with Docker Compose and one-command wrappers.

What this provides

  • File access tools scoped to one allowed root directory

  • Local command execution via an allow-list

  • Read-only Postgres query tool

  • Dockerized startup with one command

Related MCP server: hardened-terminal-mcp

Prerequisites

  • Docker Desktop (running)

One-time setup

  1. Start from project root.

  2. Run:

chmod +x scripts/start-local-mcp.sh scripts/stop-local-mcp.sh scripts/register-mcp-client.sh
./scripts/start-local-mcp.sh

On first run, the script creates .env from .env.example and exits.

  1. Edit .env and set at least:

  • MCP_ALLOWED_ROOT

  • DB_PASSWORD

  • Optional: any DB values if your local DB differs

  1. Run again:

./scripts/start-local-mcp.sh

Daily usage

Start:

./scripts/start-local-mcp.sh

Stop:

./scripts/stop-local-mcp.sh

Logs:

docker compose -f /Users/suresh.gollamudi/projects/marketplace-code-review/local-mcp-server/docker-compose.yml logs -f local-mcp

Status:

docker compose -f /Users/suresh.gollamudi/projects/marketplace-code-review/local-mcp-server/docker-compose.yml ps

Auto-register MCP client (VS Code + Cursor)

Use the auto-detect script to register this server in supported local client config files:

./scripts/register-mcp-client.sh

Dry-run preview only:

./scripts/register-mcp-client.sh --dry-run

Target one client explicitly:

./scripts/register-mcp-client.sh --target vscode
./scripts/register-mcp-client.sh --target cursor

What it updates:

  • VS Code (recommended): ~/Library/Application Support/Code/User/mcp.json under servers

  • Cursor (if present): ~/Library/Application Support/Cursor/User/mcp.json under servers

  • Cursor fallback: ~/.cursor/mcp.json under servers

The script also removes any legacy VS Code settings.json entry for this server.

The script creates backup files before writing any existing config.

MCP endpoint

  • http://localhost:3000/mcp

Tools exposed by this server

  • list_files(relative_path)

  • read_text_file(relative_path, max_chars)

  • run_local_command(command, args, timeout_sec)

  • query_postgres_readonly(sql, limit)

Security defaults

  • Filesystem access constrained to MCP_ALLOWED_ROOT

  • Command execution constrained to an allow-list in server.py

  • SQL constrained to SELECT/WITH only

Initialize as a local git repo

git init
git add .
git commit -m "Initial local MCP server scaffold"

Related MCP Connectors

Related MCP Servers