eranfinish/ezatwork-mcp
EZ@Work MCP Server
Connect EZ@Work — all-in-one business management for freelancers, lawyers, agencies, and service businesses — to Claude, Gemini, Cursor, and any MCP-compatible AI.
Tools (v1)
Tool | Description | Type |
| List your clients/customers | Read |
| List your projects/cases/work orders | Read |
| Log billable hours to a project | Write |
| Create a draft invoice (auto currency/language/VAT) | Write |
Related MCP server: Calq MCP
Setup
Claude Desktop / Claude.ai (OAuth — recommended)
Settings → Connectors → Add custom connector
URL:
https://mcp.ezatwork.com/mcpAuthentication: OAuth (automatic)
Claude Code / Cursor / MCP Inspector (API token)
Create a free EZ@Work account at https://app.ezatwork.com
Generate an API token at https://app.ezatwork.com/settings/api-tokens
Connect to
https://mcp.ezatwork.com/mcpwith headerAuthorization: Bearer ezw_pat_...
Local testing with MCP Inspector:
npx @modelcontextprotocol/inspectorConnect to http://localhost:8080/mcp with header Authorization: Bearer ezw_pat_...
Security
Your data stays in your EZ@Work account
OAuth mode: Google identity → EZ@Work account lookup; no credentials stored in the MCP
API token mode: scoped permissions — grant only what you need; mandatory expiration
Authorization is verified on every request
Privacy Policy
https://www.ezatwork.com/privacy
Universal Design
EZ@Work adapts to your business type: a lawyer sees "cases," a freelancer sees "projects," a service business sees "work orders." Currency, language (24 supported), and tax rules auto-detect from your profile — no configuration needed in the MCP.
Development
Run locally
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
cp .env.example .env
# Edit .env: EZ_API_BASE=http://localhost:5000 for local backend
python -m ezatwork_mcp.server
# Server starts at http://localhost:8080/mcpRun tests
pip install pytest pytest-asyncio
pytest tests/Docker
docker build -t ezatwork-mcp .
docker run -p 8080:8080 -e EZ_API_BASE=https://api.ezatwork.com ezatwork-mcpDeploy to Cloud Run
gcloud run deploy ezatwork-mcp \
--source . \
--region europe-west1 \
--project ezatwork-production \
--allow-unauthenticated \
--port 8080 \
--update-env-vars "EZ_API_BASE=https://api.ezatwork.com,MCP_BASE_URL=https://mcp.ezatwork.com" \
--update-secrets "GOOGLE_CLIENT_ID=ezmcp-google-client-id:latest" \
--update-secrets "GOOGLE_CLIENT_SECRET=ezmcp-google-client-secret:latest" \
--update-secrets "EZ_MCP_MASTER_TOKEN=ezmcp-master-token:latest"
--allow-unauthenticatedis correct — auth is enforced at the MCP layer (OAuth or API token), not at the Cloud Run IAM level.
Technical notes
Transport: Streamable HTTP (
/mcpendpoint)Library:
fastmcp 3.3.1Auth (OAuth):
GoogleProviderfromfastmcp.server.auth.providers.googleAuth (token):
get_http_headers()fromfastmcp.server.dependenciesDual-auth: OAuth active when
GOOGLE_CLIENT_ID+GOOGLE_CLIENT_SECRET+MCP_BASE_URLare setBackend:
GET /api/users/mefor locale;GET /api/internal/users/by-emailfor OAuth→user mappingTime entries:
POST /api/timeentrywithisBillablefieldInvoices:
POST /api/invoiceswith computeddueDateandtotalper item
Built by
EZ@Work — the business OS for independents.
This server cannot be installed
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/eranfinish/ezatwork-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server