CMCP — Construction AI MCP Server
A production MCP server with 50 tools for construction project management. Built for the AEC industry (Architecture, Engineering & Construction). Estimates, RFIs, change orders, daily logs, budgets, schedules, safety, subcontractors, and more — all accessible to AI agents via the Model Context Protocol.
Live at cmcp.us
Categories:
constructionproject-managementAECMCPAI
Features
- 50 construction management tools across 11 categories
- AI-enhanced tools — draft RFI responses, generate weekly reports, safety toolbox talks, subcontractor scorecards
- OAuth 2.1 with PKCE (S256) — standards-compliant authentication
- Multi-tenant — complete org-level data isolation
- Scope-based access control — 28 granular scopes
- Stripe billing — metered usage with overage pricing
- MCP Streamable HTTP — JSON-RPC 2.0 over SSE
Tools
Quick Start
1. Create an Account
curl -X POST https://cmcp.us/signup \
-H "Content-Type: application/json" \
-d '{"org_name":"Your Company","email":"[email protected]","password":"securepass"}'
Returns client_id, client_secret, and a 7-day free trial with 2,000 tool calls.
2. Authenticate (OAuth 2.1 + PKCE)
# Generate PKCE challenge
VERIFIER=$(python3 -c "import secrets; print(secrets.token_urlsafe(64))")
CHALLENGE=$(python3 -c "import hashlib,base64; print(base64.urlsafe_b64encode(hashlib.sha256('$VERIFIER'.encode()).digest()).rstrip(b'=').decode())")
# Authorize
curl -X POST https://cmcp.us/oauth/authorize \
-d "client_id=YOUR_CLIENT_ID&redirect_uri=http://localhost:8080/callback&response_type=code&scope=projects:read+projects:write&code_challenge=$CHALLENGE&code_challenge_method=S256&[email protected]&password=securepass"
# Exchange code for token
curl -X POST https://cmcp.us/oauth/token \
-d "grant_type=authorization_code&code=AUTH_CODE&redirect_uri=http://localhost:8080/callback&code_verifier=$VERIFIER&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
3. Connect via MCP
# Initialize session
curl -X POST https://cmcp.us/mcp \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"your-agent","version":"1.0"}}}'
# Call a tool (include mcp-session-id from init response)
curl -X POST https://cmcp.us/mcp \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: SESSION_ID" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"create_project","arguments":{"name":"Office Tower","project_type":"commercial","contract_type":"gmp"}}}'
Pricing
Scopes
Request only the scopes your agent needs:
projects:read projects:write estimates:read estimates:write rfis:read rfis:write change_orders:read change_orders:write daily_logs:read daily_logs:write budget:read budget:write schedule:read schedule:write subcontractors:read subcontractors:write documents:read documents:write safety:read safety:write users:read users:write org:read org:write admin
API Endpoints
Full API documentation: docs/API.md
Tech Stack
- Runtime: Node.js + TypeScript
- Framework: Hono
- Protocol: MCP SDK (Streamable HTTP)
- Database: PostgreSQL (Neon) + Drizzle ORM
- Cache: Redis (Upstash)
- Auth: OAuth 2.1 + PKCE, JWT (RS256)
- Billing: Stripe (subscriptions + metered usage)
- Queue: BullMQ (usage reporting)
License
Proprietary. See cmcp.us for terms.