@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 CHANGED
@@ -1,6 +1,20 @@
1
- # Toggl Focus MCP Server
1
+ # Toggl 2.0 MCP Server
2
2
 
3
- A local MCP (Model Context Protocol) server that connects to the Toggl Focus API. Works with any MCP client including Claude Code and Claude Desktop.
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
+ [![Install in VS Code](https://img.shields.io/badge/Install_in-VS_Code-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](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
+ [![Install in VS Code Insiders](https://img.shields.io/badge/Install_in-VS_Code_Insiders-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](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
+ [![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](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 Focus workspaces found for this account.");
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 Focus MCP — Authentication\n");
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 Focus entities.",
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 Focus workspace ${options.workspaceLabel ?? "your workspace"}.
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 Focus MCP is not authenticated.
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 Focus via OAuth. Opens browser login and stores credentials locally. Optionally pass workspace_id to pick a specific workspace when multiple are available.",
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.20";
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 Focus API: ${urls.focusApiUrl}`);
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 Focus MCP server running on stdio (workspace: ${workspaceLabel})` : "Toggl Focus MCP server running on stdio (not authenticated)");
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.20",
4
- "description": "Toggl Focus MCP server for Claude Code, Claude Desktop, and other MCP clients.",
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 Focus MCP server to read and mutate Focus 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.
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 Focus MCP
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