@togglhq/mcp 1.5.20 → 1.5.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -34
- package/build/index.js +9 -9
- package/package.json +4 -3
- package/skills/toggl-mcp/SKILL.md +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
|
-
# Toggl
|
|
1
|
+
# Toggl 2.0 MCP Server
|
|
2
2
|
|
|
3
|
-
A local MCP (Model Context Protocol) server that connects to the Toggl
|
|
3
|
+
A local MCP (Model Context Protocol) server that connects to the Toggl 2.0 API. Works with any MCP client including Claude Code and Claude Desktop.
|
|
4
|
+
|
|
5
|
+
## One-click install
|
|
6
|
+
|
|
7
|
+
[](https://vscode.dev/redirect/mcp/install?name=toggl&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40togglhq%2Fmcp%22%5D%2C%22env%22%3A%7B%7D%7D)
|
|
8
|
+
[](https://insiders.vscode.dev/redirect/mcp/install?name=toggl&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40togglhq%2Fmcp%22%5D%2C%22env%22%3A%7B%7D%7D&quality=insiders)
|
|
9
|
+
[](cursor://anysphere.cursor-deeplink/mcp/install?name=toggl&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkB0b2dnbGhxL21jcCJdfQ==)
|
|
10
|
+
|
|
11
|
+
Cursor install link (copy or open in Cursor):
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
cursor://anysphere.cursor-deeplink/mcp/install?name=toggl&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkB0b2dnbGhxL21jcCJdfQ==
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
After install, run `npx @togglhq/mcp auth` once to sign in. For Claude Code and Claude Desktop, see **Add to your MCP client** below.
|
|
4
18
|
|
|
5
19
|
## Install
|
|
6
20
|
|
|
@@ -87,38 +101,6 @@ One tool per domain (for example `tasks`, `projects`, `time-blocks`, `time-entri
|
|
|
87
101
|
|
|
88
102
|
Agent-oriented guidance ships in `skills/toggl-mcp/SKILL.md` inside this package.
|
|
89
103
|
|
|
90
|
-
## MCP Apps (inline UI)
|
|
91
|
-
|
|
92
|
-
Cursor **2.6+**, Claude Desktop, and other MCP App hosts can render **view tools** inline in chat.
|
|
93
|
-
|
|
94
|
-
- **Resource**: `ui://toggl-focus/app.html`
|
|
95
|
-
- **When to use**: Prefer view tools when the user asks to **show**, **see**, or **visualize** Focus data. Use entity tools for mutations and non-UI hosts.
|
|
96
|
-
|
|
97
|
-
| Tool | Use when |
|
|
98
|
-
| ------------------------------ | ---------------------------- |
|
|
99
|
-
| `focus-tasks-inbox` | Task list / backlog |
|
|
100
|
-
| `focus-task-detail` | Single task deep-dive |
|
|
101
|
-
| `focus-status-board` | Kanban-style status snapshot |
|
|
102
|
-
| `focus-projects-overview` | Project list |
|
|
103
|
-
| `focus-project-detail` | Single project overview |
|
|
104
|
-
| `focus-milestones-roadmap` | Milestones by due date |
|
|
105
|
-
| `focus-search-results` | Search across entities |
|
|
106
|
-
| `focus-week-at-a-glance` | Week plan vs tracked time |
|
|
107
|
-
| `focus-day-today` | Today's schedule |
|
|
108
|
-
| `focus-time-log` | Time entries table |
|
|
109
|
-
| `focus-time-blocks` | Scheduled blocks |
|
|
110
|
-
| `focus-report-workload` | Team workload / utilization |
|
|
111
|
-
| `focus-report-time-by-project` | Time grouped by project |
|
|
112
|
-
| `focus-report-time-by-member` | Time grouped by member |
|
|
113
|
-
| `focus-report-billable` | Billable summary |
|
|
114
|
-
| `focus-report-task-throughput` | Task completion throughput |
|
|
115
|
-
| `focus-team-roster` | Workspace members |
|
|
116
|
-
| `focus-clients-directory` | Client list |
|
|
117
|
-
| `focus-time-off-calendar` | Time off in range |
|
|
118
|
-
| `focus-holidays-calendar` | Public holidays |
|
|
119
|
-
| `focus-mutation-review` | Confirm pending mutation |
|
|
120
|
-
| `focus-dry-run-preview` | Preview dry-run payload |
|
|
121
|
-
|
|
122
104
|
## License
|
|
123
105
|
|
|
124
106
|
Proprietary Toggl software. See [LICENSE](LICENSE) and [Toggl legal terms](https://toggl.com/legal/).
|
package/build/index.js
CHANGED
|
@@ -32260,7 +32260,7 @@ async function fetchAccessibleWorkspaces(accountsApiUrl, token) {
|
|
|
32260
32260
|
}));
|
|
32261
32261
|
}
|
|
32262
32262
|
async function resolveAuthenticatedWorkspace(workspaces, options) {
|
|
32263
|
-
if (workspaces.length === 0) throw new Error("No
|
|
32263
|
+
if (workspaces.length === 0) throw new Error("No Toggl 2.0 workspaces found for this account.");
|
|
32264
32264
|
if (options.explicitWorkspaceId !== void 0) {
|
|
32265
32265
|
const match = workspaces.find((w) => w.workspace_id === options.explicitWorkspaceId);
|
|
32266
32266
|
if (!match) throw new Error(`Workspace ${options.explicitWorkspaceId} not found. Available: ${workspaces.map((w) => `${w.workspace_id} (${w.workspace_name})`).join(", ")}`);
|
|
@@ -32399,7 +32399,7 @@ async function runAuthFlow(accountsApiUrl = "https://accounts.toggl.com", focusA
|
|
|
32399
32399
|
focusApiUrl = pendingContext.focus_api_url;
|
|
32400
32400
|
log("Continuing MCP authentication with existing session...\n");
|
|
32401
32401
|
} else {
|
|
32402
|
-
log("Toggl
|
|
32402
|
+
log("Toggl 2.0 MCP — Authentication\n");
|
|
32403
32403
|
const { code, verifier, redirectUri } = await obtainTogglOAuthAuthorizationCode({
|
|
32404
32404
|
accountsApiUrl,
|
|
32405
32405
|
flowMode: options.oauthFlowMode ?? (options.manualPrompt ? "manual" : "local"),
|
|
@@ -44034,7 +44034,7 @@ const schedulerOverrides = {
|
|
|
44034
44034
|
"focus.scheduler.validate-instructions": { hidden: true }
|
|
44035
44035
|
};
|
|
44036
44036
|
const searchOverrides = { "focus.search.search": {
|
|
44037
|
-
description: "Search across
|
|
44037
|
+
description: "Search across Toggl 2.0 entities.",
|
|
44038
44038
|
cli: {
|
|
44039
44039
|
group: [],
|
|
44040
44040
|
command: "search",
|
|
@@ -44820,10 +44820,10 @@ Entity mutations and \`profile-remove\` issue a \`confirm_token\` on the first c
|
|
|
44820
44820
|
- Task priority levels when setting priority: \`none\`, \`low\`, \`medium\`, \`high\`.
|
|
44821
44821
|
- Time blocks are planned calendar time; time entries are tracked time.
|
|
44822
44822
|
`;
|
|
44823
|
-
if (options.authenticated) return `You are connected to the Toggl
|
|
44823
|
+
if (options.authenticated) return `You are connected to the Toggl 2.0 workspace ${options.workspaceLabel ?? "your workspace"}.
|
|
44824
44824
|
|
|
44825
44825
|
${core}`;
|
|
44826
|
-
return `Toggl
|
|
44826
|
+
return `Toggl 2.0 MCP is not authenticated.
|
|
44827
44827
|
Call the auth tool to authenticate (or run ${npxMcpAuthCommand()} manually).
|
|
44828
44828
|
|
|
44829
44829
|
${core}`;
|
|
@@ -45798,7 +45798,7 @@ function registerWorkspaceTools(server) {
|
|
|
45798
45798
|
});
|
|
45799
45799
|
server.registerTool("auth", {
|
|
45800
45800
|
title: "Authenticate MCP",
|
|
45801
|
-
description: "Authenticate this MCP server with Toggl
|
|
45801
|
+
description: "Authenticate this MCP server with Toggl 2.0 via OAuth. Opens browser login and stores credentials locally. Optionally pass workspace_id to pick a specific workspace when multiple are available.",
|
|
45802
45802
|
annotations: {
|
|
45803
45803
|
readOnlyHint: false,
|
|
45804
45804
|
destructiveHint: false,
|
|
@@ -45953,7 +45953,7 @@ import_main.default.config({
|
|
|
45953
45953
|
quiet: true,
|
|
45954
45954
|
ignore: ["MISSING_ENV_FILE"]
|
|
45955
45955
|
});
|
|
45956
|
-
const packageVersion = "1.5.
|
|
45956
|
+
const packageVersion = "1.5.22";
|
|
45957
45957
|
function resolvePublicUrls() {
|
|
45958
45958
|
return {
|
|
45959
45959
|
focusApiUrl: process.env.TOGGL_FOCUS_API_URL ?? "https://focus.toggl.com",
|
|
@@ -45990,7 +45990,7 @@ function bootstrapServer(options = {}) {
|
|
|
45990
45990
|
applyResolvedUrls(urls);
|
|
45991
45991
|
const config = loadConfig();
|
|
45992
45992
|
const authenticated = Boolean(config);
|
|
45993
|
-
console.error(`Using
|
|
45993
|
+
console.error(`Using Toggl 2.0 API: ${urls.focusApiUrl}`);
|
|
45994
45994
|
const client = createAuthenticatedClientProxy();
|
|
45995
45995
|
const workspaceLabel = config ? `${config.workspace_name ?? "Workspace"} (ID: ${config.workspace_id})` : void 0;
|
|
45996
45996
|
const rawServer = new McpServer({
|
|
@@ -46007,7 +46007,7 @@ function bootstrapServer(options = {}) {
|
|
|
46007
46007
|
const transport = new StdioServerTransport();
|
|
46008
46008
|
options.beforeConnect?.();
|
|
46009
46009
|
await server.connect(transport);
|
|
46010
|
-
console.error(config ? `Toggl
|
|
46010
|
+
console.error(config ? `Toggl 2.0 MCP server running on stdio (workspace: ${workspaceLabel})` : "Toggl 2.0 MCP server running on stdio (not authenticated)");
|
|
46011
46011
|
}
|
|
46012
46012
|
main().catch((err) => {
|
|
46013
46013
|
console.error("Fatal error:", err);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@togglhq/mcp",
|
|
3
|
-
"version": "1.5.
|
|
4
|
-
"description": "Toggl
|
|
3
|
+
"version": "1.5.22",
|
|
4
|
+
"description": "Toggl 2.0 MCP server for Claude Code, Claude Desktop, and other MCP clients.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"publishConfig": {
|
|
@@ -56,5 +56,6 @@
|
|
|
56
56
|
"@types/node": "22.19.11",
|
|
57
57
|
"tsdown": "0.21.8",
|
|
58
58
|
"vitest": "3.2.4"
|
|
59
|
-
}
|
|
59
|
+
},
|
|
60
|
+
"mcpName": "io.github.toggl/toggl-mcp"
|
|
60
61
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: toggl-mcp
|
|
3
|
-
description: Use the Toggl
|
|
3
|
+
description: Use the Toggl 2.0 MCP server to read and mutate Toggl 2.0 data (tasks, projects, time blocks, time entries, saved views, custom fields, attachments, organization and org-* domains, org-time-off-me, shared-status/holidays/working-hours tools), manage workspaces and saved profiles, authenticate, and mirror CLI-style workflows from an MCP client. Trigger when the user connects through Model Context Protocol tools rather than the terminal, or asks how to use toggl-focus MCP tools, confirm_token, dry_run, file uploads/downloads, workspace refresh, or profile switching.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Toggl
|
|
6
|
+
# Toggl 2.0 MCP
|
|
7
7
|
|
|
8
8
|
The MCP server exposes **entity tools** (one tool per domain, for example `tasks`, `projects`) plus **workspace**, **profile**, and **auth** tools. Behavior aligns with the shared `@toggl/operations` catalog used by `toggl` CLI—see the `toggl-cli` skill for terminal equivalents (`toggl --json`, `--dry-run`, etc.).
|
|
9
9
|
|