eranfinish/ezatwork-mcp
MCP server for EZ@Work — manage clients, projects, time entries, and invoices from Claude through natural conversation. OAuth 2.1 with Google sign-in, multi-currency support.
README
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_clients |
List your clients/customers | Read |
list_projects |
List your projects/cases/work orders | Read |
log_time_entry |
Log billable hours to a project | Write |
create_invoice |
Create a draft invoice (auto currency/language/VAT) | Write |
Setup
Claude Desktop / Claude.ai (OAuth — recommended)
Settings → Connectors → Add custom connector
- URL:
https://mcp.ezatwork.com/mcp - Authentication: 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/inspector
Connect 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/mcp
Run 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-mcp
Deploy 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.1 - Auth (OAuth):
GoogleProviderfromfastmcp.server.auth.providers.google - Auth (token):
get_http_headers()fromfastmcp.server.dependencies - Dual-auth: OAuth active when
GOOGLE_CLIENT_ID+GOOGLE_CLIENT_SECRET+MCP_BASE_URLare set - Backend:
GET /api/users/mefor locale;GET /api/internal/users/by-emailfor OAuth→user mapping - Time entries:
POST /api/timeentrywithisBillablefield - Invoices:
POST /api/invoiceswith computeddueDateandtotalper item
Built by
EZ@Work — the business OS for independents.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.