Two things to set before real use. Put a .teamwork file with PROJECT_ID in the repository so questions about 'this project' resolve without a lookup. And fence the tool list with --allow or --deny: delete tools for tasks, people and companies all sit in the default surface, and most sessions need none of them.
An MCP server over the Teamwork API, authenticated with your own account credentials, covering the project and task surface as well as the people, time and reporting side.
- Projects: list with filters and paging, create one, and resolve the project this repository belongs to from a .teamwork file
- Tasks all the way down: filtered lists, by project, by task list or by ID; create, create a subtask, update and delete; plus subtasks and comments for a given task
- Comments on tasks, milestones, notebooks, links and file versions, with private and notify flags
- People: list and filter, one by ID, who is on a project, adding people to a project, and updating or deleting a person
- Companies: list with filters and stats, one by ID, create, update and delete
- Time: every logged entry filtered by task, project, budget, invoice, tasklist or allocation, and the entries against a single allocation
- Reporting: user utilization data with billable breakdowns, task completion per user, top performers over a period, and a utilization report exported as CSV, HTML, PDF or XLSX
- Counts of completed and late tasks, and the timezone list you need before updating someone's timezone
A Teamwork account with API access, and Node.js v14.17 or higher (18 or the latest LTS recommended). Credentials arrive either as TEAMWORK_DOMAIN, TEAMWORK_USERNAME and TEAMWORK_PASSWORD, or as --domain, --user and --pass on the command line. Run it with npx @vizioz/teamwork-mcp. --allow-tools and --deny-tools narrow the surface by individual name or by group, so --deny=deleteTask,updateTask leaves a read-mostly server. Logging writes error.log and combined.log into a logs directory unless you pass --disable-logging or set DISABLE_LOGGING=true. A .teamwork file in the project root holding PROJECT_ID lets getCurrentProject resolve the project without extra lookups.
One command plus a key — npx @vizioz/teamwork-mcp, then supply credentials
