@n0zer0d4y/vulcan-file-ops 1.2.8 → 1.2.10

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
@@ -9,6 +9,96 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
 
11
11
 
12
+ ## [1.2.10] - 2026-01-31
13
+
14
+ ### Fixed
15
+
16
+ - **CRITICAL**: Fixed MCP server toggle failure in Claude Desktop caused by capability mismatch
17
+ - **Root Cause**: Server declared `resources: {}` and `prompts: {}` capabilities but had NO handlers for `resources/list` and `prompts/list` methods
18
+ - Claude Desktop calls these methods after initialization, receives "Method not found" (-32601) errors, and fails to enable the server toggle
19
+ - **Solution**: Removed `resources` and `prompts` capability declarations from both Server constructor and initialize response
20
+ - Per MCP specification: A server MUST NOT declare capabilities for features it does not implement
21
+ - This bug was originally fixed in v1.2.3 but was reintroduced in v1.2.8 when code was restored to v1.2.1 baseline
22
+ - See `local_docs/RCA-Claude-Desktop-MCP-Capability-Mismatch-2026-01-31.md` for complete root cause analysis
23
+
24
+ ### Changed
25
+
26
+ - Server now only declares `tools` capability (which is fully implemented)
27
+ - Removed unused capability declarations that caused protocol compliance issues
28
+
29
+ ### References
30
+
31
+ - [MCPcat Guide: Fix MCP Error -32601](https://mcpcat.io/guides/fixing-method-not-found-32601-error/)
32
+ - MCP Protocol Specification: Capability declaration requirements
33
+
34
+ ## [1.2.9] - 2026-01-31
35
+
36
+ ### Fixed
37
+
38
+ - **CRITICAL**: Fixed protocol version negotiation causing Claude Desktop connection failures
39
+ - Server now returns the protocol version requested by the client instead of hardcoded `LATEST_PROTOCOL_VERSION`
40
+ - Claude Desktop requests `2025-06-18` but previous versions returned `2025-11-25`, causing immediate disconnection
41
+ - This fix ensures compatibility with all MCP clients regardless of their supported protocol version
42
+
43
+ ### Changed
44
+
45
+ - Protocol version in initialize response now mirrors client's requested version
46
+ - Added documentation comments explaining protocol version negotiation requirements
47
+
48
+ ## [1.2.8] - 2026-01-31
49
+
50
+ ### Changed
51
+
52
+ - Restored source code to working v1.2.1 baseline
53
+ - Downgraded `@modelcontextprotocol/sdk` from `^1.25.2` to `1.20.0` for stability
54
+ - Removed experimental console suppression changes that caused issues
55
+
56
+ ### Notes
57
+
58
+ - This release reverts problematic changes while maintaining SDK 1.20.0 compatibility
59
+
60
+ ## [1.2.7] - 2026-01-31
61
+
62
+ ### Fixed
63
+
64
+ - Downgraded `@modelcontextprotocol/sdk` to `1.20.0` to resolve Claude Desktop compatibility issues
65
+ - SDK 1.25.x introduced breaking changes in stdio transport and protocol handling
66
+
67
+ ### Changed
68
+
69
+ - Locked SDK version to exact `1.20.0` (removed caret range)
70
+
71
+ ## [1.2.6] - 2026-01-31
72
+
73
+ ### Fixed
74
+
75
+ - Silenced dotenv debug output that was polluting stdout and corrupting MCP JSON-RPC protocol
76
+ - Added `quiet: true` option to `dotenv.config()` call
77
+ - Improved MCP mode detection logic
78
+ - Changed TTY detection from AND to OR logic: now triggers MCP mode if EITHER stdin OR stdout is piped
79
+ - This fixes edge cases where different shells/platforms report TTY status inconsistently
80
+
81
+ ### Changed
82
+
83
+ - Console suppression now activates when any standard stream is piped, not just when both are piped
84
+
85
+ ## [1.2.5] - 2026-01-31
86
+
87
+ ### Fixed
88
+
89
+ - **CRITICAL**: Fixed ES Module execution order bug causing stdout pollution in MCP mode
90
+ - Console suppression code in `cli.ts` was ineffective due to ES Module static import hoisting
91
+ - Child modules (including `server/index.ts`) were evaluated BEFORE parent module's top-level code
92
+ - Moved console suppression to the top of `server/index.ts` before any imports
93
+ - Deferred `parseArguments()` call from module-level to inside `runServer()` function
94
+ - Added `--help` and `--version` flag detection to preserve CLI functionality
95
+ - See `local_docs/RCA-Claude-Desktop-MCP-Toggle-Failure-2026-01-31.md` for complete root cause analysis
96
+
97
+ ### Changed
98
+
99
+ - MCP mode detection now excludes `--help` and `--version` flags to allow CLI usage
100
+ - Reorganized initialization sequence to ensure console suppression happens before any potential output
101
+
12
102
  ## [1.2.4] - 2026-01-21
13
103
 
14
104
  ### Fixed
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
3
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
- import { CallToolRequestSchema, ListToolsRequestSchema, InitializeRequestSchema, PingRequestSchema, RootsListChangedNotificationSchema, LATEST_PROTOCOL_VERSION, } from "@modelcontextprotocol/sdk/types.js";
4
+ import { CallToolRequestSchema, ListToolsRequestSchema, InitializeRequestSchema, PingRequestSchema, RootsListChangedNotificationSchema, } from "@modelcontextprotocol/sdk/types.js";
5
5
  import fs from "fs/promises";
6
6
  import path from "path";
7
7
  import dotenv from "dotenv";
@@ -382,21 +382,24 @@ const server = new Server({
382
382
  tools: {
383
383
  listChanged: true,
384
384
  },
385
- resources: {},
386
- prompts: {},
385
+ // CRITICAL: Do NOT declare resources or prompts capabilities
386
+ // We don't implement handlers for resources/list or prompts/list
387
+ // Declaring them causes Claude Desktop to call these methods,
388
+ // receive "Method not found" errors, and fail to enable the toggle
387
389
  },
388
390
  });
389
391
  // Initialize handler - required for MCP protocol
390
392
  server.setRequestHandler(InitializeRequestSchema, async (request) => {
391
393
  const clientCapabilities = request.params.capabilities;
392
394
  return {
393
- protocolVersion: LATEST_PROTOCOL_VERSION,
395
+ // CRITICAL: Return the protocol version the CLIENT requested, not LATEST
396
+ // Claude Desktop only supports 2025-06-18 and will disconnect if we return 2025-11-25
397
+ protocolVersion: request.params.protocolVersion,
394
398
  capabilities: {
395
399
  tools: {
396
400
  listChanged: true,
397
401
  },
398
- resources: {},
399
- prompts: {},
402
+ // CRITICAL: Do NOT declare resources or prompts - we don't implement them
400
403
  },
401
404
  serverInfo: {
402
405
  name: "vulcan-file-ops",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@n0zer0d4y/vulcan-file-ops",
3
- "version": "1.2.8",
3
+ "version": "1.2.10",
4
4
  "mcpName": "io.github.n0zer0d4y/vulcan-file-ops",
5
5
  "description": "MCP server for AI assistants: read, write, edit, and manage files securely on local filesystem.",
6
6
  "license": "MIT",