AgentStack
MCP verified BSD-3-Clause Self-run

Mcpd

mcp-pouriya-mcpd · by pouriya

A ~3MB MCP daemon that exposes any script as a tool for Claude, Cursor & AI assistants

No reviews yet
0 installs
11 views
0.0% view→install

Install

$ agentstack add mcp-pouriya-mcpd

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Mcpd? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

mcpd

MCP daemon — expose simple scripts as MCP tools and resources.

mcpd is an MCP (Model Context Protocol) server that turns any executable script into an MCP tool. It discovers scripts in a directory, extracts metadata via --help, and exposes them to MCP clients like Claude, Cursor, or any LLM-based agent.

Features

mcpd is a ~3MB executable that includes:

  • Scripts as Tools: Any executable becomes an MCP tool automatically
  • Self-describing Scripts: Scripts define their own options via --help output
  • Stateful Resources: Scripts can expose state via MCP resources
  • HTTP/HTTPS: JSON-RPC over HTTP transport with TLS support
  • Web Dashboard: Built-in UI to browse and test tools (enabled by default)
  • Authentication: Optional username/password, bearer tokens, and CAPTCHA support
  • Cross-platform: Single binary for Linux, macOS, and Windows

Download

Latest builds (single binary, no install):

| Platform | Download | |----------|----------| | macOS (Apple Silicon) | mcpd-aarch64-apple-darwin | | Linux (x8664, musl) | mcpd-x8664-unknown-linux-musl | | Windows (x8664) | mcpd-x8664-pc-windows-msvc.exe | | Docker | ghcr.io/pouriya/mcpddocker pull ghcr.io/pouriya/mcpd:latest |

After download: make the file executable on macOS/Linux (chmod +x mcpd-...).

Quick Start

Using Docker

# Create a directory for your scripts
mkdir -p scripts

# Create a date example script with description and options
cat > scripts/date &2
  exit 0
fi

# Use format from environment variable if provided
if [ -n "$format" ]; then
  date "$format"
else
  date
fi
EOF
chmod +x scripts/date

# Run mcpd with Docker
docker run --rm -it -p 1995:1995 -v "$(pwd)/scripts:/var/lib/mcpd" ghcr.io/pouriya/mcpd:latest

Open your browser to http://localhost:1995 to access the web dashboard and test your tools.

Using with AI Assistants

Once mcpd is running, configure your AI assistant to connect to it.

Cursor

Add to your .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "mcpd": {
      "url": "http://localhost:1995/api/mcp"
    }
  }
}

Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "mcpd": {
      "url": "http://localhost:1995/api/mcp"
    }
  }
}

OpenAI Codex CLI

Add to your ~/.codex/config.json:

{
  "mcpServers": {
    "mcpd": {
      "url": "http://localhost:1995/api/mcp"
    }
  }
}

Any MCP Client

Point your MCP client to the endpoint:

http://localhost:1995/api/mcp

Configuration

Click to expand all configuration options

HTTP Server Options

| Option | Env Variable | Default | Description | |-------|--------------|---------|-------------| | --http-host | MCPD_HTTP_HOST | 127.0.0.1 | HTTP server listen address | | --http-port | MCPD_HTTP_PORT | 1995 | HTTP server listen port number | | --http-base-path | MCPD_HTTP_BASE_PATH | / | HTTP server base path (currently not used) | | --http-tls-cert-file | MCPD_HTTP_TLS_CERT_FILE | - | TLS certificate file (enables HTTPS when used with --http-tls-key-file) | | --http-tls-key-file | MCPD_HTTP_TLS_KEY_FILE | - | TLS private key file (enables HTTPS when used with --http-tls-cert-file) | | --http-read-timeout-secs | MCPD_HTTP_READ_TIMEOUT | 5 | Read timeout for client connections in seconds | | --http-write-timeout-secs | MCPD_HTTP_WRITE_TIMEOUT | 5 | Write timeout for client connections in seconds |

HTTP Authentication Options

| Option | Env Variable | Default | Description | |-------|--------------|---------|-------------| | --http-auth-username | MCPD_HTTP_AUTH_USERNAME | ` | Authentication username (defaults to admin if password is set) | | --http-auth-password-file | MCPDHTTPAUTHPASSWORDFILE | - | A file containing bcrypt(password: sha256(plain_password) of your user password | | --http-auth-password-sha256-bcrypt | MCPDHTTPAUTHPASSWORDSHA256BCRYPT | - | A file containing bcrypt(password: sha256(plain_password) of your user password | | --http-auth-captcha | MCPDHTTPAUTHCAPTCHA | false | Enable CAPTCHA for authentication | | --http-auth-captcha-case-sensitive | MCPDHTTPAUTHCAPTCHACASESENSITIVE | false | Make CAPTCHA case-sensitive | | --http-auth-api-token | MCPDHTTPAUTHAPITOKEN | - | Hardcoded bearer token that never expires | | --http-auth-token-timeout | MCPDHTTPAUTHTOKEN_TIMEOUT | 604800` | Timeout for dynamically generated tokens in seconds (default: 1 week) |

Script Options

| Option | Env Variable | Default | Description | |-------|--------------|---------|-------------| | --script-root-directory | MCPD_SCRIPT_ROOT_DIRECTORY | Required | Root directory containing executable scripts (must exist) | | --script-config | - | - | Configuration key/value pairs for scripts in KEY=VALUE format (JSON values, can be specified multiple times) |

Web Dashboard Options

| Option | Env Variable | Default | Description | |-------|--------------|---------|-------------| | --www-ui-disable | MCPD_WWW_UI_DISABLE | false | Disable the web dashboard | | --www-config | - | - | Configuration key/value pairs for web dashboard in KEY=VALUE format (accessible via /api/public/configuration) |

Logging Options

| Option | Env Variable | Default | Description | |-------|--------------|---------|-------------| | --trace | - | false | Enable trace level logging (shows target and location) | | --debug | - | false | Enable debug level logging (shows target) | | --quiet | - | false | Disable all logging |

Use --help to see detailed descriptions of all options.

MCP Endpoint

POST /api/mcp
Content-Type: application/json

Supported methods: initialize, tools/list, tools/call, resources/list, resources/read

The server supports JSON-RPC 2.0 batch requests and notifications.

Writing Scripts

See [SCRIPT.md](SCRIPT.md) for the complete specification.

Examples

Learn how to write scripts by exploring the sample implementations:

Additional HTTP Endpoints

Besides the MCP endpoint, mcpd provides:

  • GET /api/public/captcha - Get CAPTCHA image (if enabled)
  • GET /api/public/configuration - Get public configuration
  • GET /api/auth/test - Test authentication
  • POST /api/auth/token - Get authentication token
  • POST /api/setPassword - Change password (requires password file)

License

BSD-3-Clause

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.