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 +11 -0
- package/bin/index.js +20 -29
- package/package.json +1 -1
- package/template-v2/.claude/skills/diagnose/SKILL.md +11 -24
- package/template-v2/.mcp.json.example +7 -10
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
|
|
1010
|
-
*
|
|
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
|
-
//
|
|
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
|
@@ -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
|
|
39
|
+
### Step 1b: Check Active MCP Servers
|
|
40
40
|
|
|
41
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
|
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
|
|
161
|
+
**Cause:** Daemon started but exited before Claude Code could handshake, or Claude Code closed stdin too early.
|
|
175
162
|
|
|
176
|
-
**Fix:**
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
|
36
|
-
"rube": "Rube (by Composio) connects 500+ apps through one HTTP MCP connection.
|
|
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.
|
|
40
|
+
"adding_servers": "Add MCP servers here if needed. Find more at mcp.so or github.com/modelcontextprotocol/servers."
|
|
44
41
|
}
|
|
45
42
|
}
|