get-claudia 1.53.1 → 1.53.2

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/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  All notable changes to Claudia will be documented in this file.
4
4
 
5
+ ## 1.53.2 (2026-03-04)
6
+
7
+ ### Re-enable Gmail and Calendar MCPs
8
+
9
+ Gmail and Calendar MCP servers were disabled in v1.53.1 as a workaround for Claude Code bug #17962 (multiple stdio servers). Multiple stdio servers now work reliably, so these are re-enabled.
10
+
11
+ - **Gmail and Calendar enabled by default** -- `.mcp.json.example` ships `gmail` and `google-calendar` as active entries (no `_disabled_` prefix). Both require Google Cloud credentials (see Google Integration Setup in CLAUDE.md).
12
+ - **Restore function re-enables Gmail/Calendar** -- `restoreMcpServers()` now also restores `gmail` and `google-calendar` from `_disabled_mcpServers` on upgrade. Additionally handles `_disabled_`-prefixed keys in `mcpServers` itself.
13
+ - **Diagnose skill updated** -- Removed multiple-stdio warning (Step 1b) and the advice to disable Gmail/Calendar. Step 1b now simply lists active servers without warning about conflicts.
14
+ - **Removed stdio_warning from config notes** -- `.mcp.json.example` no longer warns about multiple stdio servers or suggests disabling Gmail/Calendar.
15
+
5
16
  ## 1.53.1 (2026-03-04)
6
17
 
7
18
  ### The One-Stdio Fix: Memory Tools Actually Connect
package/bin/index.js CHANGED
@@ -775,7 +775,6 @@ async function main() {
775
775
  // Configure .mcp.json with correct daemon path
776
776
  if (daemonOk) {
777
777
  ensureDaemonMcpConfig(targetPath, venvPython);
778
- warnMultipleStdioServers(targetPath);
779
778
  }
780
779
 
781
780
  // Run preflight check to verify daemon can actually start
@@ -973,7 +972,6 @@ async function main() {
973
972
  { name: 'Personality & Skills', ok: true },
974
973
  { name: 'Memory Daemon', ok: memoryInstalled },
975
974
  { name: 'MCP Config', ok: mcpCheck.hasDaemon },
976
- { name: 'Stdio Servers', ok: mcpCheck.stdioCount <= 1, warn: mcpCheck.stdioCount > 1 ? `${mcpCheck.stdioCount} active (only 1 reliable)` : null },
977
975
  ];
978
976
 
979
977
  console.log(` ${colors.bold}Components:${colors.reset}`);
@@ -1006,8 +1004,8 @@ async function main() {
1006
1004
  * Restore MCP servers that were moved to _disabled_mcpServers by earlier versions.
1007
1005
  * - claudia-memory: v1.51.13+ treated the daemon as legacy (replaced by CLI),
1008
1006
  * but MCP is the primary memory interface as of v1.51.22.
1009
- * - Gmail/Calendar are NOT restored: Claude Code bug #17962 means multiple stdio
1010
- * servers silently fail. Users should use Rube (HTTP) instead.
1007
+ * - Gmail/Calendar: v1.53.1 disabled these due to Claude Code bug #17962,
1008
+ * but multiple stdio servers now work reliably. Restore them.
1011
1009
  */
1012
1010
  function restoreMcpServers(targetPath) {
1013
1011
  const mcpPath = join(targetPath, '.mcp.json');
@@ -1019,8 +1017,8 @@ function restoreMcpServers(targetPath) {
1019
1017
  if (!config._disabled_mcpServers) return;
1020
1018
  if (!config.mcpServers) config.mcpServers = {};
1021
1019
 
1022
- // Only restore claudia-memory, not gmail/google-calendar (multiple stdio bug #17962)
1023
- const toRestore = ['claudia-memory', 'claudia_memory'];
1020
+ // Restore all previously disabled servers (memory, gmail, google-calendar)
1021
+ const toRestore = ['claudia-memory', 'claudia_memory', 'gmail', 'google-calendar'];
1024
1022
  let changed = false;
1025
1023
  const restored = [];
1026
1024
 
@@ -1028,6 +1026,7 @@ function restoreMcpServers(targetPath) {
1028
1026
  if (config._disabled_mcpServers[key] && !config.mcpServers[key]) {
1029
1027
  const serverConfig = { ...config._disabled_mcpServers[key] };
1030
1028
  delete serverConfig._replaced_by;
1029
+ delete serverConfig._warning;
1031
1030
  config.mcpServers[key] = serverConfig;
1032
1031
  delete config._disabled_mcpServers[key];
1033
1032
  changed = true;
@@ -1035,6 +1034,21 @@ function restoreMcpServers(targetPath) {
1035
1034
  }
1036
1035
  }
1037
1036
 
1037
+ // Also rename _disabled_ prefixed keys in mcpServers itself
1038
+ for (const key of Object.keys(config.mcpServers)) {
1039
+ if (key.startsWith('_disabled_')) {
1040
+ const realKey = key.replace('_disabled_', '');
1041
+ if (['gmail', 'google-calendar'].includes(realKey) && !config.mcpServers[realKey]) {
1042
+ const serverConfig = { ...config.mcpServers[key] };
1043
+ delete serverConfig._warning;
1044
+ config.mcpServers[realKey] = serverConfig;
1045
+ delete config.mcpServers[key];
1046
+ changed = true;
1047
+ restored.push(realKey);
1048
+ }
1049
+ }
1050
+ }
1051
+
1038
1052
  // Clean up _disabled_mcpServers if it's now empty
1039
1053
  if (config._disabled_mcpServers && Object.keys(config._disabled_mcpServers).length === 0) {
1040
1054
  delete config._disabled_mcpServers;
@@ -1113,29 +1127,6 @@ function checkMcpConfig(targetPath) {
1113
1127
  }
1114
1128
  }
1115
1129
 
1116
- /**
1117
- * Warn if multiple stdio MCP servers are active in .mcp.json.
1118
- * Claude Code bug #17962: only one stdio server connects reliably.
1119
- */
1120
- function warnMultipleStdioServers(targetPath) {
1121
- const mcpPath = join(targetPath, '.mcp.json');
1122
- if (!existsSync(mcpPath)) return;
1123
- try {
1124
- const config = JSON.parse(readFileSync(mcpPath, 'utf-8'));
1125
- const servers = config.mcpServers || {};
1126
- const stdioServers = Object.entries(servers)
1127
- .filter(([key]) => !key.startsWith('_disabled') && !key.startsWith('_'))
1128
- .filter(([, val]) => !val._disabled && (!val.type || val.type === 'stdio'))
1129
- .map(([key]) => key);
1130
-
1131
- if (stdioServers.length > 1) {
1132
- console.log('');
1133
- console.log(` ${colors.boldYellow}⚠ Warning:${colors.reset} ${stdioServers.length} stdio MCP servers detected: ${stdioServers.join(', ')}`);
1134
- console.log(` ${colors.dim}Claude Code can only reliably connect to one stdio server at a time (bug #17962).${colors.reset}`);
1135
- console.log(` ${colors.dim}claudia-memory should be the only stdio server. Use Rube (HTTP) for Gmail/Calendar.${colors.reset}`);
1136
- }
1137
- } catch { /* ignore parse errors */ }
1138
- }
1139
1130
 
1140
1131
  /**
1141
1132
  * Register (or update) the macOS LaunchAgent for the standalone daemon.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "get-claudia",
3
- "version": "1.53.1",
3
+ "version": "1.53.2",
4
4
  "description": "An AI assistant who learns how you work.",
5
5
  "keywords": [
6
6
  "claudia",
@@ -36,27 +36,24 @@ If the Python binary in the `command` field doesn't exist:
36
36
  ls -la ~/.claudia/daemon/venv/bin/python 2>/dev/null || echo "Daemon venv not found"
37
37
  ```
38
38
 
39
- ### Step 1b: Check for Multiple Stdio Servers
39
+ ### Step 1b: Check Active MCP Servers
40
40
 
41
- Claude Code has a known bug (#17962) where multiple stdio MCP servers silently fail to connect.
42
- Count the active stdio servers (entries without `_disabled` prefix and without `type: "http"`):
41
+ List all active MCP servers (entries without `_disabled` prefix):
43
42
 
44
43
  ```bash
45
44
  python3 -c "
46
45
  import json
47
46
  c = json.load(open('.mcp.json'))
48
47
  servers = c.get('mcpServers', {})
49
- stdio = [k for k, v in servers.items()
50
- if not k.startswith('_') and v.get('type', 'stdio') == 'stdio']
51
- print(f'Active stdio servers ({len(stdio)}): {chr(44).join(stdio)}')
52
- if len(stdio) > 1:
53
- print('WARNING: Multiple stdio servers detected. Only one is reliable.')
54
- print('Keep claudia-memory, disable others or move them to Rube (HTTP).')
48
+ active = [k for k, v in servers.items() if not k.startswith('_')]
49
+ stdio = [k for k in active if servers[k].get('type', 'stdio') == 'stdio']
50
+ http = [k for k in active if servers[k].get('type') == 'http']
51
+ print(f'Active servers ({len(active)}): {chr(44).join(active)}')
52
+ print(f' stdio: {chr(44).join(stdio) or \"none\"}')
53
+ print(f' http: {chr(44).join(http) or \"none\"}')
55
54
  "
56
55
  ```
57
56
 
58
- If multiple stdio servers are detected, this is very likely the cause of missing tools. Fix by disabling extras (see Common Issues below).
59
-
60
57
  ### Step 2: Run Preflight Check
61
58
 
62
59
  The daemon has a built-in preflight validator that tests all 11 startup steps:
@@ -129,7 +126,7 @@ Format the diagnosis as:
129
126
  | Component | Status | Details |
130
127
  |-----------|--------|---------|
131
128
  | .mcp.json config | ✅/❌ | [daemon entry present/missing] |
132
- | Stdio server count | ✅/⚠️ | [1 = good / >1 = likely cause of issues] |
129
+ | Active MCP servers | ✅/⚠️ | [list of active servers] |
133
130
  | Daemon Python binary | ✅/❌ | [path exists/missing] |
134
131
  | Preflight | ✅/❌ | [all passed / N failures] |
135
132
  | Session manifest | ✅/❌ | [running/died/never started] |
@@ -159,21 +156,11 @@ If preflight shows fixable issues, try auto-repair:
159
156
  ~/.claudia/daemon/venv/bin/python -m claudia_memory --repair --project-dir "$PWD"
160
157
  ```
161
158
 
162
- ### Issue: Multiple stdio MCP servers (most common cause of missing tools)
163
-
164
- **Cause:** Claude Code bug #17962 means only one stdio server connects reliably. If `.mcp.json` has `claudia-memory`, `gmail`, and `google-calendar` all active as stdio servers, the daemon's tools silently vanish.
165
-
166
- **Fix:** Disable all stdio servers except `claudia-memory`. Prefix their keys with `_disabled_`:
167
- - `"gmail"` → `"_disabled_gmail"`
168
- - `"google-calendar"` → `"_disabled_google-calendar"`
169
-
170
- For Gmail/Calendar, use Rube (HTTP transport at `https://mcp.composio.dev`) instead of individual stdio servers. See the Rube section in CLAUDE.md.
171
-
172
159
  ### Issue: Tools not in palette but no error
173
160
 
174
- **Cause:** Daemon started but exited before Claude Code could handshake, Claude Code closed stdin too early, or multiple stdio servers are conflicting (check Step 1b above).
161
+ **Cause:** Daemon started but exited before Claude Code could handshake, or Claude Code closed stdin too early.
175
162
 
176
- **Fix:** First check for multiple stdio servers (Step 1b). If that's not the issue, check the session manifest:
163
+ **Fix:** Check the session manifest:
177
164
  ```bash
178
165
  cat ~/.claudia/daemon-session.json
179
166
  ```
@@ -6,17 +6,15 @@
6
6
  "_description": "Claudia memory system with vector search",
7
7
  "_setup": "Auto-configured by the installer (npx get-claudia). The installer creates a Python venv at ~/.claudia/daemon/venv/ and sets the correct command path in .mcp.json automatically."
8
8
  },
9
- "_disabled_gmail": {
9
+ "gmail": {
10
10
  "command": "npx",
11
11
  "args": ["-y", "@gongrzhe/server-gmail-autoauth-mcp"],
12
- "_setup": "Requires your own Google Cloud credentials. See Google Integration Setup in CLAUDE.md, then run: npx @gongrzhe/server-gmail-autoauth-mcp auth",
13
- "_warning": "Enabling this adds a second stdio server. Claude Code bug #17962 may cause silent failures with multiple stdio servers. Consider using Rube (HTTP) for Gmail instead."
12
+ "_setup": "Requires your own Google Cloud credentials. See Google Integration Setup in CLAUDE.md, then run: npx @gongrzhe/server-gmail-autoauth-mcp auth"
14
13
  },
15
- "_disabled_google-calendar": {
14
+ "google-calendar": {
16
15
  "command": "npx",
17
16
  "args": ["-y", "@gongrzhe/server-calendar-autoauth-mcp"],
18
- "_setup": "Requires your own Google Cloud credentials. See Google Integration Setup in CLAUDE.md, then run: npx @gongrzhe/server-calendar-autoauth-mcp auth",
19
- "_warning": "Enabling this adds a second stdio server. Claude Code bug #17962 may cause silent failures with multiple stdio servers. Consider using Rube (HTTP) for Gmail/Calendar instead."
17
+ "_setup": "Requires your own Google Cloud credentials. See Google Integration Setup in CLAUDE.md, then run: npx @gongrzhe/server-calendar-autoauth-mcp auth"
20
18
  },
21
19
  "rube": {
22
20
  "type": "http",
@@ -30,16 +28,15 @@
30
28
  },
31
29
 
32
30
  "_notes": {
33
- "stdio_warning": "Claude Code can only reliably connect to ONE stdio MCP server at a time (bug #17962). claudia-memory is the essential one. For Gmail/Calendar, use Rube (HTTP) instead of enabling individual stdio servers.",
34
31
  "memory": "Claudia's memory is powered by the claudia-memory daemon (Python MCP server). It provides ~33 tools for semantic search, pattern detection, and relationship tracking. The installer (npx get-claudia) automatically sets up the daemon in a Python venv at ~/.claudia/daemon/venv/ and configures .mcp.json.",
35
- "gmail_and_calendar": "Gmail and Calendar are disabled by default to avoid the multiple-stdio bug. To use them: either enable them individually (rename _disabled_gmail to gmail) knowing only one stdio server is reliable, or connect them through Rube (HTTP, no conflict).",
36
- "rube": "Rube (by Composio) connects 500+ apps through one HTTP MCP connection. No stdio conflict. Each user creates their own free Rube account at rube.app. See the Rube section in CLAUDE.md for setup and troubleshooting.",
32
+ "gmail_and_calendar": "Gmail and Calendar are enabled by default as stdio MCP servers. Each requires Google Cloud credentials (see Google Integration Setup in CLAUDE.md). Alternatively, connect them through Rube (HTTP) for a simpler setup.",
33
+ "rube": "Rube (by Composio) connects 500+ apps through one HTTP MCP connection. Each user creates their own free Rube account at rube.app. See the Rube section in CLAUDE.md for setup and troubleshooting.",
37
34
  "security": "Each user authenticates with their own accounts and credentials. OAuth tokens are stored locally on your machine, never shared.",
38
35
  "not_included": {
39
36
  "filesystem": "Claude Code has native Read/Write/Edit tools",
40
37
  "web-search": "Claude Code has native WebSearch",
41
38
  "fetch": "Claude Code has native WebFetch"
42
39
  },
43
- "adding_servers": "Add MCP servers here if needed. Find more at mcp.so or github.com/modelcontextprotocol/servers. Be aware that adding stdio servers alongside claudia-memory may cause connection issues."
40
+ "adding_servers": "Add MCP servers here if needed. Find more at mcp.so or github.com/modelcontextprotocol/servers."
44
41
  }
45
42
  }