@ebowwa/claudecodehistory 1.4.0 → 1.5.1
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/dist/history-service.d.ts +5 -13
- package/dist/history-service.d.ts.map +1 -1
- package/dist/history-service.js +135 -145
- package/dist/history-service.js.map +1 -1
- package/package.json +2 -12
- package/example/README.md +0 -79
- package/example/package.json +0 -37
- package/example/src/index.js +0 -275
- package/example/src/index.ts +0 -233
- package/example/tsconfig.json +0 -16
|
@@ -132,6 +132,11 @@ export declare class ClaudeCodeHistoryService {
|
|
|
132
132
|
searchConversations(searchQuery: string, options?: SearchOptions): Promise<ConversationEntry[]>;
|
|
133
133
|
listProjects(): Promise<ProjectInfo[]>;
|
|
134
134
|
listSessions(options?: SessionListOptions): Promise<SessionInfo[]>;
|
|
135
|
+
/**
|
|
136
|
+
* Fast path: List sessions using the Rust parser
|
|
137
|
+
* Groups entries by session_id from fast parser results
|
|
138
|
+
*/
|
|
139
|
+
private listSessionsFast;
|
|
135
140
|
/**
|
|
136
141
|
* Get recent activity across all projects
|
|
137
142
|
* Returns what was asked, what was done, and when for the most recent sessions
|
|
@@ -141,20 +146,7 @@ export declare class ClaudeCodeHistoryService {
|
|
|
141
146
|
* Generate a brief summary of what was done in a session from assistant messages
|
|
142
147
|
*/
|
|
143
148
|
private generateSessionSummary;
|
|
144
|
-
/**
|
|
145
|
-
* Convert ParsedEntry from fast parser to ConversationEntry
|
|
146
|
-
*/
|
|
147
|
-
private convertParsedEntryToConversationEntry;
|
|
148
|
-
/**
|
|
149
|
-
* Load history entries using the fast Rust parser
|
|
150
|
-
* Falls back to slow TypeScript parser if fast parser fails or is disabled
|
|
151
|
-
*/
|
|
152
149
|
private loadClaudeHistoryEntries;
|
|
153
|
-
/**
|
|
154
|
-
* Fast path: Load history entries using the Rust parser
|
|
155
|
-
* ~10-50x faster than TypeScript implementation
|
|
156
|
-
*/
|
|
157
|
-
private loadClaudeHistoryEntriesFast;
|
|
158
150
|
private parseJsonlFile;
|
|
159
151
|
private convertClaudeMessageToEntry;
|
|
160
152
|
private getTimeAgo;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-service.d.ts","sourceRoot":"","sources":["../src/history-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"history-service.d.ts","sourceRoot":"","sources":["../src/history-service.ts"],"names":[],"mappings":"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"}
|
package/dist/history-service.js
CHANGED
|
@@ -7,7 +7,6 @@ import { exec } from 'child_process';
|
|
|
7
7
|
import { promisify } from 'util';
|
|
8
8
|
import { parseDirFast } from '@ebowwa/jsonl-hft';
|
|
9
9
|
const execAsync = promisify(exec);
|
|
10
|
-
// Enable fast Rust parser by default (can be disabled for debugging)
|
|
11
10
|
const USE_FAST_PARSER = process.env.CLAUDE_HISTORY_FAST_PARSER !== 'false';
|
|
12
11
|
export class ClaudeCodeHistoryService {
|
|
13
12
|
claudeDir;
|
|
@@ -46,11 +45,15 @@ export class ClaudeCodeHistoryService {
|
|
|
46
45
|
const tzOffsetMs = targetTzTime.getTime() - utcTime.getTime();
|
|
47
46
|
// Adjust local time to get UTC equivalent
|
|
48
47
|
const utcResult = new Date(localTime.getTime() + offsetMs - tzOffsetMs);
|
|
49
|
-
|
|
48
|
+
const result = utcResult.toISOString();
|
|
49
|
+
console.log(`normalizeDate: ${dateString} (${isEndDate ? 'end' : 'start'}) in ${tz} -> ${result}`);
|
|
50
|
+
return result;
|
|
50
51
|
}
|
|
51
|
-
catch {
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.warn(`Failed to process timezone ${tz}, falling back to simple conversion:`, error);
|
|
54
|
+
const fallback = `${dateString}T${isEndDate ? '23:59:59.999' : '00:00:00.000'}Z`;
|
|
55
|
+
console.log(`normalizeDate fallback: ${dateString} -> ${fallback}`);
|
|
56
|
+
return fallback;
|
|
54
57
|
}
|
|
55
58
|
}
|
|
56
59
|
async getConversationHistory(options = {}) {
|
|
@@ -185,52 +188,60 @@ export class ClaudeCodeHistoryService {
|
|
|
185
188
|
const projectDirPath = path.join(projectsDir, projectDir);
|
|
186
189
|
const stats = await fs.stat(projectDirPath);
|
|
187
190
|
if (stats.isDirectory()) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
191
|
+
// Use fast parser if available
|
|
192
|
+
if (USE_FAST_PARSER) {
|
|
193
|
+
const fastSessions = await this.listSessionsFast(projectDirPath, projectDir, normalizedStartDate, normalizedEndDate);
|
|
194
|
+
sessions.push(...fastSessions);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
// Fallback to slow parser
|
|
198
|
+
const files = await fs.readdir(projectDirPath);
|
|
199
|
+
for (const file of files) {
|
|
200
|
+
if (file.endsWith('.jsonl')) {
|
|
201
|
+
const sessionId = file.replace('.jsonl', '');
|
|
202
|
+
const filePath = path.join(projectDirPath, file);
|
|
203
|
+
const entries = await this.parseJsonlFile(filePath, projectDir);
|
|
204
|
+
if (entries.length === 0)
|
|
205
|
+
continue;
|
|
206
|
+
const sessionStart = entries[entries.length - 1].timestamp;
|
|
207
|
+
const sessionEnd = entries[0].timestamp;
|
|
208
|
+
// Filter by date range if specified
|
|
209
|
+
if (normalizedStartDate && sessionEnd < normalizedStartDate)
|
|
210
|
+
continue;
|
|
211
|
+
if (normalizedEndDate && sessionStart > normalizedEndDate)
|
|
212
|
+
continue;
|
|
213
|
+
const userMessageCount = entries.filter(e => e.type === 'user').length;
|
|
214
|
+
const assistantMessageCount = entries.filter(e => e.type === 'assistant').length;
|
|
215
|
+
// Calculate duration
|
|
216
|
+
const startTime = new Date(sessionStart).getTime();
|
|
217
|
+
const endTime = new Date(sessionEnd).getTime();
|
|
218
|
+
const durationMs = endTime - startTime;
|
|
219
|
+
// Find first user message for preview
|
|
220
|
+
const firstUserEntry = entries.slice().reverse().find(e => e.type === 'user');
|
|
221
|
+
const firstUserMessage = firstUserEntry
|
|
222
|
+
? (firstUserEntry.content.length > 100
|
|
223
|
+
? firstUserEntry.content.slice(0, 100) + '...'
|
|
224
|
+
: firstUserEntry.content)
|
|
225
|
+
: undefined;
|
|
226
|
+
// Check for errors
|
|
227
|
+
const hasErrors = entries.some(e => e.metadata?.isError === true);
|
|
228
|
+
// Extract project name from path
|
|
229
|
+
const projectName = decodedPath.split('/').pop() || decodedPath;
|
|
230
|
+
sessions.push({
|
|
231
|
+
sessionId,
|
|
232
|
+
projectPath: decodedPath,
|
|
233
|
+
projectName,
|
|
234
|
+
startTime: sessionStart,
|
|
235
|
+
endTime: sessionEnd,
|
|
236
|
+
messageCount: entries.length,
|
|
237
|
+
userMessageCount,
|
|
238
|
+
assistantMessageCount,
|
|
239
|
+
firstUserMessage,
|
|
240
|
+
durationMs,
|
|
241
|
+
durationFormatted: this.formatDuration(durationMs),
|
|
242
|
+
hasErrors
|
|
243
|
+
});
|
|
244
|
+
}
|
|
234
245
|
}
|
|
235
246
|
}
|
|
236
247
|
}
|
|
@@ -243,6 +254,79 @@ export class ClaudeCodeHistoryService {
|
|
|
243
254
|
sessions.sort((a, b) => new Date(b.startTime).getTime() - new Date(a.startTime).getTime());
|
|
244
255
|
return sessions;
|
|
245
256
|
}
|
|
257
|
+
/**
|
|
258
|
+
* Fast path: List sessions using the Rust parser
|
|
259
|
+
* Groups entries by session_id from fast parser results
|
|
260
|
+
*/
|
|
261
|
+
async listSessionsFast(projectDirPath, projectDir, startDate, endDate) {
|
|
262
|
+
const sessions = [];
|
|
263
|
+
const decodedPath = this.decodeProjectPath(projectDir);
|
|
264
|
+
// Use fast parser on the project directory
|
|
265
|
+
const parsedEntries = parseDirFast(projectDirPath);
|
|
266
|
+
// Group entries by session_id
|
|
267
|
+
const sessionMap = new Map();
|
|
268
|
+
for (const entry of parsedEntries) {
|
|
269
|
+
// Skip entries with empty session_id
|
|
270
|
+
if (!entry.session_id)
|
|
271
|
+
continue;
|
|
272
|
+
// Apply date filtering
|
|
273
|
+
if (startDate && entry.timestamp < startDate)
|
|
274
|
+
continue;
|
|
275
|
+
if (endDate && entry.timestamp > endDate)
|
|
276
|
+
continue;
|
|
277
|
+
if (!sessionMap.has(entry.session_id)) {
|
|
278
|
+
sessionMap.set(entry.session_id, []);
|
|
279
|
+
}
|
|
280
|
+
sessionMap.get(entry.session_id).push(entry);
|
|
281
|
+
}
|
|
282
|
+
// Convert to SessionInfo
|
|
283
|
+
for (const [sessionId, entries] of sessionMap) {
|
|
284
|
+
if (entries.length === 0)
|
|
285
|
+
continue;
|
|
286
|
+
// Sort entries by timestamp
|
|
287
|
+
entries.sort((a, b) => a.timestamp.localeCompare(b.timestamp));
|
|
288
|
+
const sessionStart = entries[entries.length - 1].timestamp;
|
|
289
|
+
const sessionEnd = entries[0].timestamp;
|
|
290
|
+
// Filter by date range
|
|
291
|
+
if (startDate && sessionEnd < startDate)
|
|
292
|
+
continue;
|
|
293
|
+
if (endDate && sessionStart > endDate)
|
|
294
|
+
continue;
|
|
295
|
+
// Count message types
|
|
296
|
+
const userEntries = entries.filter(e => e.role?.toLowerCase() === 'user');
|
|
297
|
+
const assistantEntries = entries.filter(e => e.role?.toLowerCase() === 'assistant');
|
|
298
|
+
const userMessageCount = userEntries.length;
|
|
299
|
+
const assistantMessageCount = assistantEntries.length;
|
|
300
|
+
// Calculate duration
|
|
301
|
+
const startTime = new Date(sessionStart).getTime();
|
|
302
|
+
const endTime = new Date(sessionEnd).getTime();
|
|
303
|
+
const durationMs = endTime - startTime;
|
|
304
|
+
// Find first user message for preview
|
|
305
|
+
const firstUserEntry = userEntries[userEntries.length - 1]; // Last in sorted = earliest
|
|
306
|
+
const firstUserMessage = firstUserEntry?.content
|
|
307
|
+
? (firstUserEntry.content.length > 100
|
|
308
|
+
? firstUserEntry.content.slice(0, 100) + '...'
|
|
309
|
+
: firstUserEntry.content)
|
|
310
|
+
: undefined;
|
|
311
|
+
// Extract project name from path
|
|
312
|
+
const projectName = decodedPath.split('/').pop() || decodedPath;
|
|
313
|
+
sessions.push({
|
|
314
|
+
sessionId,
|
|
315
|
+
projectPath: decodedPath,
|
|
316
|
+
projectName,
|
|
317
|
+
startTime: sessionStart,
|
|
318
|
+
endTime: sessionEnd,
|
|
319
|
+
messageCount: entries.length,
|
|
320
|
+
userMessageCount,
|
|
321
|
+
assistantMessageCount,
|
|
322
|
+
firstUserMessage,
|
|
323
|
+
durationMs,
|
|
324
|
+
durationFormatted: this.formatDuration(durationMs),
|
|
325
|
+
hasErrors: false // Would need to scan for errors in fast mode
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
return sessions;
|
|
329
|
+
}
|
|
246
330
|
/**
|
|
247
331
|
* Get recent activity across all projects
|
|
248
332
|
* Returns what was asked, what was done, and when for the most recent sessions
|
|
@@ -299,72 +383,9 @@ export class ClaudeCodeHistoryService {
|
|
|
299
383
|
return undefined;
|
|
300
384
|
}
|
|
301
385
|
}
|
|
302
|
-
/**
|
|
303
|
-
* Convert ParsedEntry from fast parser to ConversationEntry
|
|
304
|
-
*/
|
|
305
|
-
convertParsedEntryToConversationEntry(entry, projectDir) {
|
|
306
|
-
try {
|
|
307
|
-
// Skip entries with empty required fields
|
|
308
|
-
if (!entry.session_id || !entry.timestamp || !entry.role) {
|
|
309
|
-
return null;
|
|
310
|
-
}
|
|
311
|
-
// Map role to type (fast parser uses 'role', we use 'type')
|
|
312
|
-
const typeMap = {
|
|
313
|
-
'user': 'user',
|
|
314
|
-
'assistant': 'assistant',
|
|
315
|
-
'system': 'system',
|
|
316
|
-
'result': 'result',
|
|
317
|
-
};
|
|
318
|
-
const role = entry.role?.toLowerCase() || '';
|
|
319
|
-
const type = typeMap[role] || 'user';
|
|
320
|
-
const projectPath = this.decodeProjectPath(projectDir);
|
|
321
|
-
const messageDate = new Date(entry.timestamp);
|
|
322
|
-
return {
|
|
323
|
-
sessionId: entry.session_id,
|
|
324
|
-
timestamp: entry.timestamp,
|
|
325
|
-
type,
|
|
326
|
-
content: entry.content || '',
|
|
327
|
-
projectPath,
|
|
328
|
-
uuid: '', // Fast parser doesn't extract UUID
|
|
329
|
-
formattedTime: messageDate.toLocaleString('en-US', {
|
|
330
|
-
timeZone: 'Asia/Tokyo',
|
|
331
|
-
year: 'numeric',
|
|
332
|
-
month: '2-digit',
|
|
333
|
-
day: '2-digit',
|
|
334
|
-
hour: '2-digit',
|
|
335
|
-
minute: '2-digit',
|
|
336
|
-
second: '2-digit',
|
|
337
|
-
hour12: false
|
|
338
|
-
}),
|
|
339
|
-
timeAgo: this.getTimeAgo(messageDate),
|
|
340
|
-
localDate: messageDate.toLocaleDateString('sv-SE', { timeZone: 'Asia/Tokyo' }),
|
|
341
|
-
metadata: {}
|
|
342
|
-
};
|
|
343
|
-
}
|
|
344
|
-
catch (error) {
|
|
345
|
-
return null;
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
/**
|
|
349
|
-
* Load history entries using the fast Rust parser
|
|
350
|
-
* Falls back to slow TypeScript parser if fast parser fails or is disabled
|
|
351
|
-
*/
|
|
352
386
|
async loadClaudeHistoryEntries(options = {}) {
|
|
353
387
|
const entries = [];
|
|
354
388
|
const { startDate, endDate } = options;
|
|
355
|
-
// Try fast parser first
|
|
356
|
-
if (USE_FAST_PARSER) {
|
|
357
|
-
try {
|
|
358
|
-
const fastEntries = await this.loadClaudeHistoryEntriesFast(options);
|
|
359
|
-
if (fastEntries.length > 0) {
|
|
360
|
-
return fastEntries;
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
catch (error) {
|
|
364
|
-
console.warn('Fast parser failed, falling back to slow parser:', error);
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
// Fallback to slow TypeScript parser
|
|
368
389
|
try {
|
|
369
390
|
const projectsDir = path.join(this.claudeDir, 'projects');
|
|
370
391
|
const projectDirs = await fs.readdir(projectsDir);
|
|
@@ -392,37 +413,6 @@ export class ClaudeCodeHistoryService {
|
|
|
392
413
|
}
|
|
393
414
|
return entries;
|
|
394
415
|
}
|
|
395
|
-
/**
|
|
396
|
-
* Fast path: Load history entries using the Rust parser
|
|
397
|
-
* ~10-50x faster than TypeScript implementation
|
|
398
|
-
*/
|
|
399
|
-
async loadClaudeHistoryEntriesFast(options = {}) {
|
|
400
|
-
const entries = [];
|
|
401
|
-
const { startDate, endDate } = options;
|
|
402
|
-
const projectsDir = path.join(this.claudeDir, 'projects');
|
|
403
|
-
// Get all project directories
|
|
404
|
-
const projectDirs = await fs.readdir(projectsDir);
|
|
405
|
-
for (const projectDir of projectDirs) {
|
|
406
|
-
const projectPath = path.join(projectsDir, projectDir);
|
|
407
|
-
const stats = await fs.stat(projectPath);
|
|
408
|
-
if (!stats.isDirectory())
|
|
409
|
-
continue;
|
|
410
|
-
// Use fast parser on the project directory
|
|
411
|
-
const parsedEntries = parseDirFast(projectPath);
|
|
412
|
-
for (const entry of parsedEntries) {
|
|
413
|
-
// Apply date filtering
|
|
414
|
-
if (startDate && entry.timestamp < startDate)
|
|
415
|
-
continue;
|
|
416
|
-
if (endDate && entry.timestamp > endDate)
|
|
417
|
-
continue;
|
|
418
|
-
const conversationEntry = this.convertParsedEntryToConversationEntry(entry, projectDir);
|
|
419
|
-
if (conversationEntry) {
|
|
420
|
-
entries.push(conversationEntry);
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
return entries;
|
|
425
|
-
}
|
|
426
416
|
async parseJsonlFile(filePath, projectDir, startDate, endDate) {
|
|
427
417
|
const entries = [];
|
|
428
418
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-service.js","sourceRoot":"","sources":["../src/history-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"history-service.js","sourceRoot":"","sources":["../src/history-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ebowwa/claudecodehistory",
|
|
3
|
-
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "TypeScript library for accessing and analyzing Claude Code conversation history",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
},
|
|
14
14
|
"files": [
|
|
15
15
|
"dist/",
|
|
16
|
-
"example/",
|
|
17
16
|
"README",
|
|
18
17
|
"README.md",
|
|
19
18
|
"LICENSE"
|
|
@@ -21,8 +20,6 @@
|
|
|
21
20
|
"scripts": {
|
|
22
21
|
"build": "tsc",
|
|
23
22
|
"typecheck": "tsc --noEmit",
|
|
24
|
-
"test": "bun test tests/",
|
|
25
|
-
"benchmark": "bun run benchmark-full.ts",
|
|
26
23
|
"prepublishOnly": "npm run build"
|
|
27
24
|
},
|
|
28
25
|
"keywords": [
|
|
@@ -50,17 +47,10 @@
|
|
|
50
47
|
"node": ">=18.0.0"
|
|
51
48
|
},
|
|
52
49
|
"dependencies": {
|
|
53
|
-
"@ebowwa/jsonl-hft": "^0.1.
|
|
50
|
+
"@ebowwa/jsonl-hft": "^0.1.2"
|
|
54
51
|
},
|
|
55
52
|
"devDependencies": {
|
|
56
53
|
"@types/node": "^24.0.4",
|
|
57
54
|
"typescript": "^5.8.3"
|
|
58
|
-
},
|
|
59
|
-
"ownership": {
|
|
60
|
-
"domain": "ai",
|
|
61
|
-
"responsibilities": [
|
|
62
|
-
"claude-history",
|
|
63
|
-
"conversation-tracking"
|
|
64
|
-
]
|
|
65
55
|
}
|
|
66
56
|
}
|
package/example/README.md
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
# Claude Code History MCP Server - Example
|
|
2
|
-
|
|
3
|
-
This is an example MCP server that demonstrates how to use the `@ebowwa/claudecodehistory` library to create an MCP server for Claude Code conversation history.
|
|
4
|
-
|
|
5
|
-
## About This Example
|
|
6
|
-
|
|
7
|
-
This example shows how to:
|
|
8
|
-
- Use the `ClaudeCodeHistoryService` class from the library
|
|
9
|
-
- Wrap it in an MCP server using the Model Context Protocol SDK
|
|
10
|
-
- Expose the service's functionality as MCP tools
|
|
11
|
-
|
|
12
|
-
## Features
|
|
13
|
-
|
|
14
|
-
This MCP server provides **4 powerful tools** for exploring your Claude Code conversation history:
|
|
15
|
-
|
|
16
|
-
### 1. `list_projects`
|
|
17
|
-
Discover all projects with Claude Code conversation history.
|
|
18
|
-
|
|
19
|
-
### 2. `list_sessions`
|
|
20
|
-
List conversation sessions for exploration and filtering.
|
|
21
|
-
|
|
22
|
-
### 3. `get_conversation_history`
|
|
23
|
-
Retrieve paginated conversation history with smart filtering.
|
|
24
|
-
|
|
25
|
-
### 4. `search_conversations`
|
|
26
|
-
Search across all conversation content by keywords.
|
|
27
|
-
|
|
28
|
-
## Quick Start
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
# From the example directory
|
|
32
|
-
cd example
|
|
33
|
-
|
|
34
|
-
# Install dependencies (uses bun)
|
|
35
|
-
bun install
|
|
36
|
-
|
|
37
|
-
# Run directly
|
|
38
|
-
bun src/index.ts
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Usage with MCP Clients
|
|
42
|
-
|
|
43
|
-
Add the following configuration to your MCP client (e.g., Claude Desktop):
|
|
44
|
-
|
|
45
|
-
```json
|
|
46
|
-
{
|
|
47
|
-
"mcpServers": {
|
|
48
|
-
"claude-code-history": {
|
|
49
|
-
"command": "bun",
|
|
50
|
-
"args": ["/path/to/claude-code-history-mcp/example/src/index.ts"]
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## Development
|
|
57
|
-
|
|
58
|
-
- **Runtime:** `bun` (no build step required)
|
|
59
|
-
- **TypeScript:** Executed directly via bun
|
|
60
|
-
- **Hot reload:** `bun --hot src/index.ts`
|
|
61
|
-
|
|
62
|
-
## Library Dependency
|
|
63
|
-
|
|
64
|
-
This example imports from `@ebowwa/claudecodehistory` (the parent package):
|
|
65
|
-
|
|
66
|
-
```typescript
|
|
67
|
-
import { ClaudeCodeHistoryService } from '@ebowwa/claudecodehistory';
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
The service provides all the core functionality for accessing Claude Code history:
|
|
71
|
-
|
|
72
|
-
- `getConversationHistory()` - Get paginated conversation history
|
|
73
|
-
- `searchConversations()` - Search by content
|
|
74
|
-
- `listProjects()` - List all projects
|
|
75
|
-
- `listSessions()` - List sessions with filters
|
|
76
|
-
|
|
77
|
-
## License
|
|
78
|
-
|
|
79
|
-
MIT
|
package/example/package.json
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@ebowwa/claude-code-history-example",
|
|
3
|
-
"version": "1.0.0",
|
|
4
|
-
"private": true,
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "src/index.ts",
|
|
7
|
-
"bin": {
|
|
8
|
-
"claude-code-history-mcp": "src/index.ts"
|
|
9
|
-
},
|
|
10
|
-
"scripts": {
|
|
11
|
-
"dev": "bun --hot src/index.ts",
|
|
12
|
-
"start": "bun src/index.ts",
|
|
13
|
-
"typecheck": "tsc --noEmit"
|
|
14
|
-
},
|
|
15
|
-
"dependencies": {
|
|
16
|
-
"@ebowwa/claudecodehistory": "file:..",
|
|
17
|
-
"@modelcontextprotocol/sdk": "^1.0.0"
|
|
18
|
-
},
|
|
19
|
-
"devDependencies": {
|
|
20
|
-
"@types/node": "^24.0.4",
|
|
21
|
-
"typescript": "^5.8.3"
|
|
22
|
-
},
|
|
23
|
-
"keywords": [
|
|
24
|
-
"claude-code",
|
|
25
|
-
"mcp",
|
|
26
|
-
"history",
|
|
27
|
-
"conversation",
|
|
28
|
-
"example",
|
|
29
|
-
"typescript",
|
|
30
|
-
"bun"
|
|
31
|
-
],
|
|
32
|
-
"author": "ebowwa",
|
|
33
|
-
"license": "MIT",
|
|
34
|
-
"engines": {
|
|
35
|
-
"node": ">=18.0.0"
|
|
36
|
-
}
|
|
37
|
-
}
|
package/example/src/index.js
DELETED
|
@@ -1,275 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
"use strict";
|
|
3
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
-
});
|
|
11
|
-
};
|
|
12
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
13
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
14
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
15
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
16
|
-
function step(op) {
|
|
17
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
18
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
19
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
20
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
21
|
-
switch (op[0]) {
|
|
22
|
-
case 0: case 1: t = op; break;
|
|
23
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
24
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
25
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
26
|
-
default:
|
|
27
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
28
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
29
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
30
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
31
|
-
if (t[2]) _.ops.pop();
|
|
32
|
-
_.trys.pop(); continue;
|
|
33
|
-
}
|
|
34
|
-
op = body.call(thisArg, _);
|
|
35
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
36
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
var index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
41
|
-
var stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
42
|
-
var types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
43
|
-
var claudecodehistory_1 = require("@ebowwa/claudecodehistory");
|
|
44
|
-
var server = new index_js_1.Server({
|
|
45
|
-
name: 'claude-code-history-mcp',
|
|
46
|
-
version: '1.1.0',
|
|
47
|
-
}, {
|
|
48
|
-
capabilities: {
|
|
49
|
-
tools: {},
|
|
50
|
-
},
|
|
51
|
-
});
|
|
52
|
-
var historyService = new claudecodehistory_1.ClaudeCodeHistoryService();
|
|
53
|
-
// Helper function to create response
|
|
54
|
-
var createResponse = function (data) { return ({
|
|
55
|
-
content: [{
|
|
56
|
-
type: 'text',
|
|
57
|
-
text: JSON.stringify(data),
|
|
58
|
-
}],
|
|
59
|
-
}); };
|
|
60
|
-
// Define available tools (ordered by recommended workflow)
|
|
61
|
-
var tools = [
|
|
62
|
-
{
|
|
63
|
-
name: 'list_projects',
|
|
64
|
-
description: 'List all projects with Claude Code conversation history (start here to explore available data)',
|
|
65
|
-
inputSchema: {
|
|
66
|
-
type: 'object',
|
|
67
|
-
properties: {},
|
|
68
|
-
},
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
name: 'list_sessions',
|
|
72
|
-
description: 'List conversation sessions for a project or date range (use after list_projects to find specific sessions)',
|
|
73
|
-
inputSchema: {
|
|
74
|
-
type: 'object',
|
|
75
|
-
properties: {
|
|
76
|
-
projectPath: {
|
|
77
|
-
type: 'string',
|
|
78
|
-
description: 'Filter by specific project path (optional)',
|
|
79
|
-
},
|
|
80
|
-
startDate: {
|
|
81
|
-
type: 'string',
|
|
82
|
-
description: 'Start date in ISO format (optional)',
|
|
83
|
-
},
|
|
84
|
-
endDate: {
|
|
85
|
-
type: 'string',
|
|
86
|
-
description: 'End date in ISO format (optional)',
|
|
87
|
-
},
|
|
88
|
-
timezone: {
|
|
89
|
-
type: 'string',
|
|
90
|
-
description: 'Timezone for date filtering (e.g., "Asia/Tokyo", "UTC"). Defaults to system timezone.',
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
name: 'get_conversation_history',
|
|
97
|
-
description: 'Get paginated conversation history (use after exploring with list_projects/list_sessions for targeted data)',
|
|
98
|
-
inputSchema: {
|
|
99
|
-
type: 'object',
|
|
100
|
-
properties: {
|
|
101
|
-
sessionId: {
|
|
102
|
-
type: 'string',
|
|
103
|
-
description: 'Specific session ID to get history for (optional)',
|
|
104
|
-
},
|
|
105
|
-
startDate: {
|
|
106
|
-
type: 'string',
|
|
107
|
-
description: 'Start date in ISO format (optional)',
|
|
108
|
-
},
|
|
109
|
-
endDate: {
|
|
110
|
-
type: 'string',
|
|
111
|
-
description: 'End date in ISO format (optional)',
|
|
112
|
-
},
|
|
113
|
-
limit: {
|
|
114
|
-
type: 'number',
|
|
115
|
-
description: 'Maximum number of conversations to return (default: 20)',
|
|
116
|
-
default: 20,
|
|
117
|
-
},
|
|
118
|
-
offset: {
|
|
119
|
-
type: 'number',
|
|
120
|
-
description: 'Number of conversations to skip for pagination (default: 0)',
|
|
121
|
-
default: 0,
|
|
122
|
-
},
|
|
123
|
-
messageTypes: {
|
|
124
|
-
type: 'array',
|
|
125
|
-
items: {
|
|
126
|
-
type: 'string',
|
|
127
|
-
enum: ['user', 'assistant', 'system', 'result']
|
|
128
|
-
},
|
|
129
|
-
description: 'Filter by specific message types. Defaults to ["user"] to reduce data volume. Use ["user", "assistant"] to include Claude responses.',
|
|
130
|
-
default: ['user']
|
|
131
|
-
},
|
|
132
|
-
timezone: {
|
|
133
|
-
type: 'string',
|
|
134
|
-
description: 'Timezone for date filtering (e.g., "Asia/Tokyo", "UTC"). Defaults to system timezone.',
|
|
135
|
-
},
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
name: 'search_conversations',
|
|
141
|
-
description: 'Search through conversation history by content (useful for finding specific topics across all conversations)',
|
|
142
|
-
inputSchema: {
|
|
143
|
-
type: 'object',
|
|
144
|
-
properties: {
|
|
145
|
-
query: {
|
|
146
|
-
type: 'string',
|
|
147
|
-
description: 'Search query to find in conversation content',
|
|
148
|
-
},
|
|
149
|
-
limit: {
|
|
150
|
-
type: 'number',
|
|
151
|
-
description: 'Maximum number of results to return (default: 30)',
|
|
152
|
-
default: 30,
|
|
153
|
-
},
|
|
154
|
-
projectPath: {
|
|
155
|
-
type: 'string',
|
|
156
|
-
description: 'Filter by specific project path (optional)',
|
|
157
|
-
},
|
|
158
|
-
startDate: {
|
|
159
|
-
type: 'string',
|
|
160
|
-
description: 'Start date in ISO format (optional)',
|
|
161
|
-
},
|
|
162
|
-
endDate: {
|
|
163
|
-
type: 'string',
|
|
164
|
-
description: 'End date in ISO format (optional)',
|
|
165
|
-
},
|
|
166
|
-
timezone: {
|
|
167
|
-
type: 'string',
|
|
168
|
-
description: 'Timezone for date filtering (e.g., "Asia/Tokyo", "UTC"). Defaults to system timezone.',
|
|
169
|
-
},
|
|
170
|
-
},
|
|
171
|
-
required: ['query'],
|
|
172
|
-
},
|
|
173
|
-
},
|
|
174
|
-
];
|
|
175
|
-
// Handle list tools request
|
|
176
|
-
server.setRequestHandler(types_js_1.ListToolsRequestSchema, function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
177
|
-
return __generator(this, function (_a) {
|
|
178
|
-
return [2 /*return*/, { tools: tools }];
|
|
179
|
-
});
|
|
180
|
-
}); });
|
|
181
|
-
// Handle tool calls
|
|
182
|
-
server.setRequestHandler(types_js_1.CallToolRequestSchema, function (request) { return __awaiter(void 0, void 0, void 0, function () {
|
|
183
|
-
var _a, name, args, _b, history_1, query, results, projects, sessions, error_1, errorMessage;
|
|
184
|
-
return __generator(this, function (_c) {
|
|
185
|
-
switch (_c.label) {
|
|
186
|
-
case 0:
|
|
187
|
-
_a = request.params, name = _a.name, args = _a.arguments;
|
|
188
|
-
_c.label = 1;
|
|
189
|
-
case 1:
|
|
190
|
-
_c.trys.push([1, 12, , 13]);
|
|
191
|
-
_b = name;
|
|
192
|
-
switch (_b) {
|
|
193
|
-
case 'get_conversation_history': return [3 /*break*/, 2];
|
|
194
|
-
case 'search_conversations': return [3 /*break*/, 4];
|
|
195
|
-
case 'list_projects': return [3 /*break*/, 6];
|
|
196
|
-
case 'list_sessions': return [3 /*break*/, 8];
|
|
197
|
-
}
|
|
198
|
-
return [3 /*break*/, 10];
|
|
199
|
-
case 2: return [4 /*yield*/, historyService.getConversationHistory({
|
|
200
|
-
sessionId: args === null || args === void 0 ? void 0 : args.sessionId,
|
|
201
|
-
startDate: args === null || args === void 0 ? void 0 : args.startDate,
|
|
202
|
-
endDate: args === null || args === void 0 ? void 0 : args.endDate,
|
|
203
|
-
limit: (args === null || args === void 0 ? void 0 : args.limit) || 20,
|
|
204
|
-
offset: (args === null || args === void 0 ? void 0 : args.offset) || 0,
|
|
205
|
-
messageTypes: args === null || args === void 0 ? void 0 : args.messageTypes,
|
|
206
|
-
timezone: args === null || args === void 0 ? void 0 : args.timezone,
|
|
207
|
-
})];
|
|
208
|
-
case 3:
|
|
209
|
-
history_1 = _c.sent();
|
|
210
|
-
return [2 /*return*/, createResponse(history_1)];
|
|
211
|
-
case 4:
|
|
212
|
-
query = args === null || args === void 0 ? void 0 : args.query;
|
|
213
|
-
if (!query) {
|
|
214
|
-
throw new Error('Search query is required');
|
|
215
|
-
}
|
|
216
|
-
return [4 /*yield*/, historyService.searchConversations(query, {
|
|
217
|
-
limit: (args === null || args === void 0 ? void 0 : args.limit) || 30,
|
|
218
|
-
projectPath: args === null || args === void 0 ? void 0 : args.projectPath,
|
|
219
|
-
startDate: args === null || args === void 0 ? void 0 : args.startDate,
|
|
220
|
-
endDate: args === null || args === void 0 ? void 0 : args.endDate,
|
|
221
|
-
timezone: args === null || args === void 0 ? void 0 : args.timezone,
|
|
222
|
-
})];
|
|
223
|
-
case 5:
|
|
224
|
-
results = _c.sent();
|
|
225
|
-
return [2 /*return*/, createResponse(results)];
|
|
226
|
-
case 6: return [4 /*yield*/, historyService.listProjects()];
|
|
227
|
-
case 7:
|
|
228
|
-
projects = _c.sent();
|
|
229
|
-
return [2 /*return*/, createResponse(projects)];
|
|
230
|
-
case 8: return [4 /*yield*/, historyService.listSessions({
|
|
231
|
-
projectPath: args === null || args === void 0 ? void 0 : args.projectPath,
|
|
232
|
-
startDate: args === null || args === void 0 ? void 0 : args.startDate,
|
|
233
|
-
endDate: args === null || args === void 0 ? void 0 : args.endDate,
|
|
234
|
-
timezone: args === null || args === void 0 ? void 0 : args.timezone,
|
|
235
|
-
})];
|
|
236
|
-
case 9:
|
|
237
|
-
sessions = _c.sent();
|
|
238
|
-
return [2 /*return*/, createResponse(sessions)];
|
|
239
|
-
case 10: throw new Error("Unknown tool: ".concat(name));
|
|
240
|
-
case 11: return [3 /*break*/, 13];
|
|
241
|
-
case 12:
|
|
242
|
-
error_1 = _c.sent();
|
|
243
|
-
errorMessage = error_1 instanceof Error ? error_1.message : 'Unknown error';
|
|
244
|
-
return [2 /*return*/, {
|
|
245
|
-
content: [{
|
|
246
|
-
type: 'text',
|
|
247
|
-
text: "Error: ".concat(errorMessage),
|
|
248
|
-
}],
|
|
249
|
-
isError: true,
|
|
250
|
-
}];
|
|
251
|
-
case 13: return [2 /*return*/];
|
|
252
|
-
}
|
|
253
|
-
});
|
|
254
|
-
}); });
|
|
255
|
-
// Start the server
|
|
256
|
-
function main() {
|
|
257
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
258
|
-
var transport;
|
|
259
|
-
return __generator(this, function (_a) {
|
|
260
|
-
switch (_a.label) {
|
|
261
|
-
case 0:
|
|
262
|
-
transport = new stdio_js_1.StdioServerTransport();
|
|
263
|
-
return [4 /*yield*/, server.connect(transport)];
|
|
264
|
-
case 1:
|
|
265
|
-
_a.sent();
|
|
266
|
-
console.error('Claude Code History MCP Server started');
|
|
267
|
-
return [2 /*return*/];
|
|
268
|
-
}
|
|
269
|
-
});
|
|
270
|
-
});
|
|
271
|
-
}
|
|
272
|
-
main().catch(function (error) {
|
|
273
|
-
console.error('Failed to start server:', error);
|
|
274
|
-
process.exit(1);
|
|
275
|
-
});
|
package/example/src/index.ts
DELETED
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
|
|
3
|
-
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
4
|
-
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
5
|
-
import {
|
|
6
|
-
CallToolRequestSchema,
|
|
7
|
-
ListToolsRequestSchema,
|
|
8
|
-
Tool
|
|
9
|
-
} from '@modelcontextprotocol/sdk/types.js';
|
|
10
|
-
import { ClaudeCodeHistoryService } from '@ebowwa/claudecodehistory';
|
|
11
|
-
|
|
12
|
-
const server = new Server(
|
|
13
|
-
{
|
|
14
|
-
name: 'claude-code-history-mcp',
|
|
15
|
-
version: '1.1.0',
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
capabilities: {
|
|
19
|
-
tools: {},
|
|
20
|
-
},
|
|
21
|
-
}
|
|
22
|
-
);
|
|
23
|
-
|
|
24
|
-
const historyService = new ClaudeCodeHistoryService();
|
|
25
|
-
|
|
26
|
-
// Helper function to create response
|
|
27
|
-
const createResponse = (data: any) => ({ // eslint-disable-line @typescript-eslint/no-explicit-any
|
|
28
|
-
content: [{
|
|
29
|
-
type: 'text',
|
|
30
|
-
text: JSON.stringify(data),
|
|
31
|
-
}],
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
// Define available tools (ordered by recommended workflow)
|
|
35
|
-
const tools: Tool[] = [
|
|
36
|
-
{
|
|
37
|
-
name: 'list_projects',
|
|
38
|
-
description: 'List all projects with Claude Code conversation history (start here to explore available data)',
|
|
39
|
-
inputSchema: {
|
|
40
|
-
type: 'object',
|
|
41
|
-
properties: {},
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
name: 'list_sessions',
|
|
46
|
-
description: 'List conversation sessions for a project or date range (use after list_projects to find specific sessions)',
|
|
47
|
-
inputSchema: {
|
|
48
|
-
type: 'object',
|
|
49
|
-
properties: {
|
|
50
|
-
projectPath: {
|
|
51
|
-
type: 'string',
|
|
52
|
-
description: 'Filter by specific project path (optional)',
|
|
53
|
-
},
|
|
54
|
-
startDate: {
|
|
55
|
-
type: 'string',
|
|
56
|
-
description: 'Start date in ISO format (optional)',
|
|
57
|
-
},
|
|
58
|
-
endDate: {
|
|
59
|
-
type: 'string',
|
|
60
|
-
description: 'End date in ISO format (optional)',
|
|
61
|
-
},
|
|
62
|
-
timezone: {
|
|
63
|
-
type: 'string',
|
|
64
|
-
description: 'Timezone for date filtering (e.g., "Asia/Tokyo", "UTC"). Defaults to system timezone.',
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
name: 'get_conversation_history',
|
|
71
|
-
description: 'Get paginated conversation history (use after exploring with list_projects/list_sessions for targeted data)',
|
|
72
|
-
inputSchema: {
|
|
73
|
-
type: 'object',
|
|
74
|
-
properties: {
|
|
75
|
-
sessionId: {
|
|
76
|
-
type: 'string',
|
|
77
|
-
description: 'Specific session ID to get history for (optional)',
|
|
78
|
-
},
|
|
79
|
-
startDate: {
|
|
80
|
-
type: 'string',
|
|
81
|
-
description: 'Start date in ISO format (optional)',
|
|
82
|
-
},
|
|
83
|
-
endDate: {
|
|
84
|
-
type: 'string',
|
|
85
|
-
description: 'End date in ISO format (optional)',
|
|
86
|
-
},
|
|
87
|
-
limit: {
|
|
88
|
-
type: 'number',
|
|
89
|
-
description: 'Maximum number of conversations to return (default: 20)',
|
|
90
|
-
default: 20,
|
|
91
|
-
},
|
|
92
|
-
offset: {
|
|
93
|
-
type: 'number',
|
|
94
|
-
description: 'Number of conversations to skip for pagination (default: 0)',
|
|
95
|
-
default: 0,
|
|
96
|
-
},
|
|
97
|
-
messageTypes: {
|
|
98
|
-
type: 'array',
|
|
99
|
-
items: {
|
|
100
|
-
type: 'string',
|
|
101
|
-
enum: ['user', 'assistant', 'system', 'result']
|
|
102
|
-
},
|
|
103
|
-
description: 'Filter by specific message types. Defaults to ["user"] to reduce data volume. Use ["user", "assistant"] to include Claude responses.',
|
|
104
|
-
default: ['user']
|
|
105
|
-
},
|
|
106
|
-
timezone: {
|
|
107
|
-
type: 'string',
|
|
108
|
-
description: 'Timezone for date filtering (e.g., "Asia/Tokyo", "UTC"). Defaults to system timezone.',
|
|
109
|
-
},
|
|
110
|
-
},
|
|
111
|
-
},
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
name: 'search_conversations',
|
|
115
|
-
description: 'Search through conversation history by content (useful for finding specific topics across all conversations)',
|
|
116
|
-
inputSchema: {
|
|
117
|
-
type: 'object',
|
|
118
|
-
properties: {
|
|
119
|
-
query: {
|
|
120
|
-
type: 'string',
|
|
121
|
-
description: 'Search query to find in conversation content',
|
|
122
|
-
},
|
|
123
|
-
limit: {
|
|
124
|
-
type: 'number',
|
|
125
|
-
description: 'Maximum number of results to return (default: 30)',
|
|
126
|
-
default: 30,
|
|
127
|
-
},
|
|
128
|
-
projectPath: {
|
|
129
|
-
type: 'string',
|
|
130
|
-
description: 'Filter by specific project path (optional)',
|
|
131
|
-
},
|
|
132
|
-
startDate: {
|
|
133
|
-
type: 'string',
|
|
134
|
-
description: 'Start date in ISO format (optional)',
|
|
135
|
-
},
|
|
136
|
-
endDate: {
|
|
137
|
-
type: 'string',
|
|
138
|
-
description: 'End date in ISO format (optional)',
|
|
139
|
-
},
|
|
140
|
-
timezone: {
|
|
141
|
-
type: 'string',
|
|
142
|
-
description: 'Timezone for date filtering (e.g., "Asia/Tokyo", "UTC"). Defaults to system timezone.',
|
|
143
|
-
},
|
|
144
|
-
},
|
|
145
|
-
required: ['query'],
|
|
146
|
-
},
|
|
147
|
-
},
|
|
148
|
-
];
|
|
149
|
-
|
|
150
|
-
// Handle list tools request
|
|
151
|
-
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
152
|
-
return { tools };
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
// Handle tool calls
|
|
156
|
-
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
157
|
-
const { name, arguments: args } = request.params;
|
|
158
|
-
|
|
159
|
-
try {
|
|
160
|
-
switch (name) {
|
|
161
|
-
case 'get_conversation_history': {
|
|
162
|
-
const history = await historyService.getConversationHistory({
|
|
163
|
-
sessionId: args?.sessionId as string,
|
|
164
|
-
startDate: args?.startDate as string,
|
|
165
|
-
endDate: args?.endDate as string,
|
|
166
|
-
limit: (args?.limit as number) || 20,
|
|
167
|
-
offset: (args?.offset as number) || 0,
|
|
168
|
-
messageTypes: args?.messageTypes as ('user' | 'assistant' | 'system' | 'result')[],
|
|
169
|
-
timezone: args?.timezone as string,
|
|
170
|
-
});
|
|
171
|
-
return createResponse(history);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
case 'search_conversations': {
|
|
175
|
-
const query = args?.query as string;
|
|
176
|
-
if (!query) {
|
|
177
|
-
throw new Error('Search query is required');
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
const results = await historyService.searchConversations(
|
|
181
|
-
query,
|
|
182
|
-
{
|
|
183
|
-
limit: (args?.limit as number) || 30,
|
|
184
|
-
projectPath: args?.projectPath as string,
|
|
185
|
-
startDate: args?.startDate as string,
|
|
186
|
-
endDate: args?.endDate as string,
|
|
187
|
-
timezone: args?.timezone as string,
|
|
188
|
-
}
|
|
189
|
-
);
|
|
190
|
-
return createResponse(results);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
case 'list_projects': {
|
|
194
|
-
const projects = await historyService.listProjects();
|
|
195
|
-
return createResponse(projects);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
case 'list_sessions': {
|
|
199
|
-
const sessions = await historyService.listSessions({
|
|
200
|
-
projectPath: args?.projectPath as string,
|
|
201
|
-
startDate: args?.startDate as string,
|
|
202
|
-
endDate: args?.endDate as string,
|
|
203
|
-
timezone: args?.timezone as string,
|
|
204
|
-
});
|
|
205
|
-
return createResponse(sessions);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
default:
|
|
209
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
210
|
-
}
|
|
211
|
-
} catch (error) {
|
|
212
|
-
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
213
|
-
return {
|
|
214
|
-
content: [{
|
|
215
|
-
type: 'text',
|
|
216
|
-
text: `Error: ${errorMessage}`,
|
|
217
|
-
}],
|
|
218
|
-
isError: true,
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
// Start the server
|
|
224
|
-
async function main() {
|
|
225
|
-
const transport = new StdioServerTransport();
|
|
226
|
-
await server.connect(transport);
|
|
227
|
-
console.error('Claude Code History MCP Server started');
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
main().catch((error) => {
|
|
231
|
-
console.error('Failed to start server:', error);
|
|
232
|
-
process.exit(1);
|
|
233
|
-
});
|
package/example/tsconfig.json
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2022",
|
|
4
|
-
"module": "ESNext",
|
|
5
|
-
"moduleResolution": "bundler",
|
|
6
|
-
"lib": ["ES2022"],
|
|
7
|
-
"strict": true,
|
|
8
|
-
"esModuleInterop": true,
|
|
9
|
-
"skipLibCheck": true,
|
|
10
|
-
"forceConsistentCasingInFileNames": true,
|
|
11
|
-
"resolveJsonModule": true,
|
|
12
|
-
"noEmit": true
|
|
13
|
-
},
|
|
14
|
-
"include": ["src/**/*"],
|
|
15
|
-
"exclude": ["node_modules", "dist"]
|
|
16
|
-
}
|