π BoostU Teamleader MCP
The open-source Teamleader Focus MCP server. Manage your CRM from Claude and other AI assistants, in plain language. π€

π‘ What is this?
boostu-teamleader-mcp is a Model Context Protocol server that exposes the Teamleader Focus API to AI assistants β including Claude Desktop, Claude Code, Cursor, and Windsurf. It provides over 100 tools spanning the full Teamleader Focus surface: CRM (contacts, companies, deals), sales documents (quotations, invoices, credit notes), product catalog, subscriptions, projects, time tracking, customer-service tickets, and more. Point your AI at it and manage your entire CRM through natural language.
Prefer not to self-host?
Use the managed, always-on edition at teamleader-mcp.boostu.be β no OAuth setup, magic-link login, and a one-click connector for Claude. Free during the preview, paid plans after.
This repository is the open-source MCP server itself: run it locally with your own Teamleader integration. The hosted edition adds multi-tenant authentication, a dashboard, usage insights, and managed token handling on top of the same server.
| Self-host (this repo) | Managed (boostu.be) |
|---|
| Price | Free, MIT-licensed | Free preview, then paid |
| Setup | Create your own Teamleader integration, run via npx | Copy one connector URL into Claude |
| Tokens | You manage .env and the refresh token | Encrypted and rotated for you |
| Best for | Developers and self-hosters | Non-technical teams |
π How it works
flowchart LR
U["π§ You"] -->|"plain language"| C["π€ Claude / AI assistant"]
C <-->|"MCP Β· stdio"| S["π boostu-teamleader-mcp"]
S <-->|"OAuth2 REST"| T["π Teamleader Focus API"]
You ask Claude in plain language. Claude calls this MCP server, which authenticates to Teamleader Focus over OAuth2 and runs the matching API call. Your data stays in Teamleader; this server only brokers the calls.
Use the outline button at the top-right of this file to jump to any section.
β¨ Highlights
- π₯ Full CRM: create and update contacts, companies, and deals across all pipelines
- π§Ύ Quotations and invoicing: create quotations on deals, book invoices into accounting, send by email, and register payments
- π¦ Product catalog: browse products, categories, price lists, and units of measure
- π Subscriptions: create, update, and deactivate recurring subscriptions
- π Projects and time tracking: manage projects, milestones, log time entries, and start/stop live timers
- π« Customer-service tickets: open tickets, post replies, and update statuses
- π Reference-data lookups: resolve deal phases, pipelines, tax rates, payment terms, lost reasons, and more
- π OAuth2 with automatic refresh-token rotation: tokens are refreshed transparently; rotated tokens are persisted to a configurable file
- π§© Selectable tool groups: load only the groups you need via
TEAMLEADER_TOOLS to keep your assistant's context lean
π Quick Start
Run without installing
npx boostu-teamleader-mcp
Global install
npm i -g boostu-teamleader-mcp
boostu-teamleader-mcp
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"teamleader": {
"command": "npx",
"args": ["-y", "boostu-teamleader-mcp"],
"env": {
"TEAMLEADER_CLIENT_ID": "your-client-id",
"TEAMLEADER_CLIENT_SECRET": "your-client-secret",
"TEAMLEADER_REFRESH_TOKEN": "your-refresh-token"
}
}
}
}
Claude Code
Add to your project's .mcp.json or ~/.claude/mcp.json:
{
"mcpServers": {
"teamleader": {
"command": "npx",
"args": ["-y", "boostu-teamleader-mcp"],
"env": {
"TEAMLEADER_CLIENT_ID": "your-client-id",
"TEAMLEADER_CLIENT_SECRET": "your-client-secret",
"TEAMLEADER_REFRESH_TOKEN": "your-refresh-token"
}
}
}
}
Cursor
Add to .cursor/mcp.json in your project root (or the global ~/.cursor/mcp.json):
{
"mcpServers": {
"teamleader": {
"command": "npx",
"args": ["-y", "boostu-teamleader-mcp"],
"env": {
"TEAMLEADER_CLIENT_ID": "your-client-id",
"TEAMLEADER_CLIENT_SECRET": "your-client-secret",
"TEAMLEADER_REFRESH_TOKEN": "your-refresh-token"
}
}
}
}
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"teamleader": {
"command": "npx",
"args": ["-y", "boostu-teamleader-mcp"],
"env": {
"TEAMLEADER_CLIENT_ID": "your-client-id",
"TEAMLEADER_CLIENT_SECRET": "your-client-secret",
"TEAMLEADER_REFRESH_TOKEN": "your-refresh-token"
}
}
}
}
π Authentication
You need three env vars: TEAMLEADER_CLIENT_ID, TEAMLEADER_CLIENT_SECRET, and TEAMLEADER_REFRESH_TOKEN. Obtain them by registering an integration in the Teamleader Marketplace / Developer portal and completing the OAuth2 authorization flow.
Teamleader rotates the refresh token on every API call. Set TEAMLEADER_TOKEN_STORE to a writable file path so the server can persist the latest token between restarts β without it the token in your config will go stale after the first restart.
For the full step-by-step walkthrough (authorize URL, code exchange, helper scripts) see docs/AUTHENTICATION.md.
βοΈ Configuration
Environment variables
| Name | Required | Description |
|---|
TEAMLEADER_CLIENT_ID | Yes | OAuth2 client ID from your Teamleader integration |
TEAMLEADER_CLIENT_SECRET | Yes | OAuth2 client secret from your Teamleader integration |
TEAMLEADER_REFRESH_TOKEN | Yes | Initial refresh token obtained from the OAuth2 authorization flow |
TEAMLEADER_TOKEN_STORE | No | Path to a writable file where the server persists the rotated refresh token (e.g. /var/run/teamleader-token). Strongly recommended in production. |
TEAMLEADER_TOOLS | No | Comma-separated list of tool group keys to enable. When unset, all 21 groups are loaded. |
Selective tool groups
Use TEAMLEADER_TOOLS to limit which tool groups are registered. This is useful when you want to keep the assistant's tool list small or restrict access to certain areas of Teamleader.
TEAMLEADER_TOOLS=deals,quotations,products
Full list of group keys:
| Key | What it covers |
|---|
contacts | Contacts CRUD |
companies | Companies CRUD |
deals | Deals / opportunities |
tasks | Tasks |
events | Calendar events |
invoices | Invoices (create, book, send, pay, download) |
quotations | Quotations (create, update, send, accept) |
products | Product catalog and price lists |
reference | Deal phases, tax rates, payment terms, etc. |
org | Users, teams, departments |
customFields | Custom field definitions |
creditNotes | Credit notes |
subscriptions | Recurring subscriptions |
projects | Projects and milestones |
timeTracking | Time log entries and live timers |
activities | Calls and meetings |
tickets | Support tickets |
tags | Add/remove tags on contacts and companies |
notes | Notes on any subject |
files | File list, download, upload |
webhooks | Webhook registration |
π§° Available Tools
Contacts
| Tool | Description |
|---|
teamleader_list_contacts | List contacts from Teamleader Focus with optional filtering and pagination |
teamleader_get_contact | Get detailed information about a specific contact |
teamleader_create_contact | Create a new contact in Teamleader Focus |
teamleader_update_contact | Update an existing contact in Teamleader Focus |
teamleader_link_contact_to_company | Link a contact to a company, optionally with position and decision maker flag |
teamleader_unlink_contact_from_company | Unlink a contact from a company in Teamleader Focus |
teamleader_update_contact_company_link | Update the position or decision maker flag on an existing contact-company link |
Companies
| Tool | Description |
|---|
teamleader_list_companies | List companies from Teamleader Focus with optional filtering and pagination |
teamleader_get_company | Get detailed information about a specific company |
teamleader_create_company | Create a new company in Teamleader Focus |
Deals