Poke PC
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Poke PCrun 'ls -la' in my home directory"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
macOS App
The macOS app is downloadable from GitHub Releases. You can download latest DMG file from here
Related MCP server: mcp2term
CLI
npx poke-pcA Dockerized MCP worker with persistent terminal control, automatic Poke tunnel connection, and optional command status notifications to Poke.
License: MIT
Introduce Poke PC to your Poke ⭐
Use this direct recipe link:
https://poke.com/r/kWWE0sbthIQ
You can also copy RECIPE.md into your Poke configuration.
Quick Start 🚀
The command runs an interactive setup that:
checks Docker
runs Poke SDK device login if credentials are missing
stores OAuth token in
~/.config/poke/credentials.jsonasks if command status notifications to Poke should be enabled (default: yes)
creates persistent volume and starts container in detached mode (no
--rm)
Useful after setup:
docker logs -f poke-pc
docker exec -it poke-pc tail -f /root/poke-pc/terminal/history.ndjsonAuthentication 🔐
Tunnel and notifications use the same OAuth token credentials from
~/.config/poke/credentials.json.Quickstart uses Poke SDK device login to generate credentials automatically.
No separate manual key setup is required.
If credentials are missing on first run, the app shows a login URL and code in logs.
Manual Docker Run
docker run -d \
--name poke-pc \
-p 3000:3000 \
-e POKE_TUNNEL_NAME="poke-pc" \
-e MCP_PUBLIC_URL="http://127.0.0.1:3000/mcp" \
-e POKE_PC_AUTOREGISTER_WEBHOOK="true" \
-v poke_pc_state:/root/poke-pc \
-v "$HOME/.config/poke:/root/.config/poke" \
ghcr.io/calganaygun/poke-pc:latestTo run without command status notifications:
-e POKE_PC_AUTOREGISTER_WEBHOOK="false"Configuration
Copy .env.example and adjust as needed.
Common defaults:
POKE_TUNNEL_NAME=poke-pcMCP_HOST=0.0.0.0MCP_PORT=3000MCP_PUBLIC_URL=http://127.0.0.1:3000/mcpPOKE_PC_AUTOREGISTER_WEBHOOK=true
Bootstrap config can be loaded from file with POKE_PC_BOOTSTRAP_CONFIG.
MCP Tools
terminal_create_sessionterminal_list_sessionsterminal_run_commandterminal_get_command_statusterminal_capture_outputterminal_kill_sessionterminal_list_commandsfilesystem_read_file(blocks access under~/.config)
Project docs
CONTRIBUTING.md
CODE_OF_CONDUCT.md
SECURITY.md
CHANGELOG.md
RELEASE_CHECKLIST.md
Local Development
npm install
npm run devBuild
npm run build
npm startRuntime behavior
Startup order:
Validate config and initialize state directories.
Initialize tmux manager and restore known sessions.
Run bootstrap commands.
Initialize command notification channel (load persisted or auto-register).
Start MCP server.
Start Poke tunnel with reconnection loop.
Start command monitor for adaptive heartbeat/completion notifications.
Observability and command history
Runtime app logs are emitted via pino to container stdout/stderr.
Command/bootstrap lifecycle events are persisted in append-only NDJSON:
/root/poke-pc/terminal/history.ndjson
This history file is intentionally logging-only and not exposed as an MCP tool.
Example:
docker exec -it poke-pc tail -f /root/poke-pc/terminal/history.ndjsonCI/CD and release
CI workflow:
.github/workflows/ci.ymlGHCR publish workflow:
.github/workflows/docker-publish.ymlGitHub release workflow:
.github/workflows/release.yml
Published image path:
ghcr.io/calganaygun/poke-pc
Security notes
Container currently runs as root by design for bootstrap flexibility.
filesystem_read_fileresolves real paths and blocks~/.configaccess to protect credentials.Persisted webhook token is stored in state path with mode
0600.Logs redact common secret fields.
Acknowledgements and Credits
Inspired by the need for a more robust and persistent Poke work environment.
Built with Node.js, Docker, and the Poke SDK.
This server cannot be deployed
Maintenance
Related MCP Connectors
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Remote MCP server to run your Atako AI agents: chat, projects, files, integrations and channels.
Run commands and read/write files on your servers over Termalin's keyless tunnels (hosted MCP).
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server that lets your Poke AI assistant access your macOS machine, enabling shell commands, file operations, and screenshots through natural language.55 npm79MIT
- AlicenseNot gradedqualityBmaintenanceExposes an interactive terminal over MCP, enabling remote shell command execution, file operations, and directory management via ChatGPT or Claude Desktop.2MIT
- AlicenseNot gradedqualityAmaintenanceEnables remote MCP clients to access local filesystem and shell commands by deploying a Cloudflare Worker relay and a local daemon, providing tools like read/write files, exec commands, git status, etc.510 npm1MIT
- AlicenseNot gradedqualityCmaintenanceEnables remote MCP clients like ChatGPT to run shell commands and manage files on your local machine via a Cloudflare tunnel, exposing tools for file operations, search, and task management.4MIT