claude-conversation-memory-mcp 0.1.0 → 0.2.0

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.
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Configuration Manager for CLI
3
+ * Handles reading and writing embedding configuration
4
+ */
5
+ import { readFileSync, writeFileSync, existsSync } from "fs";
6
+ import { join } from "path";
7
+ import { homedir } from "os";
8
+ import { ConfigLoader } from "./EmbeddingConfig.js";
9
+ export class ConfigManager {
10
+ static CONFIG_FILENAME = ".claude-memory-config.json";
11
+ /**
12
+ * Get current effective configuration (after all precedence rules)
13
+ */
14
+ static getCurrentConfig() {
15
+ return ConfigLoader.load();
16
+ }
17
+ /**
18
+ * Get configuration sources breakdown
19
+ */
20
+ static getConfigSources() {
21
+ const homeConfigPath = join(homedir(), this.CONFIG_FILENAME);
22
+ const projectConfigPath = join(process.cwd(), this.CONFIG_FILENAME);
23
+ const homeConfig = existsSync(homeConfigPath)
24
+ ? this.loadConfigFile(homeConfigPath)?.embedding || null
25
+ : null;
26
+ const projectConfig = existsSync(projectConfigPath)
27
+ ? this.loadConfigFile(projectConfigPath)?.embedding || null
28
+ : null;
29
+ const envConfig = {};
30
+ if (process.env.EMBEDDING_PROVIDER) {
31
+ envConfig.provider = process.env.EMBEDDING_PROVIDER;
32
+ }
33
+ if (process.env.EMBEDDING_MODEL) {
34
+ envConfig.model = process.env.EMBEDDING_MODEL;
35
+ }
36
+ if (process.env.EMBEDDING_DIMENSIONS) {
37
+ envConfig.dimensions = parseInt(process.env.EMBEDDING_DIMENSIONS, 10);
38
+ }
39
+ if (process.env.EMBEDDING_BASE_URL) {
40
+ envConfig.baseUrl = process.env.EMBEDDING_BASE_URL;
41
+ }
42
+ if (process.env.OPENAI_API_KEY) {
43
+ envConfig.apiKey = process.env.OPENAI_API_KEY;
44
+ }
45
+ return {
46
+ home: homeConfig,
47
+ project: projectConfig,
48
+ env: envConfig,
49
+ effective: ConfigLoader.load(),
50
+ };
51
+ }
52
+ /**
53
+ * Get a specific config value
54
+ */
55
+ static getConfigValue(key) {
56
+ const config = this.getCurrentConfig();
57
+ switch (key) {
58
+ case "provider":
59
+ return config.provider;
60
+ case "model":
61
+ return config.model;
62
+ case "dimensions":
63
+ return config.dimensions;
64
+ case "baseUrl":
65
+ case "base_url":
66
+ return config.baseUrl;
67
+ case "apiKey":
68
+ case "api_key":
69
+ return config.apiKey;
70
+ default:
71
+ throw new Error(`Unknown config key: ${key}. Valid keys: provider, model, dimensions, baseUrl, apiKey`);
72
+ }
73
+ }
74
+ /**
75
+ * Set a config value (writes to home config file)
76
+ */
77
+ static setConfigValue(key, value) {
78
+ const homeConfigPath = join(homedir(), this.CONFIG_FILENAME);
79
+ // Load existing config or create new one
80
+ let config = { embedding: {} };
81
+ if (existsSync(homeConfigPath)) {
82
+ const existing = this.loadConfigFile(homeConfigPath);
83
+ if (existing && existing.embedding) {
84
+ config = { embedding: existing.embedding };
85
+ }
86
+ }
87
+ // Ensure embedding object exists
88
+ if (!config.embedding) {
89
+ config.embedding = {};
90
+ }
91
+ // Set the value with type conversion
92
+ switch (key) {
93
+ case "provider":
94
+ if (!["ollama", "transformers", "openai"].includes(value)) {
95
+ throw new Error(`Invalid provider: ${value}. Must be 'ollama', 'transformers', or 'openai'`);
96
+ }
97
+ config.embedding.provider = value;
98
+ break;
99
+ case "model":
100
+ if (!value || value.trim() === "") {
101
+ throw new Error("Model name cannot be empty");
102
+ }
103
+ config.embedding.model = value;
104
+ break;
105
+ case "dimensions": {
106
+ const dims = parseInt(value, 10);
107
+ if (isNaN(dims) || dims < 1 || dims > 10000) {
108
+ throw new Error("Dimensions must be a number between 1 and 10000");
109
+ }
110
+ config.embedding.dimensions = dims;
111
+ break;
112
+ }
113
+ case "baseUrl":
114
+ case "base_url":
115
+ config.embedding.baseUrl = value;
116
+ break;
117
+ case "apiKey":
118
+ case "api_key":
119
+ config.embedding.apiKey = value;
120
+ break;
121
+ default:
122
+ throw new Error(`Unknown config key: ${key}. Valid keys: provider, model, dimensions, baseUrl, apiKey`);
123
+ }
124
+ // Write config file
125
+ try {
126
+ writeFileSync(homeConfigPath, JSON.stringify(config, null, 2), "utf-8");
127
+ }
128
+ catch (error) {
129
+ throw new Error(`Failed to write config file: ${error.message}`);
130
+ }
131
+ }
132
+ /**
133
+ * Get config file path (home directory)
134
+ */
135
+ static getConfigPath() {
136
+ return join(homedir(), this.CONFIG_FILENAME);
137
+ }
138
+ /**
139
+ * Check if config file exists
140
+ */
141
+ static configExists() {
142
+ return existsSync(this.getConfigPath());
143
+ }
144
+ /**
145
+ * Load config file
146
+ */
147
+ static loadConfigFile(path) {
148
+ try {
149
+ const content = readFileSync(path, "utf-8");
150
+ return JSON.parse(content);
151
+ }
152
+ catch (_error) {
153
+ return null;
154
+ }
155
+ }
156
+ /**
157
+ * Get known model dimensions for common models
158
+ */
159
+ static getKnownModelDimensions(model) {
160
+ const knownDimensions = {
161
+ // Ollama models
162
+ "mxbai-embed-large": 1024,
163
+ "nomic-embed-text": 768,
164
+ "all-minilm": 384,
165
+ "snowflake-arctic-embed": 1024,
166
+ // OpenAI models
167
+ "text-embedding-3-small": 1536,
168
+ "text-embedding-3-large": 3072,
169
+ "text-embedding-ada-002": 1536,
170
+ // Transformers models
171
+ "Xenova/all-MiniLM-L6-v2": 384,
172
+ "Xenova/all-mpnet-base-v2": 768,
173
+ };
174
+ return knownDimensions[model] || null;
175
+ }
176
+ }
177
+ //# sourceMappingURL=ConfigManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../../src/embeddings/ConfigManager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAIEmbeddings.d.ts","sourceRoot":"","sources":["../../../src/embeddings/providers/OpenAIEmbeddings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAc5E,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,mBAAmB,CAAsB;gBAErC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAiC,EAAE,UAAU,CAAC,EAAE,MAAM;IAMzF;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkCjC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoBhD;;;OAGG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,MAAY,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAoCnF;;OAEG;IACH,YAAY,IAAI,SAAS;IASzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAS7B"}
1
+ {"version":3,"file":"OpenAIEmbeddings.d.ts","sourceRoot":"","sources":["../../../src/embeddings/providers/OpenAIEmbeddings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAc5E,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,mBAAmB,CAAsB;gBAErC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAiC,EAAE,UAAU,CAAC,EAAE,MAAM;IAMzF;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiCjC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoBhD;;;OAGG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,MAAY,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAoCnF;;OAEG;IACH,YAAY,IAAI,SAAS;IASzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAS7B"}
@@ -23,8 +23,7 @@ export class OpenAIEmbeddings {
23
23
  throw new Error("OpenAI API key required. Set OPENAI_API_KEY environment variable.");
24
24
  }
25
25
  // Dynamic import of OpenAI SDK (optional dependency)
26
- // @ts-expect-error - openai is an optional dependency
27
- const OpenAI = (await import("openai")).default;
26
+ const { default: OpenAI } = await import("openai");
28
27
  this.client = new OpenAI({
29
28
  apiKey: this.apiKey,
30
29
  });
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAIEmbeddings.js","sourceRoot":"","sources":["../../../src/embeddings/providers/OpenAIEmbeddings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenAIEmbeddings.js","sourceRoot":"","sources":["../../../src/embeddings/providers/OpenAIEmbeddings.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Claude Conversation Memory - MCP Server
4
- * Main entry point with stdio transport
3
+ * Claude Conversation Memory - Main Entry Point
4
+ * Supports both MCP server mode and interactive CLI mode
5
5
  */
6
6
  export {};
7
7
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,127 +1,61 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Claude Conversation Memory - MCP Server
4
- * Main entry point with stdio transport
3
+ * Claude Conversation Memory - Main Entry Point
4
+ * Supports both MCP server mode and interactive CLI mode
5
5
  */
6
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
7
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
8
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
9
- import { ConversationMemory } from "./ConversationMemory.js";
10
- import { ToolHandlers } from "./tools/ToolHandlers.js";
11
- import { TOOLS } from "./tools/ToolDefinitions.js";
12
- import { getSQLiteManager } from "./storage/SQLiteManager.js";
6
+ import { ConversationMemoryServer } from "./mcp-server.js";
7
+ import { ConversationMemoryCLI } from "./cli/index.js";
13
8
  /**
14
- * Main MCP Server
9
+ * Detect mode based on arguments and environment
15
10
  */
16
- class ConversationMemoryServer {
17
- server;
18
- memory;
19
- handlers;
20
- constructor() {
21
- this.server = new Server({
22
- name: "claude-conversation-memory",
23
- version: "0.1.0",
24
- }, {
25
- capabilities: {
26
- tools: {},
27
- },
28
- });
29
- this.memory = new ConversationMemory();
30
- this.handlers = new ToolHandlers(this.memory, getSQLiteManager());
31
- this.setupHandlers();
11
+ function detectMode() {
12
+ const args = process.argv.slice(2);
13
+ // If --server flag is present, run MCP server mode
14
+ if (args.includes("--server")) {
15
+ return "mcp";
32
16
  }
33
- /**
34
- * Setup MCP request handlers
35
- */
36
- setupHandlers() {
37
- // List available tools
38
- this.server.setRequestHandler(ListToolsRequestSchema, async () => {
39
- return {
40
- tools: Object.values(TOOLS),
41
- };
42
- });
43
- // Handle tool execution
44
- this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
45
- const { name, arguments: args } = request.params;
46
- try {
47
- console.error(`[MCP] Executing tool: ${name}`);
48
- let result;
49
- switch (name) {
50
- case "index_conversations":
51
- result = await this.handlers.indexConversations(args);
52
- break;
53
- case "search_conversations":
54
- result = await this.handlers.searchConversations(args);
55
- break;
56
- case "get_decisions":
57
- result = await this.handlers.getDecisions(args);
58
- break;
59
- case "check_before_modify":
60
- result = await this.handlers.checkBeforeModify(args);
61
- break;
62
- case "get_file_evolution":
63
- result = await this.handlers.getFileEvolution(args);
64
- break;
65
- case "link_commits_to_conversations":
66
- result = await this.handlers.linkCommitsToConversations(args);
67
- break;
68
- case "search_mistakes":
69
- result = await this.handlers.searchMistakes(args);
70
- break;
71
- case "get_requirements":
72
- result = await this.handlers.getRequirements(args);
73
- break;
74
- case "get_tool_history":
75
- result = await this.handlers.getToolHistory(args);
76
- break;
77
- case "find_similar_sessions":
78
- result = await this.handlers.findSimilarSessions(args);
79
- break;
80
- case "generate_documentation":
81
- result = await this.handlers.generateDocumentation(args);
82
- break;
83
- default:
84
- throw new Error(`Unknown tool: ${name}`);
85
- }
86
- return {
87
- content: [
88
- {
89
- type: "text",
90
- text: JSON.stringify(result, null, 2),
91
- },
92
- ],
93
- };
94
- }
95
- catch (error) {
96
- const err = error;
97
- console.error(`[MCP] Error executing tool ${name}:`, err);
98
- return {
99
- content: [
100
- {
101
- type: "text",
102
- text: `Error: ${err.message}\n\nStack: ${err.stack}`,
103
- },
104
- ],
105
- isError: true,
106
- };
107
- }
108
- });
17
+ // If command arguments are present (excluding --server), run single command mode
18
+ if (args.length > 0) {
19
+ return "single-command";
109
20
  }
110
- /**
111
- * Start the server
112
- */
113
- async start() {
114
- const transport = new StdioServerTransport();
115
- console.error("[MCP] Claude Conversation Memory Server starting...");
116
- console.error(`[MCP] Database: ${getSQLiteManager().getStats().dbPath}`);
117
- await this.server.connect(transport);
118
- console.error("[MCP] Server ready - listening on stdio");
21
+ // If not a TTY (running via stdio), run MCP server mode
22
+ if (!process.stdin.isTTY) {
23
+ return "mcp";
119
24
  }
25
+ // Otherwise, run interactive CLI mode
26
+ return "cli";
120
27
  }
121
- // Start the server
122
- const server = new ConversationMemoryServer();
123
- server.start().catch((error) => {
124
- console.error("[MCP] Fatal error:", error);
28
+ /**
29
+ * Main entry point
30
+ */
31
+ async function main() {
32
+ const mode = detectMode();
33
+ const args = process.argv.slice(2).filter((arg) => arg !== "--server");
34
+ switch (mode) {
35
+ case "mcp": {
36
+ // MCP Server Mode (for Claude Code CLI integration)
37
+ const mcpServer = new ConversationMemoryServer();
38
+ await mcpServer.start();
39
+ break;
40
+ }
41
+ case "single-command": {
42
+ // Single Command Mode
43
+ const singleCLI = new ConversationMemoryCLI();
44
+ await singleCLI.runSingleCommand(args.join(" "));
45
+ break;
46
+ }
47
+ case "cli":
48
+ default: {
49
+ // Interactive REPL Mode
50
+ const repl = new ConversationMemoryCLI();
51
+ await repl.start();
52
+ break;
53
+ }
54
+ }
55
+ }
56
+ // Run main
57
+ main().catch((error) => {
58
+ console.error("Fatal error:", error);
125
59
  process.exit(1);
126
60
  });
127
61
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;GAEG;AACH,SAAS,UAAU;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,mDAAmD;IACnD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,iFAAiF;IACjF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,wDAAwD;IACxD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,sCAAsC;IACtC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;IAEvE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,oDAAoD;YACpD,MAAM,SAAS,GAAG,IAAI,wBAAwB,EAAE,CAAC;YACjD,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;YACxB,MAAM;QACR,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,sBAAsB;YACtB,MAAM,SAAS,GAAG,IAAI,qBAAqB,EAAE,CAAC;YAC9C,MAAM,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACjD,MAAM;QACR,CAAC;QAED,KAAK,KAAK,CAAC;QACX,OAAO,CAAC,CAAC,CAAC;YACR,wBAAwB;YACxB,MAAM,IAAI,GAAG,IAAI,qBAAqB,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,WAAW;AACX,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Claude Conversation Memory - MCP Server
3
+ * MCP server implementation with stdio transport
4
+ */
5
+ /**
6
+ * Main MCP Server
7
+ */
8
+ export declare class ConversationMemoryServer {
9
+ private server;
10
+ private memory;
11
+ private handlers;
12
+ constructor();
13
+ /**
14
+ * Setup MCP request handlers
15
+ */
16
+ private setupHandlers;
17
+ /**
18
+ * Start the server
19
+ */
20
+ start(): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH;;GAEG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAe;;IAqB/B;;OAEG;IACH,OAAO,CAAC,aAAa;IA2FrB;;OAEG;IACG,KAAK;CAUZ"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Claude Conversation Memory - MCP Server
3
+ * MCP server implementation with stdio transport
4
+ */
5
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
6
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
7
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
8
+ import { ConversationMemory } from "./ConversationMemory.js";
9
+ import { ToolHandlers } from "./tools/ToolHandlers.js";
10
+ import { TOOLS } from "./tools/ToolDefinitions.js";
11
+ import { getSQLiteManager } from "./storage/SQLiteManager.js";
12
+ /**
13
+ * Main MCP Server
14
+ */
15
+ export class ConversationMemoryServer {
16
+ server;
17
+ memory;
18
+ handlers;
19
+ constructor() {
20
+ this.server = new Server({
21
+ name: "claude-conversation-memory",
22
+ version: "0.2.0",
23
+ }, {
24
+ capabilities: {
25
+ tools: {},
26
+ },
27
+ });
28
+ this.memory = new ConversationMemory();
29
+ this.handlers = new ToolHandlers(this.memory, getSQLiteManager());
30
+ this.setupHandlers();
31
+ }
32
+ /**
33
+ * Setup MCP request handlers
34
+ */
35
+ setupHandlers() {
36
+ // List available tools
37
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => {
38
+ return {
39
+ tools: Object.values(TOOLS),
40
+ };
41
+ });
42
+ // Handle tool execution
43
+ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
44
+ const { name, arguments: args } = request.params;
45
+ try {
46
+ console.error(`[MCP] Executing tool: ${name}`);
47
+ let result;
48
+ switch (name) {
49
+ case "index_conversations":
50
+ result = await this.handlers.indexConversations(args);
51
+ break;
52
+ case "search_conversations":
53
+ result = await this.handlers.searchConversations(args);
54
+ break;
55
+ case "get_decisions":
56
+ result = await this.handlers.getDecisions(args);
57
+ break;
58
+ case "check_before_modify":
59
+ result = await this.handlers.checkBeforeModify(args);
60
+ break;
61
+ case "get_file_evolution":
62
+ result = await this.handlers.getFileEvolution(args);
63
+ break;
64
+ case "link_commits_to_conversations":
65
+ result = await this.handlers.linkCommitsToConversations(args);
66
+ break;
67
+ case "search_mistakes":
68
+ result = await this.handlers.searchMistakes(args);
69
+ break;
70
+ case "get_requirements":
71
+ result = await this.handlers.getRequirements(args);
72
+ break;
73
+ case "get_tool_history":
74
+ result = await this.handlers.getToolHistory(args);
75
+ break;
76
+ case "find_similar_sessions":
77
+ result = await this.handlers.findSimilarSessions(args);
78
+ break;
79
+ case "generate_documentation":
80
+ result = await this.handlers.generateDocumentation(args);
81
+ break;
82
+ default:
83
+ throw new Error(`Unknown tool: ${name}`);
84
+ }
85
+ return {
86
+ content: [
87
+ {
88
+ type: "text",
89
+ text: JSON.stringify(result, null, 2),
90
+ },
91
+ ],
92
+ };
93
+ }
94
+ catch (error) {
95
+ const err = error;
96
+ console.error(`[MCP] Error executing tool ${name}:`, err);
97
+ return {
98
+ content: [
99
+ {
100
+ type: "text",
101
+ text: `Error: ${err.message}\n\nStack: ${err.stack}`,
102
+ },
103
+ ],
104
+ isError: true,
105
+ };
106
+ }
107
+ });
108
+ }
109
+ /**
110
+ * Start the server
111
+ */
112
+ async start() {
113
+ const transport = new StdioServerTransport();
114
+ console.error("[MCP] Claude Conversation Memory Server starting...");
115
+ console.error(`[MCP] Database: ${getSQLiteManager().getStats().dbPath}`);
116
+ await this.server.connect(transport);
117
+ console.error("[MCP] Server ready - listening on stdio");
118
+ }
119
+ }
120
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-conversation-memory-mcp",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "MCP server for indexing and searching Claude Code conversation history with decision tracking and git integration",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -50,8 +50,12 @@
50
50
  "dependencies": {
51
51
  "@modelcontextprotocol/sdk": "^1.0.4",
52
52
  "better-sqlite3": "^11.10.0",
53
+ "chalk": "^5.3.0",
54
+ "cli-table3": "^0.6.5",
55
+ "commander": "^12.1.0",
53
56
  "lru-cache": "^10.0.0",
54
57
  "nanoid": "^5.0.0",
58
+ "prompts": "^2.4.2",
55
59
  "simple-git": "^3.25.0",
56
60
  "sqlite-vec": "^0.1.6"
57
61
  },
@@ -63,6 +67,7 @@
63
67
  "@types/better-sqlite3": "^7.6.11",
64
68
  "@types/jest": "^29.5.14",
65
69
  "@types/node": "^22.10.5",
70
+ "@types/prompts": "^2.4.9",
66
71
  "@typescript-eslint/eslint-plugin": "^8.19.1",
67
72
  "@typescript-eslint/parser": "^8.19.1",
68
73
  "eslint": "^9.18.0",