pier-mcp
# DeployForge MCP
Agent-controlled deployment stack built on Pier.
## Stack
| Layer | Tool | Version |
|---|---|---|
| PaaS | Pier | v1.0.0 |
| Language | Rust | 1.91.1 |
| Container runtime | Docker Engine | 29.6.1 |
| Compose | Docker Compose | 5.3.1 |
| Reverse proxy | Traefik | v3.7.1 |
| Buildkit | moby/buildkit | latest |
| Auto-builder | Railpack | v0.35.0 |
| Agent interface | pier-mcp | v0.1.0 (planned) |
## Documentation
- [Documentation Index](./docs/INDEX.md)
- [Pier API Reference](./docs/pier-api.md)
- [MCP Tool Plan](./docs/mcp-tool-plan.md)
- [Requirements](./docs/requirements.md)
- [Setup Guide](./docs/setup.md)
- [Architecture](./docs/architecture.md)
## Status
Pier installed and running. Admin account created. Port 80 occupied by existing container (`diamond-access-ai`). Pier panel on port 8443.
### pier-mcp
MCP server scaffolded with 14 initial tools mapped to Pier REST API endpoints.
- Location: `/root/deployforge-mcp/pier-mcp/`
- Transport: stdio (local), Streamable HTTP (remote)
- Auth: Bearer token via `PIER_TOKEN` environment variable
## Quick Start
```bash
cd /root/deployforge-mcp/pier-mcp
npm install
npm run build
PIER_TOKEN=$(cat .env | grep PIER_TOKEN | cut -d= -f2) npm start
```
Or source the env:
```bash
source .env
npm start
```
TDQS
Scored across 14 tools
Most tools target a distinct app or environment action, and descriptions explicitly clarify differences such as set_env_vars vs update_env_var. However, start_or_restart_app vs deploy_service and get_logs vs get_container_logs are close enough that an agent could misselect without careful reading.
All tools share the pier_ prefix and follow a consistent verb_noun snake_case pattern (list/get/start/stop/delete/rename/set/update + noun). Minor noun choices like service vs app don't break the predictable pattern.
14 tools is within the ideal range and each operation covers a distinct administrative need: app lifecycle, environment variables, logs, and server/container visibility. The count feels complete without bloating the surface.
The set covers app lifecycle management well: list, status, start/stop/restart, delete, rename, deploy, env vars, and logs. However, there is no explicit create-app operation and no way to update core app configuration such as ports, image, or command, which is a notable gap for a deployment server.