@pcircle/evidencemcp-server 0.1.0 → 0.1.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/README.md CHANGED
@@ -2,62 +2,31 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@pcircle/evidencemcp-server)](https://www.npmjs.com/package/@pcircle/evidencemcp-server)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
5
- [![Tests](https://img.shields.io/badge/tests-19%20passing-brightgreen)](tests/)
6
- [![Node.js](https://img.shields.io/badge/node-%3E%3D22.0.0-brightgreen)](package.json)
7
5
 
8
- Model Context Protocol (MCP) server for EvidenceMCP - automatically captures and encrypts LLM conversations as legal evidence.
6
+ Model Context Protocol (MCP) server that automatically captures and encrypts LLM conversations as legal evidence.
9
7
 
10
8
  ## Why EvidenceMCP?
11
9
 
12
- ### For Developers & Content Creators
13
- - **Prove IP Ownership** - Timestamped evidence of LLM-assisted work for copyright protection
14
- - **Zero Effort** - Automatic capture via MCP protocol, no manual logging required
15
- - **Legally Valid** - Git timestamps + encryption provide tamper-proof evidence
16
- - **Privacy First** - All data encrypted locally, never leaves your machine
17
-
18
- ### For Researchers & Academics
19
- - **Research Integrity** - Document AI-assisted research with provable timestamps
20
- - **Audit Trail** - Complete conversation history for methodology transparency
21
- - **Compliance Ready** - Meet institutional requirements for AI usage disclosure
22
-
23
- ### For Teams & Organizations
24
- - **Risk Mitigation** - Legal protection against IP disputes over AI-generated content
25
- - **Quality Assurance** - Review and audit LLM interactions for compliance
26
- - **Knowledge Management** - Searchable archive of all LLM conversations
27
-
28
- ## Features
29
-
30
- - 🔐 **End-to-End Encryption** - XChaCha20-Poly1305 authenticated encryption
31
- - 📝 **Automatic Capture** - Intercepts LLM conversations via MCP protocol
32
- - 🕒 **Git Timestamps** - Provable timestamps from Git commits
33
- - 📦 **Evidence Export** - ZIP archives with SHA-256 checksums
34
- - 🔍 **Evidence Management** - List, retrieve, and decrypt stored evidence
10
+ - **Prove IP Ownership** - Timestamped evidence of LLM-assisted work
11
+ - **Zero Effort** - Automatic capture via MCP protocol
12
+ - **Privacy First** - End-to-end encrypted, locally stored
13
+ - **Legally Valid** - Git timestamps + SHA-256 checksums
35
14
 
36
15
  ## Installation
37
16
 
38
17
  ```bash
39
- pnpm add @pcircle/evidencemcp-server
18
+ npm install -g @pcircle/evidencemcp-server
40
19
  ```
41
20
 
42
21
  ## Quick Start
43
22
 
44
- ### 1. Set Environment Variables
45
-
23
+ 1. **Set environment variables:**
46
24
  ```bash
47
25
  export EVIDENCEMCP_DB_PATH="./evidence.db"
48
26
  export EVIDENCEMCP_PASSWORD="your-secure-password"
49
27
  ```
50
28
 
51
- ### 2. Run MCP Server
52
-
53
- ```bash
54
- npx evidencemcp-mcp
55
- ```
56
-
57
- ### 3. Configure Claude Desktop
58
-
59
- Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
60
-
29
+ 2. **Configure Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
61
30
  ```json
62
31
  {
63
32
  "mcpServers": {
@@ -73,278 +42,39 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
73
42
  }
74
43
  ```
75
44
 
76
- ## MCP Tools
45
+ 3. **Restart Claude Desktop** - Evidence collection starts automatically
77
46
 
78
- ### capture-evidence
47
+ ## Features
79
48
 
80
- Capture and encrypt an LLM conversation.
49
+ - 🔐 XChaCha20-Poly1305 encryption
50
+ - 🕒 Git commit timestamps
51
+ - 📦 Tamper-proof ZIP exports
52
+ - 🔍 Search and retrieve evidence
81
53
 
82
- **Input:**
83
- - `conversationId` (string) - Unique conversation identifier
84
- - `llmProvider` (string) - LLM provider name (e.g., "Claude Sonnet 4.5")
85
- - `content` (string) - Conversation content
86
- - `messageCount` (number) - Number of messages
87
- - `tags` (string, optional) - Comma-separated tags
54
+ ## MCP Tools
88
55
 
89
- **Output:**
90
- ```json
91
- {
92
- "id": "uuid-v4",
93
- "timestamp": "2024-01-24T00:00:00Z",
94
- "gitCommitHash": "abc123...",
95
- "success": true
96
- }
97
- ```
56
+ ### capture-evidence
57
+ Captures and encrypts an LLM conversation.
98
58
 
99
59
  ### list-evidences
100
-
101
- List all captured evidence with pagination.
102
-
103
- **Input:**
104
- - `limit` (number, optional) - Maximum results
105
- - `offset` (number, optional) - Pagination offset
106
-
107
- **Output:**
108
- ```json
109
- {
110
- "evidences": [
111
- {
112
- "id": "uuid",
113
- "timestamp": "2024-01-24T00:00:00Z",
114
- "conversationId": "conv-001",
115
- "llmProvider": "Claude Sonnet 4.5",
116
- "messageCount": 10,
117
- "tags": "legal,contract"
118
- }
119
- ],
120
- "total": 1
121
- }
122
- ```
60
+ Lists all captured evidence with pagination.
123
61
 
124
62
  ### get-evidence
125
-
126
- Retrieve and decrypt specific evidence.
127
-
128
- **Input:**
129
- - `id` (string) - Evidence ID
130
-
131
- **Output:**
132
- ```json
133
- {
134
- "id": "uuid",
135
- "timestamp": "2024-01-24T00:00:00Z",
136
- "conversationId": "conv-001",
137
- "llmProvider": "Claude Sonnet 4.5",
138
- "content": "User: ...\nAssistant: ...",
139
- "messageCount": 10,
140
- "gitInfo": {
141
- "commitHash": "abc123",
142
- "timestamp": "2024-01-24T00:00:00Z"
143
- },
144
- "tags": "legal"
145
- }
146
- ```
63
+ Retrieves and decrypts specific evidence by ID.
147
64
 
148
65
  ### export-evidences
149
-
150
- Export evidences to encrypted ZIP archive.
151
-
152
- **Input:**
153
- - `evidenceIds` (string[], optional) - Specific IDs (empty = all)
154
- - `includeGitInfo` (boolean, optional) - Include Git timestamps
155
-
156
- **Output:**
157
- ```json
158
- {
159
- "filename": "evidence-export-2024-01-24.zip",
160
- "checksum": "sha256-hash",
161
- "evidenceCount": 5,
162
- "success": true
163
- }
164
- ```
165
-
166
- ## MCP Resources
167
-
168
- ### evidence://{id}
169
-
170
- Access decrypted evidence content via URI.
171
-
172
- **Example:**
173
- ```
174
- evidence://550e8400-e29b-41d4-a716-446655440000
175
- ```
176
-
177
- Returns plain text content of the evidence.
178
-
179
- ## Programmatic Usage
180
-
181
- ```typescript
182
- import { EvidenceMCPServer } from '@pcircle/evidencemcp-server';
183
-
184
- const server = new EvidenceMCPServer({
185
- dbPath: './evidence.db',
186
- password: 'your-password'
187
- });
188
-
189
- await server.start();
190
- ```
66
+ Exports evidence to encrypted ZIP archive.
191
67
 
192
68
  ## Security
193
69
 
194
- - **Encryption**: XChaCha20-Poly1305 (256-bit keys)
195
- - **Key Derivation**: Argon2id (OWASP recommended params)
196
- - **Content Integrity**: SHA-256 hashing
197
- - **Local Storage**: SQLite with encrypted BLOB fields
198
-
199
- ⚠️ **Important**: Store your `EVIDENCEMCP_PASSWORD` securely (e.g., macOS Keychain). Loss of password means permanent data loss.
200
-
201
- ## Architecture
202
-
203
- ```
204
- ┌─────────────────┐
205
- │ LLM Client │ (Claude Desktop, ChatGPT, etc.)
206
- │ (MCP Client) │
207
- └────────┬────────┘
208
- │ MCP Protocol (stdio)
209
-
210
- ┌─────────────────┐
211
- │ EvidenceMCP MCP │
212
- │ Server │
213
- ├─────────────────┤
214
- │ Tools: │
215
- │ - capture │
216
- │ - list │
217
- │ - export │
218
- │ - get │
219
- ├─────────────────┤
220
- │ Resources: │
221
- │ - evidence:// │
222
- └────────┬────────┘
223
-
224
-
225
- ┌─────────────────┐ ┌──────────────┐
226
- │ @evidencemcp/ │────▶│ XChaCha20 │
227
- │ crypto │ │ -Poly1305 │
228
- └─────────────────┘ └──────────────┘
229
-
230
-
231
- ┌─────────────────┐ ┌──────────────┐
232
- │ @evidencemcp/ │────▶│ SQLite │
233
- │ storage │ │ (encrypted) │
234
- └─────────────────┘ └──────────────┘
235
- ```
236
-
237
- ## Troubleshooting
238
-
239
- ### "EVIDENCEMCP_PASSWORD environment variable required"
240
-
241
- **Problem**: Server fails to start with this error message.
242
-
243
- **Solution**:
244
- 1. Ensure `EVIDENCEMCP_PASSWORD` is set in your environment
245
- 2. For Claude Desktop, verify the `env` section in `claude_desktop_config.json`:
246
- ```json
247
- {
248
- "mcpServers": {
249
- "evidencemcp": {
250
- "env": {
251
- "EVIDENCEMCP_PASSWORD": "your-secure-password"
252
- }
253
- }
254
- }
255
- }
256
- ```
257
- 3. For command line: `export EVIDENCEMCP_PASSWORD="your-password"`
258
- 4. Never commit passwords to version control
259
-
260
- ### "Database locked" or "SQLITE_BUSY"
261
-
262
- **Problem**: Multiple processes trying to access the same database file.
263
-
264
- **Solution**:
265
- 1. Ensure only one EvidenceMCP instance is running
266
- 2. Check for orphaned processes: `ps aux | grep evidencemcp-mcp`
267
- 3. Use unique database paths for different instances:
268
- ```json
269
- {
270
- "evidencemcp-dev": {
271
- "env": {
272
- "EVIDENCEMCP_DB_PATH": "/Users/you/evidencemcp-dev.db"
273
- }
274
- },
275
- "evidencemcp-prod": {
276
- "env": {
277
- "EVIDENCEMCP_DB_PATH": "/Users/you/evidencemcp-prod.db"
278
- }
279
- }
280
- }
281
- ```
282
-
283
- ### "Git not found" or "Git command failed"
284
-
285
- **Problem**: Git timestamp capture fails.
286
-
287
- **Solution**:
288
- 1. Install Git if not present: `brew install git` (macOS) or `apt-get install git` (Linux)
289
- 2. Verify Git is in PATH: `which git`
290
- 3. Git timestamps are optional - evidence capture will succeed without them
291
- 4. Check `.git` directory exists if running in a repository
292
-
293
- ### "Permission denied" on database file
294
-
295
- **Problem**: Cannot read/write database file.
296
-
297
- **Solution**:
298
- 1. Check file permissions: `ls -l /path/to/evidence.db`
299
- 2. Ensure the directory exists and is writable
300
- 3. Verify the user running Claude Desktop has write access
301
- 4. On macOS, grant Full Disk Access if needed (System Settings → Privacy & Security)
302
-
303
- ### "Failed to decrypt evidence" or "Wrong password"
304
-
305
- **Problem**: Cannot decrypt previously stored evidence.
306
-
307
- **Solution**:
308
- 1. Verify you're using the same password that was used to encrypt
309
- 2. Passwords are case-sensitive
310
- 3. Check for trailing spaces or special characters in password
311
- 4. If password is lost, evidence cannot be recovered (by design)
312
-
313
- ### "Export failed" or "ZIP creation error"
314
-
315
- **Problem**: Evidence export fails.
316
-
317
- **Solution**:
318
- 1. Ensure sufficient disk space
319
- 2. Check write permissions in current directory
320
- 3. Verify evidence IDs exist: use `list-evidences` first
321
- 4. Try exporting single evidence item to isolate the issue
322
-
323
- ### High memory usage
324
-
325
- **Problem**: Server consuming excessive memory.
326
-
327
- **Solution**:
328
- 1. Evidence files are loaded into memory during encryption/decryption
329
- 2. For large conversations (>10MB), use pagination with `list-evidences`
330
- 3. Export in smaller batches instead of all at once
331
- 4. Restart Claude Desktop to free memory
332
-
333
- ### TypeScript errors in development
334
-
335
- **Problem**: TypeScript compilation errors.
336
-
337
- **Solution**:
338
- 1. Ensure you're using TypeScript 5.9+: `pnpm add -D typescript@^5.9.3`
339
- 2. Clean build artifacts: `pnpm clean && pnpm build`
340
- 3. Check Node.js version: `node --version` (requires 22+)
341
- 4. Verify dependencies: `pnpm install`
342
-
343
- ## License
70
+ - **Encryption**: XChaCha20-Poly1305 (256-bit)
71
+ - **Key Derivation**: Argon2id (OWASP recommended)
72
+ - **Storage**: Local SQLite with encrypted BLOBs
344
73
 
345
- MIT - See LICENSE file
74
+ ⚠️ **Store your password securely** - Loss means permanent data loss.
346
75
 
347
76
  ## Support
348
77
 
349
- - Issues: https://github.com/evidencemcp/evidencemcp/issues
350
- - Docs: https://evidencemcp.dev
78
+ - [Documentation](https://github.com/PCIRCLE-AI/evidencemcp-server#readme)
79
+ - [Issues](https://github.com/PCIRCLE-AI/evidencemcp-server/issues)
80
+ - [License](https://github.com/PCIRCLE-AI/evidencemcp-server/blob/main/LICENSE)
package/dist/index.d.ts CHANGED
@@ -1,9 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import type { ServerConfig } from './types.js';
3
3
  /**
4
- * EvidenceMCP Server
5
- *
6
- * Captures LLM conversations and stores them as encrypted evidence
4
+ * EvidenceMCP Server - Captures LLM conversations as encrypted evidence
7
5
  * with Git timestamps and export capabilities.
8
6
  */
9
7
  export declare class EvidenceMCPServer {
@@ -12,21 +10,9 @@ export declare class EvidenceMCPServer {
12
10
  private db;
13
11
  private derivedKey;
14
12
  constructor(config: ServerConfig);
15
- /**
16
- * Derive encryption key from password (lazy initialization)
17
- */
18
13
  private getDerivedKey;
19
- /**
20
- * Register MCP tools for evidence management
21
- */
22
14
  private registerTools;
23
- /**
24
- * Register MCP resources for evidence access
25
- */
26
15
  private registerResources;
27
- /**
28
- * Start the MCP server with stdio transport
29
- */
30
16
  start(): Promise<void>;
31
17
  }
32
18
  export { EvidenceMCPTestHelpers } from './test-helpers.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAOA,OAAO,KAAK,EAAE,YAAY,EAAyB,MAAM,YAAY,CAAC;AAGtE;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,UAAU,CAA2B;gBAEjC,MAAM,EAAE,YAAY;IAsBhC;;OAEG;YACW,aAAa;IAQ3B;;OAEG;IACH,OAAO,CAAC,aAAa;IA0QrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0CzB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B;AA4BD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAQA,OAAO,KAAK,EAAE,YAAY,EAAyB,MAAM,YAAY,CAAC;AAMtE;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,UAAU,CAA2B;gBAEjC,MAAM,EAAE,YAAY;YAkBlB,aAAa;IAQ3B,OAAO,CAAC,aAAa;IAmNrB,OAAO,CAAC,iBAAiB;IA6BnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B;AAwBD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -5,10 +5,11 @@ import { EvidenceDatabase, getCurrentCommit } from '@evidencemcp/storage';
5
5
  import { deriveKey, encrypt, decrypt } from '@evidencemcp/crypto';
6
6
  import * as z from 'zod';
7
7
  import * as crypto from 'crypto';
8
+ function getErrorMessage(error) {
9
+ return error instanceof Error ? error.message : 'Unknown error';
10
+ }
8
11
  /**
9
- * EvidenceMCP Server
10
- *
11
- * Captures LLM conversations and stores them as encrypted evidence
12
+ * EvidenceMCP Server - Captures LLM conversations as encrypted evidence
12
13
  * with Git timestamps and export capabilities.
13
14
  */
14
15
  export class EvidenceMCPServer {
@@ -19,25 +20,18 @@ export class EvidenceMCPServer {
19
20
  constructor(config) {
20
21
  this.config = config;
21
22
  try {
22
- // Initialize database with error handling
23
23
  this.db = new EvidenceDatabase(config.dbPath);
24
24
  }
25
25
  catch (error) {
26
- const errorMsg = error instanceof Error ? error.message : 'Unknown error';
27
- throw new Error(`Failed to initialize database: ${errorMsg}`);
26
+ throw new Error(`Failed to initialize database: ${getErrorMessage(error)}`);
28
27
  }
29
- // Initialize MCP server
30
28
  this.server = new McpServer({
31
29
  name: config.name || 'traceguard-mcp',
32
30
  version: config.version || '0.1.0'
33
31
  });
34
- // Register tools and resources (will implement in later steps)
35
32
  this.registerTools();
36
33
  this.registerResources();
37
34
  }
38
- /**
39
- * Derive encryption key from password (lazy initialization)
40
- */
41
35
  async getDerivedKey() {
42
36
  if (!this.derivedKey) {
43
37
  const result = await deriveKey(this.config.password);
@@ -45,11 +39,7 @@ export class EvidenceMCPServer {
45
39
  }
46
40
  return this.derivedKey;
47
41
  }
48
- /**
49
- * Register MCP tools for evidence management
50
- */
51
42
  registerTools() {
52
- // Tool 1: capture-evidence
53
43
  this.server.registerTool('capture-evidence', {
54
44
  title: 'Capture Evidence',
55
45
  description: 'Capture and encrypt LLM conversation as evidence',
@@ -68,24 +58,16 @@ export class EvidenceMCPServer {
68
58
  }
69
59
  }, async (params) => {
70
60
  try {
71
- // Input validation
72
61
  if (!params.content || params.content.trim().length === 0) {
73
62
  throw new Error('Content cannot be empty');
74
63
  }
75
64
  if (params.messageCount <= 0) {
76
65
  throw new Error('Message count must be positive');
77
66
  }
78
- // Derive encryption key
79
67
  const key = await this.getDerivedKey();
80
- // Encrypt content
81
68
  const encrypted = await encrypt(params.content, key);
82
- // Get Git timestamp
83
69
  const gitInfo = await getCurrentCommit();
84
- // Calculate content hash
85
- const hash = crypto.createHash('sha256');
86
- hash.update(params.content);
87
- const contentHash = hash.digest('hex');
88
- // Store evidence
70
+ const contentHash = crypto.createHash('sha256').update(params.content).digest('hex');
89
71
  const id = this.db.create({
90
72
  timestamp: new Date().toISOString(),
91
73
  conversationId: params.conversationId,
@@ -98,26 +80,20 @@ export class EvidenceMCPServer {
98
80
  gitTimestamp: gitInfo?.timestamp || null,
99
81
  tags: params.tags || null
100
82
  });
101
- const output = {
102
- id,
103
- timestamp: new Date().toISOString(),
104
- gitCommitHash: gitInfo?.commitHash || null,
105
- success: true
106
- };
107
83
  return {
108
- content: [{
109
- type: 'text',
110
- text: `Evidence captured successfully. ID: ${id}`
111
- }],
112
- structuredContent: output
84
+ content: [{ type: 'text', text: `Evidence captured successfully. ID: ${id}` }],
85
+ structuredContent: {
86
+ id,
87
+ timestamp: new Date().toISOString(),
88
+ gitCommitHash: gitInfo?.commitHash || null,
89
+ success: true
90
+ }
113
91
  };
114
92
  }
115
93
  catch (error) {
116
- const errorMsg = error instanceof Error ? error.message : 'Unknown error';
117
- throw new Error(`[Tool: capture-evidence] ${errorMsg}`);
94
+ throw new Error(`[Tool: capture-evidence] ${getErrorMessage(error)}`);
118
95
  }
119
96
  });
120
- // Tool 2: list-evidences
121
97
  this.server.registerTool('list-evidences', {
122
98
  title: 'List Evidences',
123
99
  description: 'List all captured evidence with pagination',
@@ -138,42 +114,30 @@ export class EvidenceMCPServer {
138
114
  }
139
115
  }, async (params) => {
140
116
  try {
141
- // Input validation
142
117
  if (params.limit !== undefined && params.limit <= 0) {
143
118
  throw new Error('Limit must be positive');
144
119
  }
145
120
  if (params.offset !== undefined && params.offset < 0) {
146
121
  throw new Error('Offset cannot be negative');
147
122
  }
148
- const evidences = this.db.list({
149
- limit: params.limit,
150
- offset: params.offset
151
- });
152
- const output = {
153
- evidences: evidences.map(e => ({
154
- id: e.id,
155
- timestamp: e.timestamp,
156
- conversationId: e.conversationId,
157
- llmProvider: e.llmProvider,
158
- messageCount: e.messageCount,
159
- tags: e.tags
160
- })),
161
- total: evidences.length
162
- };
123
+ const evidences = this.db.list({ limit: params.limit, offset: params.offset });
124
+ const mappedEvidences = evidences.map(e => ({
125
+ id: e.id,
126
+ timestamp: e.timestamp,
127
+ conversationId: e.conversationId,
128
+ llmProvider: e.llmProvider,
129
+ messageCount: e.messageCount,
130
+ tags: e.tags
131
+ }));
163
132
  return {
164
- content: [{
165
- type: 'text',
166
- text: `Found ${evidences.length} evidence(s)`
167
- }],
168
- structuredContent: output
133
+ content: [{ type: 'text', text: `Found ${evidences.length} evidence(s)` }],
134
+ structuredContent: { evidences: mappedEvidences, total: evidences.length }
169
135
  };
170
136
  }
171
137
  catch (error) {
172
- const errorMsg = error instanceof Error ? error.message : 'Unknown error';
173
- throw new Error(`[Tool: list-evidences] ${errorMsg}`);
138
+ throw new Error(`[Tool: list-evidences] ${getErrorMessage(error)}`);
174
139
  }
175
140
  });
176
- // Tool 3: export-evidences
177
141
  this.server.registerTool('export-evidences', {
178
142
  title: 'Export Evidences',
179
143
  description: 'Export evidences to encrypted ZIP archive',
@@ -190,33 +154,26 @@ export class EvidenceMCPServer {
190
154
  }, async (params) => {
191
155
  try {
192
156
  const { exportEvidences } = await import('@evidencemcp/storage');
157
+ const fs = await import('fs');
193
158
  const result = await exportEvidences(this.db, {
194
159
  evidenceIds: params.evidenceIds,
195
160
  includeGitInfo: params.includeGitInfo ?? false
196
161
  });
197
- // Write ZIP to file
198
- const fs = await import('fs');
199
162
  fs.writeFileSync(result.filename, result.zipData);
200
- const output = {
201
- filename: result.filename,
202
- checksum: result.checksum,
203
- evidenceCount: result.evidenceCount,
204
- success: true
205
- };
206
163
  return {
207
- content: [{
208
- type: 'text',
209
- text: `Exported ${result.evidenceCount} evidence(s) to ${result.filename}`
210
- }],
211
- structuredContent: output
164
+ content: [{ type: 'text', text: `Exported ${result.evidenceCount} evidence(s) to ${result.filename}` }],
165
+ structuredContent: {
166
+ filename: result.filename,
167
+ checksum: result.checksum,
168
+ evidenceCount: result.evidenceCount,
169
+ success: true
170
+ }
212
171
  };
213
172
  }
214
173
  catch (error) {
215
- const errorMsg = error instanceof Error ? error.message : 'Unknown error';
216
- throw new Error(`[Tool: export-evidences] ${errorMsg}`);
174
+ throw new Error(`[Tool: export-evidences] ${getErrorMessage(error)}`);
217
175
  }
218
176
  });
219
- // Tool 4: get-evidence
220
177
  this.server.registerTool('get-evidence', {
221
178
  title: 'Get Evidence',
222
179
  description: 'Retrieve and decrypt specific evidence by ID',
@@ -242,81 +199,58 @@ export class EvidenceMCPServer {
242
199
  if (!evidence) {
243
200
  throw new Error(`Evidence not found: ${params.id}`);
244
201
  }
245
- // Decrypt content
246
- const { decrypt } = await import('@evidencemcp/crypto');
247
202
  const key = await this.getDerivedKey();
248
203
  const decrypted = decrypt(evidence.encryptedContent, evidence.nonce, key);
249
- const output = {
250
- id: evidence.id,
251
- timestamp: evidence.timestamp,
252
- conversationId: evidence.conversationId,
253
- llmProvider: evidence.llmProvider,
254
- content: decrypted,
255
- messageCount: evidence.messageCount,
256
- gitInfo: evidence.gitCommitHash ? {
257
- commitHash: evidence.gitCommitHash,
258
- timestamp: evidence.gitTimestamp
259
- } : null,
260
- tags: evidence.tags
261
- };
204
+ const gitInfo = evidence.gitCommitHash
205
+ ? { commitHash: evidence.gitCommitHash, timestamp: evidence.gitTimestamp }
206
+ : null;
262
207
  return {
263
- content: [{
264
- type: 'text',
265
- text: `Evidence ID: ${evidence.id}\nContent: ${decrypted.substring(0, 100)}...`
266
- }],
267
- structuredContent: output
208
+ content: [{ type: 'text', text: `Evidence ID: ${evidence.id}\nContent: ${decrypted.substring(0, 100)}...` }],
209
+ structuredContent: {
210
+ id: evidence.id,
211
+ timestamp: evidence.timestamp,
212
+ conversationId: evidence.conversationId,
213
+ llmProvider: evidence.llmProvider,
214
+ content: decrypted,
215
+ messageCount: evidence.messageCount,
216
+ gitInfo,
217
+ tags: evidence.tags
218
+ }
268
219
  };
269
220
  }
270
221
  catch (error) {
271
- const errorMsg = error instanceof Error ? error.message : 'Unknown error';
272
- throw new Error(`[Tool: get-evidence] ${errorMsg}`);
222
+ throw new Error(`[Tool: get-evidence] ${getErrorMessage(error)}`);
273
223
  }
274
224
  });
275
225
  }
276
- /**
277
- * Register MCP resources for evidence access
278
- */
279
226
  registerResources() {
280
- // Resource: evidence://{id}
281
227
  this.server.registerResource('evidence', new ResourceTemplate('evidence://{id}', { list: undefined }), {
282
228
  title: 'Evidence Content',
283
229
  description: 'Access encrypted evidence record by ID',
284
230
  mimeType: 'text/plain'
285
231
  }, async (uri, { id }) => {
286
232
  try {
287
- // Find evidence by ID
288
233
  const evidence = this.db.findById(id);
289
234
  if (!evidence) {
290
235
  throw new Error(`Evidence with ID ${id} not found`);
291
236
  }
292
- // Decrypt content using correct 3-argument signature
293
237
  const key = await this.getDerivedKey();
294
238
  const decrypted = decrypt(evidence.encryptedContent, evidence.nonce, key);
295
239
  return {
296
- contents: [{
297
- uri: uri.href,
298
- mimeType: 'text/plain',
299
- text: decrypted
300
- }]
240
+ contents: [{ uri: uri.href, mimeType: 'text/plain', text: decrypted }]
301
241
  };
302
242
  }
303
243
  catch (error) {
304
- const errorMsg = error instanceof Error ? error.message : 'Unknown error';
305
- throw new Error(`Failed to access evidence resource: ${errorMsg}`);
244
+ throw new Error(`Failed to access evidence resource: ${getErrorMessage(error)}`);
306
245
  }
307
246
  });
308
247
  }
309
- /**
310
- * Start the MCP server with stdio transport
311
- */
312
248
  async start() {
313
249
  const transport = new StdioServerTransport();
314
250
  await this.server.connect(transport);
315
251
  }
316
252
  }
317
- // CLI entry point
318
253
  async function main() {
319
- // Read config from environment variables
320
254
  const config = {
321
255
  dbPath: process.env.EVIDENCEMCP_DB_PATH || './evidence.db',
322
256
  password: process.env.EVIDENCEMCP_PASSWORD || ''
@@ -328,13 +262,11 @@ async function main() {
328
262
  const server = new EvidenceMCPServer(config);
329
263
  await server.start();
330
264
  }
331
- // Run if called directly
332
265
  if (import.meta.url === `file://${process.argv[1]}`) {
333
266
  main().catch((error) => {
334
267
  console.error('Server error:', error);
335
268
  process.exit(1);
336
269
  });
337
270
  }
338
- // Export test helpers for testing
339
271
  export { EvidenceMCPTestHelpers } from './test-helpers.js';
340
272
  //# 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,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAGjC,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAY;IAClB,MAAM,CAAe;IACrB,EAAE,CAAmB;IACrB,UAAU,GAAsB,IAAI,CAAC;IAE7C,YAAY,MAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC;YAC1B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,gBAAgB;YACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,MAAM,CAAC,YAAY,CACtB,kBAAkB,EAClB;YACE,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,kDAAkD;YAC/D,WAAW,EAAE;gBACX,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACtD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;gBAC/E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;gBACnF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBACxE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;aACxE;YACD,YAAY,EAAE;gBACZ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;gBACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;gBACrB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACpC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;aACrB;SACF,EACD,KAAK,EAAE,MAA6B,EAAE,EAAE;YACtC,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1D,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAC7C,CAAC;gBACD,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC;oBAC7B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBACpD,CAAC;gBAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;gBACzC,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAErF,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;oBACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,gBAAgB,EAAE,SAAS,CAAC,UAAU;oBACtC,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,WAAW;oBACX,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,aAAa,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI;oBAC1C,YAAY,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI;oBACxC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;iBAC1B,CAAC,CAAC;gBAEH,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uCAAuC,EAAE,EAAE,EAAE,CAAC;oBAC9E,iBAAiB,EAAE;wBACjB,EAAE;wBACF,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACnC,aAAa,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI;wBAC1C,OAAO,EAAE,IAAI;qBACd;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACxE,CAAC;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,YAAY,CACtB,gBAAgB,EAChB;YACE,KAAK,EAAE,gBAAgB;YACvB,WAAW,EAAE,4CAA4C;YACzD,WAAW,EAAE;gBACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACzE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;aACzE;YACD,YAAY,EAAE;gBACZ,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC1B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;oBACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;oBACrB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;oBAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;oBACvB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;oBACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBAC5B,CAAC,CAAC;gBACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;aAClB;SACF,EACD,KAAK,EAAE,MAA2C,EAAE,EAAE;YACpD,IAAI,CAAC;gBACH,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;oBACpD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAC5C,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAC/C,CAAC;gBAED,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/E,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC1C,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,cAAc,EAAE,CAAC,CAAC,cAAc;oBAChC,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,YAAY,EAAE,CAAC,CAAC,YAAY;oBAC5B,IAAI,EAAE,CAAC,CAAC,IAAI;iBACb,CAAC,CAAC,CAAC;gBAEJ,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,SAAS,CAAC,MAAM,cAAc,EAAE,CAAC;oBAC1E,iBAAiB,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE;iBAC3E,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,YAAY,CACtB,kBAAkB,EAClB;YACE,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,2CAA2C;YACxD,WAAW,EAAE;gBACX,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;gBAClF,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;aAC1E;YACD,YAAY,EAAE;gBACZ,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;gBACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;gBACpB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;gBACzB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;aACrB;SACF,EACD,KAAK,EAAE,MAA4D,EAAE,EAAE;YACrE,IAAI,CAAC;gBACH,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;gBACjE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;gBAE9B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE;oBAC5C,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,KAAK;iBAC/C,CAAC,CAAC;gBAEH,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;gBAElD,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,MAAM,CAAC,aAAa,mBAAmB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACvG,iBAAiB,EAAE;wBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,aAAa,EAAE,MAAM,CAAC,aAAa;wBACnC,OAAO,EAAE,IAAI;qBACd;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACxE,CAAC;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,YAAY,CACtB,cAAc,EACd;YACE,KAAK,EAAE,cAAc;YACrB,WAAW,EAAE,8CAA8C;YAC3D,WAAW,EAAE;gBACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;aACvC;YACD,YAAY,EAAE;gBACZ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;gBACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;gBACrB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;gBAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;gBACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;gBACxB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;oBAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;oBACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;iBACtB,CAAC,CAAC,QAAQ,EAAE;gBACb,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC5B;SACF,EACD,KAAK,EAAE,MAAsB,EAAE,EAAE;YAC/B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtD,CAAC;gBAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAE1E,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa;oBACpC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,YAAa,EAAE;oBAC3E,CAAC,CAAC,IAAI,CAAC;gBAET,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,QAAQ,CAAC,EAAE,cAAc,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;oBAC5G,iBAAiB,EAAE;wBACjB,EAAE,EAAE,QAAQ,CAAC,EAAE;wBACf,SAAS,EAAE,QAAQ,CAAC,SAAS;wBAC7B,cAAc,EAAE,QAAQ,CAAC,cAAc;wBACvC,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,OAAO,EAAE,SAAS;wBAClB,YAAY,EAAE,QAAQ,CAAC,YAAY;wBACnC,OAAO;wBACP,IAAI,EAAE,QAAQ,CAAC,IAAI;qBACpB;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAC1B,UAAU,EACV,IAAI,gBAAgB,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAC5D;YACE,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,wCAAwC;YACrD,QAAQ,EAAE,YAAY;SACvB,EACD,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YACpB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAY,CAAC,CAAC;gBAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;gBACtD,CAAC;gBAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAE1E,OAAO;oBACL,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;iBACvE,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnF,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;CACF;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAiB;QAC3B,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,eAAe;QAC1D,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE;KACjD,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,51 +1,33 @@
1
1
  /**
2
2
  * Test Helper Utilities for EvidenceMCP Server
3
- *
4
- * This module provides type-safe testing utilities without exposing
5
- * internal implementation details through `as any` casts.
6
3
  */
7
4
  import type { EvidenceMCPServer } from './index.js';
8
- /**
9
- * Tool information for testing
10
- */
11
5
  export interface ToolInfo {
12
6
  name: string;
13
7
  description: string;
14
8
  }
15
- /**
16
- * Resource information for testing
17
- */
18
9
  export interface ResourceInfo {
19
10
  name: string;
20
11
  uriTemplate: string;
21
12
  description: string;
22
13
  mimeType: string;
23
14
  }
24
- /**
25
- * Test Helpers for EvidenceMCP Server
26
- */
27
15
  export declare class EvidenceMCPTestHelpers {
28
16
  private server;
29
17
  constructor(server: EvidenceMCPServer);
30
- /**
31
- * Get list of registered tools (for testing)
32
- */
18
+ private getServerInternal;
33
19
  getTools(): Promise<ToolInfo[]>;
34
- /**
35
- * Get list of registered resources (for testing)
36
- */
37
20
  getResources(): Promise<ResourceInfo[]>;
38
- /**
39
- * Read a resource by URI (for testing)
40
- */
41
- readResource(uri: string): Promise<any>;
42
- /**
43
- * Execute a tool by name (for testing)
44
- */
45
- executeTool(toolName: string, params: any): Promise<any>;
46
- /**
47
- * Call a tool directly (for testing)
48
- */
49
- callTool(name: string, params: any): Promise<any>;
21
+ readResource(uri: string): Promise<{
22
+ contents: Array<{
23
+ uri: string;
24
+ mimeType: string;
25
+ text: string;
26
+ }>;
27
+ }>;
28
+ executeTool(toolName: string, params: Record<string, unknown>): Promise<Record<string, unknown>>;
29
+ callTool(name: string, params: Record<string, unknown>): Promise<{
30
+ structuredContent: Record<string, unknown>;
31
+ }>;
50
32
  }
51
33
  //# sourceMappingURL=test-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAwCD;;GAEG;AACH,qBAAa,sBAAsB;IACrB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,iBAAiB;IAE7C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAwBrC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA8B7C;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IA2C7C;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IA4B9D;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAQxD"}
1
+ {"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAuDD,qBAAa,sBAAsB;IACrB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,iBAAiB;IAE7C,OAAO,CAAC,iBAAiB;IAInB,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAS/B,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAiBvC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IA0BxG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAmBhG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAIvH"}
@@ -1,170 +1,108 @@
1
1
  /**
2
2
  * Test Helper Utilities for EvidenceMCP Server
3
- *
4
- * This module provides type-safe testing utilities without exposing
5
- * internal implementation details through `as any` casts.
6
3
  */
7
- /**
8
- * Helper to safely access registry using Reflection API
9
- */
10
- function getRegistry(obj, key) {
11
- return Reflect.get(obj, key);
4
+ function getFromRegistry(registry, finder) {
5
+ if (!registry)
6
+ return null;
7
+ if (registry instanceof Map) {
8
+ for (const [key, value] of registry.entries()) {
9
+ const result = finder(key, value);
10
+ if (result)
11
+ return result;
12
+ }
13
+ }
14
+ else if (Array.isArray(registry)) {
15
+ for (const item of registry) {
16
+ const result = finder(item.name, item);
17
+ if (result)
18
+ return result;
19
+ }
20
+ }
21
+ else if (typeof registry === 'object') {
22
+ for (const [key, value] of Object.entries(registry)) {
23
+ const result = finder(key, value);
24
+ if (result)
25
+ return result;
26
+ }
27
+ }
28
+ return null;
12
29
  }
13
- /**
14
- * Extract items from Map, Array, or Object registry
15
- */
16
- function extractFromRegistry(registry, mapExtractor, arrayExtractor, objectExtractor) {
17
- if (!registry) {
30
+ function mapRegistry(registry, mapper) {
31
+ if (!registry)
18
32
  return [];
33
+ if (registry instanceof Map) {
34
+ return Array.from(registry.entries()).map(([key, value]) => mapper(key, value));
19
35
  }
20
- // Check if it's a Map
21
- if (registry instanceof Map || (registry && typeof registry.entries === 'function')) {
22
- return mapExtractor(registry.entries());
23
- }
24
- // Check if it's an Array
25
36
  if (Array.isArray(registry)) {
26
- return arrayExtractor(registry);
37
+ return registry.map((item) => mapper(item.name, item));
27
38
  }
28
- // Check if it's an Object
29
39
  if (typeof registry === 'object') {
30
- return objectExtractor(Object.entries(registry));
40
+ return Object.entries(registry).map(([key, value]) => mapper(key, value));
31
41
  }
32
42
  return [];
33
43
  }
34
- /**
35
- * Test Helpers for EvidenceMCP Server
36
- */
37
44
  export class EvidenceMCPTestHelpers {
38
45
  server;
39
46
  constructor(server) {
40
47
  this.server = server;
41
48
  }
42
- /**
43
- * Get list of registered tools (for testing)
44
- */
49
+ getServerInternal() {
50
+ return this.server;
51
+ }
45
52
  async getTools() {
46
- const serverInternal = this.server;
47
- const tools = getRegistry(serverInternal.server, '_registeredTools');
48
- return extractFromRegistry(tools,
49
- // Map extractor
50
- (entries) => Array.from(entries).map(([name, tool]) => ({
51
- name,
52
- description: tool.description || tool.title
53
- })),
54
- // Array extractor
55
- (items) => items.map((tool) => ({
56
- name: tool.name,
57
- description: tool.description
58
- })),
59
- // Object extractor
60
- (entries) => entries.map(([name, tool]) => ({
53
+ const tools = Reflect.get(this.getServerInternal().server, '_registeredTools');
54
+ return mapRegistry(tools, (name, tool) => ({
61
55
  name,
62
- description: tool.description || tool.title
63
- })));
56
+ description: (tool.description || tool.title)
57
+ }));
64
58
  }
65
- /**
66
- * Get list of registered resources (for testing)
67
- */
68
59
  async getResources() {
69
- const serverInternal = this.server;
70
- const templates = getRegistry(serverInternal.server, '_registeredResourceTemplates');
71
- return extractFromRegistry(templates,
72
- // Map extractor
73
- (entries) => Array.from(entries).map(([name, template]) => ({
60
+ const templates = Reflect.get(this.getServerInternal().server, '_registeredResourceTemplates');
61
+ return mapRegistry(templates, (name, template) => ({
74
62
  name,
75
- uriTemplate: template.uriTemplate,
76
- description: template.description || '',
77
- mimeType: template.mimeType || 'text/plain'
78
- })),
79
- // Array extractor
80
- (items) => items.map((template) => ({
81
- name: template.name,
82
- uriTemplate: template.uriTemplate,
83
- description: template.description || '',
84
- mimeType: template.mimeType || 'text/plain'
85
- })),
86
- // Object extractor
87
- (entries) => entries.map(([name, template]) => ({
88
- name,
89
- uriTemplate: template.resourceTemplate?._uriTemplate?.template || template.uriTemplate || '',
90
- description: template.metadata?.description || template.description || '',
91
- mimeType: template.metadata?.mimeType || template.mimeType || 'text/plain'
92
- })));
63
+ uriTemplate: template.resourceTemplate?._uriTemplate?.template
64
+ || template.uriTemplate
65
+ || '',
66
+ description: template.metadata?.description
67
+ || template.description
68
+ || '',
69
+ mimeType: template.metadata?.mimeType
70
+ || template.mimeType
71
+ || 'text/plain'
72
+ }));
93
73
  }
94
- /**
95
- * Read a resource by URI (for testing)
96
- */
97
74
  async readResource(uri) {
98
- const serverInternal = this.server;
99
- const templates = getRegistry(serverInternal.server, '_registeredResourceTemplates');
100
- if (!templates) {
101
- throw new Error('No resources registered');
102
- }
103
- // Parse URI to get resource name and ID
75
+ const templates = Reflect.get(this.getServerInternal().server, '_registeredResourceTemplates');
104
76
  const match = uri.match(/^(\w+):\/\/(.+)$/);
105
77
  if (!match) {
106
78
  throw new Error('Unknown resource');
107
79
  }
108
80
  const [, resourceName, id] = match;
109
- // Find matching template
110
- let handler = null;
111
- if (templates instanceof Map) {
112
- handler = templates.get(resourceName);
113
- }
114
- else if (Array.isArray(templates)) {
115
- handler = templates.find((t) => t.name === resourceName);
116
- }
117
- else if (typeof templates === 'object') {
118
- handler = templates[resourceName];
119
- }
81
+ const handler = getFromRegistry(templates, (key, value) => key === resourceName ? value : null);
120
82
  if (!handler) {
121
83
  throw new Error('Unknown resource');
122
84
  }
123
- // The handler might be in readCallback or handler field
124
85
  const handlerFn = handler.readCallback || handler.handler;
125
- if (!handlerFn) {
86
+ if (!handlerFn || typeof handlerFn !== 'function') {
126
87
  throw new Error('Unknown resource');
127
88
  }
128
- // Call the handler with parsed parameters
129
- const result = await handlerFn({ href: uri }, { id });
130
- return result;
89
+ return handlerFn({ href: uri }, { id });
131
90
  }
132
- /**
133
- * Execute a tool by name (for testing)
134
- */
135
91
  async executeTool(toolName, params) {
136
- const serverInternal = this.server;
137
- const tools = getRegistry(serverInternal.server, '_registeredTools');
92
+ const tools = Reflect.get(this.getServerInternal().server, '_registeredTools');
138
93
  if (!tools) {
139
94
  throw new Error('No tools registered');
140
95
  }
141
- // Find the tool
142
- let tool = null;
143
- if (tools instanceof Map) {
144
- tool = tools.get(toolName);
145
- }
146
- else if (Array.isArray(tools)) {
147
- tool = tools.find((t) => t.name === toolName);
148
- }
149
- else if (typeof tools === 'object') {
150
- tool = tools[toolName];
151
- }
152
- if (!tool || !tool.handler) {
96
+ const tool = getFromRegistry(tools, (key, value) => key === toolName ? value : null);
97
+ if (!tool || !tool.handler || typeof tool.handler !== 'function') {
153
98
  throw new Error(`Tool ${toolName} not found`);
154
99
  }
155
- // Execute the tool handler
156
100
  const result = await tool.handler(params);
157
- return result.structuredContent || result;
101
+ return (result.structuredContent || result);
158
102
  }
159
- /**
160
- * Call a tool directly (for testing)
161
- */
162
103
  async callTool(name, params) {
163
104
  const result = await this.executeTool(name, params);
164
- // Wrap in expected response format for compatibility
165
- return {
166
- structuredContent: result
167
- };
105
+ return { structuredContent: result };
168
106
  }
169
107
  }
170
108
  //# sourceMappingURL=test-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -26,29 +26,4 @@ export interface CaptureEvidenceParams {
26
26
  /** Optional tags for categorization */
27
27
  tags?: string;
28
28
  }
29
- /**
30
- * Evidence list request parameters
31
- */
32
- export interface ListEvidencesParams {
33
- /** Maximum number of results */
34
- limit?: number;
35
- /** Offset for pagination */
36
- offset?: number;
37
- }
38
- /**
39
- * Evidence export request parameters
40
- */
41
- export interface ExportEvidencesParams {
42
- /** Specific evidence IDs to export (empty = all) */
43
- evidenceIds?: string[];
44
- /** Include git info in export */
45
- includeGitInfo?: boolean;
46
- }
47
- /**
48
- * Get evidence request parameters
49
- */
50
- export interface GetEvidenceParams {
51
- /** Evidence ID to retrieve */
52
- id: string;
53
- }
54
29
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IAEf,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IAEjB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;IAEvB,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IAEpB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAEhB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IAErB,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,iCAAiC;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;CACZ"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IAEf,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IAEjB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;IAEvB,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IAEpB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAEhB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IAErB,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pcircle/evidencemcp-server",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Model Context Protocol (MCP) server for EvidenceMCP - automatically capture and encrypt LLM conversations as legal evidence with Git timestamps",
5
5
  "keywords": [
6
6
  "mcp",