@safekeylab/mcp-enterprise 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +781 -0
- package/dist/index.js.map +1 -0
- package/package.json +46 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* SafeKeyLab Enterprise MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Enterprise security features for AI applications:
|
|
6
|
+
* - Agent Security: Validate tool calls, enforce policies
|
|
7
|
+
* - RAG Security: Filter retrieved context, scan ingestion
|
|
8
|
+
* - Compliance: Generate reports, audit trails
|
|
9
|
+
* - Moderation: Review queue management
|
|
10
|
+
*
|
|
11
|
+
* Tools:
|
|
12
|
+
* - validate_agent_action: Validate tool call
|
|
13
|
+
* - check_agent_policy: Evaluate against policy
|
|
14
|
+
* - filter_rag_context: Sanitize retrieved context
|
|
15
|
+
* - scan_ingestion: Pre-ingestion document scan
|
|
16
|
+
* - generate_compliance_report: Create compliance evidence
|
|
17
|
+
* - get_audit_trail: Retrieve audit logs
|
|
18
|
+
* - check_compliance_status: Check framework compliance
|
|
19
|
+
* - get_review_queue: Get pending review items
|
|
20
|
+
* - submit_review_decision: Submit moderation decision
|
|
21
|
+
* - get_subscription_info: Get subscription and usage info
|
|
22
|
+
*/
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;GAoBG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,781 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* SafeKeyLab Enterprise MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Enterprise security features for AI applications:
|
|
6
|
+
* - Agent Security: Validate tool calls, enforce policies
|
|
7
|
+
* - RAG Security: Filter retrieved context, scan ingestion
|
|
8
|
+
* - Compliance: Generate reports, audit trails
|
|
9
|
+
* - Moderation: Review queue management
|
|
10
|
+
*
|
|
11
|
+
* Tools:
|
|
12
|
+
* - validate_agent_action: Validate tool call
|
|
13
|
+
* - check_agent_policy: Evaluate against policy
|
|
14
|
+
* - filter_rag_context: Sanitize retrieved context
|
|
15
|
+
* - scan_ingestion: Pre-ingestion document scan
|
|
16
|
+
* - generate_compliance_report: Create compliance evidence
|
|
17
|
+
* - get_audit_trail: Retrieve audit logs
|
|
18
|
+
* - check_compliance_status: Check framework compliance
|
|
19
|
+
* - get_review_queue: Get pending review items
|
|
20
|
+
* - submit_review_decision: Submit moderation decision
|
|
21
|
+
* - get_subscription_info: Get subscription and usage info
|
|
22
|
+
*/
|
|
23
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
24
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
25
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ErrorCode, McpError, } from '@modelcontextprotocol/sdk/types.js';
|
|
26
|
+
import { z } from 'zod';
|
|
27
|
+
import { getClient, SafeKeyLabError } from '@safekeylab/mcp-core';
|
|
28
|
+
// =============================================================================
|
|
29
|
+
// Tool Schemas
|
|
30
|
+
// =============================================================================
|
|
31
|
+
const ValidateAgentActionSchema = z.object({
|
|
32
|
+
tool_name: z.string().describe('Name of the tool being called'),
|
|
33
|
+
tool_args: z.record(z.unknown()).describe('Arguments passed to the tool'),
|
|
34
|
+
agent_id: z.string().optional().describe('Agent identifier'),
|
|
35
|
+
session_id: z.string().optional().describe('Session identifier'),
|
|
36
|
+
});
|
|
37
|
+
const CheckAgentPolicySchema = z.object({
|
|
38
|
+
action: z.string().describe('Action description to evaluate'),
|
|
39
|
+
policy_id: z.string().optional().describe('Specific policy ID to check against'),
|
|
40
|
+
});
|
|
41
|
+
const FilterRAGContextSchema = z.object({
|
|
42
|
+
chunks: z.array(z.object({
|
|
43
|
+
content: z.string(),
|
|
44
|
+
source: z.string().optional(),
|
|
45
|
+
score: z.number().optional(),
|
|
46
|
+
})).describe('Retrieved context chunks'),
|
|
47
|
+
filter_pii: z.boolean().default(true).describe('Remove PII from context'),
|
|
48
|
+
filter_sensitive: z.boolean().default(true).describe('Remove sensitive information'),
|
|
49
|
+
});
|
|
50
|
+
const ScanIngestionSchema = z.object({
|
|
51
|
+
document: z.string().describe('Document content (text or base64)'),
|
|
52
|
+
document_type: z.string().describe('Document type: pdf, txt, html, json, etc.'),
|
|
53
|
+
});
|
|
54
|
+
const GenerateComplianceReportSchema = z.object({
|
|
55
|
+
framework: z.enum(['GDPR', 'HIPAA', 'SOC2', 'PCI-DSS', 'CCPA']).describe('Compliance framework'),
|
|
56
|
+
days: z.number().default(30).describe('Reporting period in days'),
|
|
57
|
+
});
|
|
58
|
+
const GetAuditTrailSchema = z.object({
|
|
59
|
+
start_date: z.string().optional().describe('Start date (ISO format)'),
|
|
60
|
+
end_date: z.string().optional().describe('End date (ISO format)'),
|
|
61
|
+
action_type: z.string().optional().describe('Filter by action type'),
|
|
62
|
+
limit: z.number().default(100).describe('Maximum entries to return'),
|
|
63
|
+
});
|
|
64
|
+
const CheckComplianceStatusSchema = z.object({
|
|
65
|
+
framework: z.enum(['GDPR', 'HIPAA', 'SOC2', 'PCI-DSS', 'CCPA']).describe('Compliance framework'),
|
|
66
|
+
});
|
|
67
|
+
const GetReviewQueueSchema = z.object({
|
|
68
|
+
limit: z.number().default(20).describe('Maximum items to return'),
|
|
69
|
+
priority: z.enum(['low', 'medium', 'high', 'urgent']).optional().describe('Filter by priority'),
|
|
70
|
+
});
|
|
71
|
+
const SubmitReviewDecisionSchema = z.object({
|
|
72
|
+
item_id: z.string().describe('Review item ID'),
|
|
73
|
+
decision: z.enum(['approve', 'reject', 'escalate']).describe('Decision'),
|
|
74
|
+
reason: z.string().optional().describe('Reason for decision'),
|
|
75
|
+
});
|
|
76
|
+
// =============================================================================
|
|
77
|
+
// Tool Definitions
|
|
78
|
+
// =============================================================================
|
|
79
|
+
const TOOLS = [
|
|
80
|
+
{
|
|
81
|
+
name: 'validate_agent_action',
|
|
82
|
+
description: 'Validate an agent tool call for security risks. Checks for dangerous operations, policy violations, and anomalous behavior.',
|
|
83
|
+
inputSchema: {
|
|
84
|
+
type: 'object',
|
|
85
|
+
properties: {
|
|
86
|
+
tool_name: { type: 'string', description: 'Name of the tool being called' },
|
|
87
|
+
tool_args: { type: 'object', description: 'Arguments passed to the tool' },
|
|
88
|
+
agent_id: { type: 'string', description: 'Agent identifier' },
|
|
89
|
+
session_id: { type: 'string', description: 'Session identifier' },
|
|
90
|
+
},
|
|
91
|
+
required: ['tool_name', 'tool_args'],
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: 'check_agent_policy',
|
|
96
|
+
description: 'Evaluate an action against configured security policies. Returns policy violations and recommendations.',
|
|
97
|
+
inputSchema: {
|
|
98
|
+
type: 'object',
|
|
99
|
+
properties: {
|
|
100
|
+
action: { type: 'string', description: 'Action description to evaluate' },
|
|
101
|
+
policy_id: { type: 'string', description: 'Specific policy ID to check' },
|
|
102
|
+
},
|
|
103
|
+
required: ['action'],
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: 'filter_rag_context',
|
|
108
|
+
description: 'Filter retrieved RAG context to remove PII and sensitive information before passing to LLM.',
|
|
109
|
+
inputSchema: {
|
|
110
|
+
type: 'object',
|
|
111
|
+
properties: {
|
|
112
|
+
chunks: {
|
|
113
|
+
type: 'array',
|
|
114
|
+
items: {
|
|
115
|
+
type: 'object',
|
|
116
|
+
properties: {
|
|
117
|
+
content: { type: 'string' },
|
|
118
|
+
source: { type: 'string' },
|
|
119
|
+
score: { type: 'number' },
|
|
120
|
+
},
|
|
121
|
+
required: ['content'],
|
|
122
|
+
},
|
|
123
|
+
description: 'Retrieved context chunks',
|
|
124
|
+
},
|
|
125
|
+
filter_pii: { type: 'boolean', default: true, description: 'Remove PII' },
|
|
126
|
+
filter_sensitive: { type: 'boolean', default: true, description: 'Remove sensitive info' },
|
|
127
|
+
},
|
|
128
|
+
required: ['chunks'],
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: 'scan_ingestion',
|
|
133
|
+
description: 'Scan a document before ingesting into vector database. Identifies PII, sensitive content, and potential risks.',
|
|
134
|
+
inputSchema: {
|
|
135
|
+
type: 'object',
|
|
136
|
+
properties: {
|
|
137
|
+
document: { type: 'string', description: 'Document content' },
|
|
138
|
+
document_type: { type: 'string', description: 'Document type' },
|
|
139
|
+
},
|
|
140
|
+
required: ['document', 'document_type'],
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
name: 'generate_compliance_report',
|
|
145
|
+
description: 'Generate a compliance report for GDPR, HIPAA, SOC2, PCI-DSS, or CCPA. Includes findings, evidence, and recommendations.',
|
|
146
|
+
inputSchema: {
|
|
147
|
+
type: 'object',
|
|
148
|
+
properties: {
|
|
149
|
+
framework: {
|
|
150
|
+
type: 'string',
|
|
151
|
+
enum: ['GDPR', 'HIPAA', 'SOC2', 'PCI-DSS', 'CCPA'],
|
|
152
|
+
description: 'Compliance framework',
|
|
153
|
+
},
|
|
154
|
+
days: { type: 'number', default: 30, description: 'Reporting period in days' },
|
|
155
|
+
},
|
|
156
|
+
required: ['framework'],
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
name: 'get_audit_trail',
|
|
161
|
+
description: 'Retrieve audit trail entries for security review and compliance. Filter by date range or action type.',
|
|
162
|
+
inputSchema: {
|
|
163
|
+
type: 'object',
|
|
164
|
+
properties: {
|
|
165
|
+
start_date: { type: 'string', description: 'Start date (ISO)' },
|
|
166
|
+
end_date: { type: 'string', description: 'End date (ISO)' },
|
|
167
|
+
action_type: { type: 'string', description: 'Filter by action type' },
|
|
168
|
+
limit: { type: 'number', default: 100, description: 'Max entries' },
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
name: 'check_compliance_status',
|
|
174
|
+
description: 'Quick check of current compliance status for a specific framework.',
|
|
175
|
+
inputSchema: {
|
|
176
|
+
type: 'object',
|
|
177
|
+
properties: {
|
|
178
|
+
framework: {
|
|
179
|
+
type: 'string',
|
|
180
|
+
enum: ['GDPR', 'HIPAA', 'SOC2', 'PCI-DSS', 'CCPA'],
|
|
181
|
+
description: 'Compliance framework',
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
required: ['framework'],
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
name: 'get_review_queue',
|
|
189
|
+
description: 'Get items pending human review. Used for moderation and uncertain detection cases.',
|
|
190
|
+
inputSchema: {
|
|
191
|
+
type: 'object',
|
|
192
|
+
properties: {
|
|
193
|
+
limit: { type: 'number', default: 20, description: 'Max items' },
|
|
194
|
+
priority: {
|
|
195
|
+
type: 'string',
|
|
196
|
+
enum: ['low', 'medium', 'high', 'urgent'],
|
|
197
|
+
description: 'Filter by priority',
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
name: 'submit_review_decision',
|
|
204
|
+
description: 'Submit a moderation decision for a review queue item.',
|
|
205
|
+
inputSchema: {
|
|
206
|
+
type: 'object',
|
|
207
|
+
properties: {
|
|
208
|
+
item_id: { type: 'string', description: 'Review item ID' },
|
|
209
|
+
decision: {
|
|
210
|
+
type: 'string',
|
|
211
|
+
enum: ['approve', 'reject', 'escalate'],
|
|
212
|
+
description: 'Decision',
|
|
213
|
+
},
|
|
214
|
+
reason: { type: 'string', description: 'Reason for decision' },
|
|
215
|
+
},
|
|
216
|
+
required: ['item_id', 'decision'],
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
name: 'get_subscription_info',
|
|
221
|
+
description: 'Get current subscription tier, usage, and feature access information.',
|
|
222
|
+
inputSchema: {
|
|
223
|
+
type: 'object',
|
|
224
|
+
properties: {},
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
];
|
|
228
|
+
// =============================================================================
|
|
229
|
+
// Resource Definitions
|
|
230
|
+
// =============================================================================
|
|
231
|
+
const RESOURCES = [
|
|
232
|
+
{
|
|
233
|
+
uri: 'safekeylab://enterprise/agent-policies',
|
|
234
|
+
name: 'Agent Policies',
|
|
235
|
+
description: 'Configured security policies for agent actions',
|
|
236
|
+
mimeType: 'application/json',
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
uri: 'safekeylab://enterprise/rag-policies',
|
|
240
|
+
name: 'RAG Policies',
|
|
241
|
+
description: 'Security policies for RAG context filtering',
|
|
242
|
+
mimeType: 'application/json',
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
uri: 'safekeylab://enterprise/compliance-frameworks',
|
|
246
|
+
name: 'Compliance Frameworks',
|
|
247
|
+
description: 'Supported compliance frameworks and requirements',
|
|
248
|
+
mimeType: 'application/json',
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
uri: 'safekeylab://enterprise/audit-summary',
|
|
252
|
+
name: 'Audit Summary',
|
|
253
|
+
description: 'Summary of recent audit log activity',
|
|
254
|
+
mimeType: 'application/json',
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
uri: 'safekeylab://enterprise/subscription',
|
|
258
|
+
name: 'Subscription Info',
|
|
259
|
+
description: 'Current subscription tier and feature access',
|
|
260
|
+
mimeType: 'application/json',
|
|
261
|
+
},
|
|
262
|
+
];
|
|
263
|
+
const AGENT_POLICIES_DATA = {
|
|
264
|
+
policies: [
|
|
265
|
+
{
|
|
266
|
+
id: 'default-safety',
|
|
267
|
+
name: 'Default Safety Policy',
|
|
268
|
+
description: 'Basic safety controls for all agent actions',
|
|
269
|
+
rules: [
|
|
270
|
+
'Block file system modifications outside designated paths',
|
|
271
|
+
'Block network requests to internal IPs',
|
|
272
|
+
'Block execution of system commands',
|
|
273
|
+
'Require confirmation for destructive actions',
|
|
274
|
+
],
|
|
275
|
+
enabled: true,
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
id: 'data-access',
|
|
279
|
+
name: 'Data Access Policy',
|
|
280
|
+
description: 'Controls access to sensitive data',
|
|
281
|
+
rules: [
|
|
282
|
+
'Mask PII in tool responses',
|
|
283
|
+
'Log all database queries',
|
|
284
|
+
'Limit query result sizes',
|
|
285
|
+
'Block access to sensitive tables',
|
|
286
|
+
],
|
|
287
|
+
enabled: true,
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
id: 'api-safety',
|
|
291
|
+
name: 'API Safety Policy',
|
|
292
|
+
description: 'Controls for external API calls',
|
|
293
|
+
rules: [
|
|
294
|
+
'Whitelist allowed API domains',
|
|
295
|
+
'Rate limit API calls per session',
|
|
296
|
+
'Validate API response schemas',
|
|
297
|
+
'Block credential exposure in requests',
|
|
298
|
+
],
|
|
299
|
+
enabled: true,
|
|
300
|
+
},
|
|
301
|
+
],
|
|
302
|
+
enforcement_mode: 'strict',
|
|
303
|
+
audit_enabled: true,
|
|
304
|
+
};
|
|
305
|
+
const RAG_POLICIES_DATA = {
|
|
306
|
+
policies: [
|
|
307
|
+
{
|
|
308
|
+
id: 'pii-filter',
|
|
309
|
+
name: 'PII Filtering',
|
|
310
|
+
description: 'Remove PII from retrieved context',
|
|
311
|
+
entity_types: ['ssn', 'credit_card', 'email', 'phone', 'address'],
|
|
312
|
+
action: 'redact',
|
|
313
|
+
enabled: true,
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
id: 'sensitive-filter',
|
|
317
|
+
name: 'Sensitive Content Filter',
|
|
318
|
+
description: 'Filter sensitive business information',
|
|
319
|
+
categories: ['financial', 'legal', 'hr', 'security'],
|
|
320
|
+
action: 'remove',
|
|
321
|
+
enabled: true,
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
id: 'source-validation',
|
|
325
|
+
name: 'Source Validation',
|
|
326
|
+
description: 'Validate source trustworthiness',
|
|
327
|
+
trusted_sources: ['internal-docs', 'approved-vendors'],
|
|
328
|
+
action: 'flag',
|
|
329
|
+
enabled: true,
|
|
330
|
+
},
|
|
331
|
+
],
|
|
332
|
+
default_action: 'allow',
|
|
333
|
+
logging_enabled: true,
|
|
334
|
+
};
|
|
335
|
+
const COMPLIANCE_FRAMEWORKS_DATA = {
|
|
336
|
+
frameworks: {
|
|
337
|
+
GDPR: {
|
|
338
|
+
name: 'General Data Protection Regulation',
|
|
339
|
+
region: 'EU',
|
|
340
|
+
requirements: [
|
|
341
|
+
'Data minimization',
|
|
342
|
+
'Purpose limitation',
|
|
343
|
+
'Right to erasure',
|
|
344
|
+
'Data portability',
|
|
345
|
+
'Consent management',
|
|
346
|
+
'Breach notification',
|
|
347
|
+
],
|
|
348
|
+
controls_mapped: 42,
|
|
349
|
+
},
|
|
350
|
+
HIPAA: {
|
|
351
|
+
name: 'Health Insurance Portability and Accountability Act',
|
|
352
|
+
region: 'US',
|
|
353
|
+
requirements: [
|
|
354
|
+
'PHI protection',
|
|
355
|
+
'Access controls',
|
|
356
|
+
'Audit logging',
|
|
357
|
+
'Encryption in transit and at rest',
|
|
358
|
+
'Minimum necessary access',
|
|
359
|
+
'Business associate agreements',
|
|
360
|
+
],
|
|
361
|
+
controls_mapped: 38,
|
|
362
|
+
},
|
|
363
|
+
SOC2: {
|
|
364
|
+
name: 'Service Organization Control 2',
|
|
365
|
+
region: 'Global',
|
|
366
|
+
requirements: [
|
|
367
|
+
'Security controls',
|
|
368
|
+
'Availability controls',
|
|
369
|
+
'Processing integrity',
|
|
370
|
+
'Confidentiality',
|
|
371
|
+
'Privacy',
|
|
372
|
+
],
|
|
373
|
+
controls_mapped: 56,
|
|
374
|
+
},
|
|
375
|
+
'PCI-DSS': {
|
|
376
|
+
name: 'Payment Card Industry Data Security Standard',
|
|
377
|
+
region: 'Global',
|
|
378
|
+
requirements: [
|
|
379
|
+
'Network security',
|
|
380
|
+
'Cardholder data protection',
|
|
381
|
+
'Vulnerability management',
|
|
382
|
+
'Access control',
|
|
383
|
+
'Monitoring and testing',
|
|
384
|
+
'Security policy',
|
|
385
|
+
],
|
|
386
|
+
controls_mapped: 45,
|
|
387
|
+
},
|
|
388
|
+
CCPA: {
|
|
389
|
+
name: 'California Consumer Privacy Act',
|
|
390
|
+
region: 'US-CA',
|
|
391
|
+
requirements: [
|
|
392
|
+
'Right to know',
|
|
393
|
+
'Right to delete',
|
|
394
|
+
'Right to opt-out',
|
|
395
|
+
'Non-discrimination',
|
|
396
|
+
'Data collection disclosure',
|
|
397
|
+
],
|
|
398
|
+
controls_mapped: 28,
|
|
399
|
+
},
|
|
400
|
+
},
|
|
401
|
+
};
|
|
402
|
+
// =============================================================================
|
|
403
|
+
// Server Implementation
|
|
404
|
+
// =============================================================================
|
|
405
|
+
class SafeKeyLabEnterpriseServer {
|
|
406
|
+
server;
|
|
407
|
+
constructor() {
|
|
408
|
+
this.server = new Server({
|
|
409
|
+
name: 'safekeylab-enterprise',
|
|
410
|
+
version: '1.0.0',
|
|
411
|
+
}, {
|
|
412
|
+
capabilities: {
|
|
413
|
+
tools: {},
|
|
414
|
+
resources: {},
|
|
415
|
+
},
|
|
416
|
+
});
|
|
417
|
+
this.setupHandlers();
|
|
418
|
+
}
|
|
419
|
+
setupHandlers() {
|
|
420
|
+
// List available tools
|
|
421
|
+
this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
422
|
+
tools: TOOLS,
|
|
423
|
+
}));
|
|
424
|
+
// List available resources
|
|
425
|
+
this.server.setRequestHandler(ListResourcesRequestSchema, async () => ({
|
|
426
|
+
resources: RESOURCES,
|
|
427
|
+
}));
|
|
428
|
+
// Handle resource reads
|
|
429
|
+
this.server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
430
|
+
const { uri } = request.params;
|
|
431
|
+
switch (uri) {
|
|
432
|
+
case 'safekeylab://enterprise/agent-policies':
|
|
433
|
+
return {
|
|
434
|
+
contents: [{
|
|
435
|
+
uri,
|
|
436
|
+
mimeType: 'application/json',
|
|
437
|
+
text: JSON.stringify(AGENT_POLICIES_DATA, null, 2),
|
|
438
|
+
}],
|
|
439
|
+
};
|
|
440
|
+
case 'safekeylab://enterprise/rag-policies':
|
|
441
|
+
return {
|
|
442
|
+
contents: [{
|
|
443
|
+
uri,
|
|
444
|
+
mimeType: 'application/json',
|
|
445
|
+
text: JSON.stringify(RAG_POLICIES_DATA, null, 2),
|
|
446
|
+
}],
|
|
447
|
+
};
|
|
448
|
+
case 'safekeylab://enterprise/compliance-frameworks':
|
|
449
|
+
return {
|
|
450
|
+
contents: [{
|
|
451
|
+
uri,
|
|
452
|
+
mimeType: 'application/json',
|
|
453
|
+
text: JSON.stringify(COMPLIANCE_FRAMEWORKS_DATA, null, 2),
|
|
454
|
+
}],
|
|
455
|
+
};
|
|
456
|
+
case 'safekeylab://enterprise/audit-summary':
|
|
457
|
+
try {
|
|
458
|
+
const client = getClient();
|
|
459
|
+
const trail = await client.getAuditTrail({ limit: 10 });
|
|
460
|
+
return {
|
|
461
|
+
contents: [{
|
|
462
|
+
uri,
|
|
463
|
+
mimeType: 'application/json',
|
|
464
|
+
text: JSON.stringify({
|
|
465
|
+
recent_entries: trail.entries.length,
|
|
466
|
+
total_entries: trail.total_count,
|
|
467
|
+
period: `${trail.start_date} to ${trail.end_date}`,
|
|
468
|
+
entries: trail.entries,
|
|
469
|
+
}, null, 2),
|
|
470
|
+
}],
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
catch (error) {
|
|
474
|
+
return {
|
|
475
|
+
contents: [{
|
|
476
|
+
uri,
|
|
477
|
+
mimeType: 'application/json',
|
|
478
|
+
text: JSON.stringify({
|
|
479
|
+
error: 'Unable to fetch audit summary',
|
|
480
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
481
|
+
}, null, 2),
|
|
482
|
+
}],
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
case 'safekeylab://enterprise/subscription':
|
|
486
|
+
try {
|
|
487
|
+
const client = getClient();
|
|
488
|
+
const info = await client.getSubscriptionInfo();
|
|
489
|
+
return {
|
|
490
|
+
contents: [{
|
|
491
|
+
uri,
|
|
492
|
+
mimeType: 'application/json',
|
|
493
|
+
text: JSON.stringify(info, null, 2),
|
|
494
|
+
}],
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
catch (error) {
|
|
498
|
+
return {
|
|
499
|
+
contents: [{
|
|
500
|
+
uri,
|
|
501
|
+
mimeType: 'application/json',
|
|
502
|
+
text: JSON.stringify({
|
|
503
|
+
error: 'Unable to fetch subscription info',
|
|
504
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
505
|
+
}, null, 2),
|
|
506
|
+
}],
|
|
507
|
+
};
|
|
508
|
+
}
|
|
509
|
+
default:
|
|
510
|
+
throw new McpError(ErrorCode.InvalidRequest, `Unknown resource: ${uri}`);
|
|
511
|
+
}
|
|
512
|
+
});
|
|
513
|
+
// Handle tool calls
|
|
514
|
+
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
515
|
+
const { name, arguments: args } = request.params;
|
|
516
|
+
try {
|
|
517
|
+
const client = getClient();
|
|
518
|
+
switch (name) {
|
|
519
|
+
case 'validate_agent_action': {
|
|
520
|
+
const parsed = ValidateAgentActionSchema.parse(args);
|
|
521
|
+
const result = await client.validateAgentAction({
|
|
522
|
+
tool_name: parsed.tool_name,
|
|
523
|
+
tool_args: parsed.tool_args,
|
|
524
|
+
agent_id: parsed.agent_id,
|
|
525
|
+
session_id: parsed.session_id,
|
|
526
|
+
});
|
|
527
|
+
let output = `Agent Action Validation\n${'='.repeat(40)}\n\n`;
|
|
528
|
+
output += `Tool: ${parsed.tool_name}\n`;
|
|
529
|
+
output += `Allowed: ${result.allowed ? 'YES' : 'NO'}\n`;
|
|
530
|
+
output += `Risk Score: ${(result.risk_score * 100).toFixed(1)}%\n\n`;
|
|
531
|
+
if (result.policy_violations.length > 0) {
|
|
532
|
+
output += `Policy Violations:\n`;
|
|
533
|
+
for (const violation of result.policy_violations) {
|
|
534
|
+
output += ` [${violation.severity.toUpperCase()}] ${violation.policy_name}\n`;
|
|
535
|
+
output += ` ${violation.description}\n`;
|
|
536
|
+
}
|
|
537
|
+
output += '\n';
|
|
538
|
+
}
|
|
539
|
+
if (result.recommendations.length > 0) {
|
|
540
|
+
output += `Recommendations:\n`;
|
|
541
|
+
for (const rec of result.recommendations) {
|
|
542
|
+
output += ` - ${rec}\n`;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
return {
|
|
546
|
+
content: [{
|
|
547
|
+
type: 'text',
|
|
548
|
+
text: output,
|
|
549
|
+
}],
|
|
550
|
+
};
|
|
551
|
+
}
|
|
552
|
+
case 'check_agent_policy': {
|
|
553
|
+
const parsed = CheckAgentPolicySchema.parse(args);
|
|
554
|
+
const result = await client.checkAgentPolicy(parsed.action, parsed.policy_id);
|
|
555
|
+
return {
|
|
556
|
+
content: [{
|
|
557
|
+
type: 'text',
|
|
558
|
+
text: JSON.stringify(result, null, 2),
|
|
559
|
+
}],
|
|
560
|
+
};
|
|
561
|
+
}
|
|
562
|
+
case 'filter_rag_context': {
|
|
563
|
+
const parsed = FilterRAGContextSchema.parse(args);
|
|
564
|
+
const result = await client.filterRAGContext({ chunks: parsed.chunks }, {
|
|
565
|
+
filterPII: parsed.filter_pii,
|
|
566
|
+
filterSensitive: parsed.filter_sensitive,
|
|
567
|
+
});
|
|
568
|
+
let output = `RAG Context Filtering\n${'='.repeat(40)}\n\n`;
|
|
569
|
+
output += `Chunks Processed: ${parsed.chunks.length}\n`;
|
|
570
|
+
output += `PII Entities Removed: ${result.pii_removed}\n`;
|
|
571
|
+
output += `Sensitive Items Removed: ${result.sensitive_removed}\n`;
|
|
572
|
+
output += `Processing Time: ${result.processing_time_ms}ms\n\n`;
|
|
573
|
+
output += `Filtered Chunks:\n`;
|
|
574
|
+
for (let i = 0; i < result.filtered_chunks.length; i++) {
|
|
575
|
+
const chunk = result.filtered_chunks[i];
|
|
576
|
+
output += `\n[Chunk ${i + 1}]\n`;
|
|
577
|
+
output += `${chunk.filtered_content.substring(0, 200)}${chunk.filtered_content.length > 200 ? '...' : ''}\n`;
|
|
578
|
+
if (chunk.pii_entities.length > 0) {
|
|
579
|
+
output += ` (${chunk.pii_entities.length} PII entities redacted)\n`;
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
return {
|
|
583
|
+
content: [{
|
|
584
|
+
type: 'text',
|
|
585
|
+
text: output,
|
|
586
|
+
}],
|
|
587
|
+
};
|
|
588
|
+
}
|
|
589
|
+
case 'scan_ingestion': {
|
|
590
|
+
const parsed = ScanIngestionSchema.parse(args);
|
|
591
|
+
const result = await client.scanIngestion(parsed.document, parsed.document_type);
|
|
592
|
+
let output = `Ingestion Scan Results\n${'='.repeat(40)}\n\n`;
|
|
593
|
+
output += `Document ID: ${result.document_id}\n`;
|
|
594
|
+
output += `Safe to Ingest: ${result.safe_to_ingest ? 'YES' : 'NO'}\n\n`;
|
|
595
|
+
if (result.pii_found.length > 0) {
|
|
596
|
+
output += `PII Found: ${result.pii_found.length} entities\n`;
|
|
597
|
+
for (const pii of result.pii_found.slice(0, 5)) {
|
|
598
|
+
output += ` - ${pii.type}: "${pii.value.substring(0, 10)}..." (${(pii.confidence * 100).toFixed(0)}%)\n`;
|
|
599
|
+
}
|
|
600
|
+
if (result.pii_found.length > 5) {
|
|
601
|
+
output += ` ... and ${result.pii_found.length - 5} more\n`;
|
|
602
|
+
}
|
|
603
|
+
output += '\n';
|
|
604
|
+
}
|
|
605
|
+
if (result.sensitive_content.length > 0) {
|
|
606
|
+
output += `Sensitive Content:\n`;
|
|
607
|
+
for (const item of result.sensitive_content) {
|
|
608
|
+
output += ` [${item.severity.toUpperCase()}] ${item.type}: ${item.description}\n`;
|
|
609
|
+
}
|
|
610
|
+
output += '\n';
|
|
611
|
+
}
|
|
612
|
+
if (result.recommendations.length > 0) {
|
|
613
|
+
output += `Recommendations:\n`;
|
|
614
|
+
for (const rec of result.recommendations) {
|
|
615
|
+
output += ` - ${rec}\n`;
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
return {
|
|
619
|
+
content: [{
|
|
620
|
+
type: 'text',
|
|
621
|
+
text: output,
|
|
622
|
+
}],
|
|
623
|
+
};
|
|
624
|
+
}
|
|
625
|
+
case 'generate_compliance_report': {
|
|
626
|
+
const parsed = GenerateComplianceReportSchema.parse(args);
|
|
627
|
+
const result = await client.generateComplianceReport(parsed.framework, parsed.days);
|
|
628
|
+
let output = `${parsed.framework} Compliance Report\n${'='.repeat(50)}\n\n`;
|
|
629
|
+
output += `Status: ${result.status.toUpperCase()}\n`;
|
|
630
|
+
output += `Score: ${result.score}/100\n`;
|
|
631
|
+
output += `Period: ${result.period_days} days\n`;
|
|
632
|
+
output += `Generated: ${result.generated_at}\n\n`;
|
|
633
|
+
if (result.findings.length > 0) {
|
|
634
|
+
output += `Findings (${result.findings.length}):\n`;
|
|
635
|
+
for (const finding of result.findings) {
|
|
636
|
+
output += `\n [${finding.severity.toUpperCase()}] ${finding.category}\n`;
|
|
637
|
+
output += ` ${finding.description}\n`;
|
|
638
|
+
output += ` Recommendation: ${finding.recommendation}\n`;
|
|
639
|
+
}
|
|
640
|
+
output += '\n';
|
|
641
|
+
}
|
|
642
|
+
output += `Evidence Items: ${result.evidence.length}\n`;
|
|
643
|
+
return {
|
|
644
|
+
content: [{
|
|
645
|
+
type: 'text',
|
|
646
|
+
text: output,
|
|
647
|
+
}],
|
|
648
|
+
};
|
|
649
|
+
}
|
|
650
|
+
case 'get_audit_trail': {
|
|
651
|
+
const parsed = GetAuditTrailSchema.parse(args);
|
|
652
|
+
const result = await client.getAuditTrail({
|
|
653
|
+
startDate: parsed.start_date,
|
|
654
|
+
endDate: parsed.end_date,
|
|
655
|
+
actionType: parsed.action_type,
|
|
656
|
+
limit: parsed.limit,
|
|
657
|
+
});
|
|
658
|
+
let output = `Audit Trail\n${'='.repeat(40)}\n\n`;
|
|
659
|
+
output += `Period: ${result.start_date} to ${result.end_date}\n`;
|
|
660
|
+
output += `Total Entries: ${result.total_count}\n`;
|
|
661
|
+
output += `Showing: ${result.entries.length}\n\n`;
|
|
662
|
+
for (const entry of result.entries) {
|
|
663
|
+
output += `[${entry.timestamp}] ${entry.action_type}\n`;
|
|
664
|
+
output += ` Resource: ${entry.resource}\n`;
|
|
665
|
+
output += ` Outcome: ${entry.outcome}\n`;
|
|
666
|
+
if (entry.user_id)
|
|
667
|
+
output += ` User: ${entry.user_id}\n`;
|
|
668
|
+
output += '\n';
|
|
669
|
+
}
|
|
670
|
+
return {
|
|
671
|
+
content: [{
|
|
672
|
+
type: 'text',
|
|
673
|
+
text: output,
|
|
674
|
+
}],
|
|
675
|
+
};
|
|
676
|
+
}
|
|
677
|
+
case 'check_compliance_status': {
|
|
678
|
+
const parsed = CheckComplianceStatusSchema.parse(args);
|
|
679
|
+
const result = await client.checkComplianceStatus(parsed.framework);
|
|
680
|
+
const status = result.compliant ? 'COMPLIANT' : 'NON-COMPLIANT';
|
|
681
|
+
const emoji = result.compliant ? '✓' : '✗';
|
|
682
|
+
return {
|
|
683
|
+
content: [{
|
|
684
|
+
type: 'text',
|
|
685
|
+
text: `${parsed.framework} Compliance: ${emoji} ${status}\nScore: ${result.score}/100`,
|
|
686
|
+
}],
|
|
687
|
+
};
|
|
688
|
+
}
|
|
689
|
+
case 'get_review_queue': {
|
|
690
|
+
const parsed = GetReviewQueueSchema.parse(args);
|
|
691
|
+
const items = await client.getReviewQueue({
|
|
692
|
+
limit: parsed.limit,
|
|
693
|
+
priority: parsed.priority,
|
|
694
|
+
});
|
|
695
|
+
if (items.length === 0) {
|
|
696
|
+
return {
|
|
697
|
+
content: [{
|
|
698
|
+
type: 'text',
|
|
699
|
+
text: 'Review queue is empty. No items pending review.',
|
|
700
|
+
}],
|
|
701
|
+
};
|
|
702
|
+
}
|
|
703
|
+
let output = `Review Queue (${items.length} items)\n${'='.repeat(40)}\n\n`;
|
|
704
|
+
for (const item of items) {
|
|
705
|
+
output += `[${item.item_id}] ${item.content_type}\n`;
|
|
706
|
+
output += ` Priority: ${item.priority.toUpperCase()}\n`;
|
|
707
|
+
output += ` Confidence: ${(item.confidence * 100).toFixed(1)}%\n`;
|
|
708
|
+
output += ` Status: ${item.status}\n`;
|
|
709
|
+
output += ` Created: ${item.created_at}\n`;
|
|
710
|
+
output += ` Content: "${item.content.substring(0, 100)}..."\n\n`;
|
|
711
|
+
}
|
|
712
|
+
return {
|
|
713
|
+
content: [{
|
|
714
|
+
type: 'text',
|
|
715
|
+
text: output,
|
|
716
|
+
}],
|
|
717
|
+
};
|
|
718
|
+
}
|
|
719
|
+
case 'submit_review_decision': {
|
|
720
|
+
const parsed = SubmitReviewDecisionSchema.parse(args);
|
|
721
|
+
const result = await client.submitReviewDecision({
|
|
722
|
+
item_id: parsed.item_id,
|
|
723
|
+
decision: parsed.decision,
|
|
724
|
+
reason: parsed.reason,
|
|
725
|
+
});
|
|
726
|
+
return {
|
|
727
|
+
content: [{
|
|
728
|
+
type: 'text',
|
|
729
|
+
text: `Review decision submitted.\nItem: ${parsed.item_id}\nDecision: ${parsed.decision.toUpperCase()}\nStatus: ${result.status}`,
|
|
730
|
+
}],
|
|
731
|
+
};
|
|
732
|
+
}
|
|
733
|
+
case 'get_subscription_info': {
|
|
734
|
+
const result = await client.getSubscriptionInfo();
|
|
735
|
+
let output = `Subscription Info\n${'='.repeat(40)}\n\n`;
|
|
736
|
+
output += `Tier: ${result.tier.toUpperCase()}\n`;
|
|
737
|
+
output += `Usage: ${result.requests_used} / ${result.requests_limit} requests\n`;
|
|
738
|
+
output += `Usage %: ${((result.requests_used / result.requests_limit) * 100).toFixed(1)}%\n\n`;
|
|
739
|
+
output += `Features:\n`;
|
|
740
|
+
for (const feature of result.features) {
|
|
741
|
+
output += ` ✓ ${feature}\n`;
|
|
742
|
+
}
|
|
743
|
+
if (result.expires_at) {
|
|
744
|
+
output += `\nExpires: ${result.expires_at}\n`;
|
|
745
|
+
}
|
|
746
|
+
return {
|
|
747
|
+
content: [{
|
|
748
|
+
type: 'text',
|
|
749
|
+
text: output,
|
|
750
|
+
}],
|
|
751
|
+
};
|
|
752
|
+
}
|
|
753
|
+
default:
|
|
754
|
+
throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
catch (error) {
|
|
758
|
+
if (error instanceof z.ZodError) {
|
|
759
|
+
throw new McpError(ErrorCode.InvalidParams, `Invalid parameters: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}`);
|
|
760
|
+
}
|
|
761
|
+
if (error instanceof SafeKeyLabError) {
|
|
762
|
+
throw new McpError(ErrorCode.InternalError, `API error: ${error.message}`);
|
|
763
|
+
}
|
|
764
|
+
if (error instanceof McpError)
|
|
765
|
+
throw error;
|
|
766
|
+
throw new McpError(ErrorCode.InternalError, `Unexpected error: ${error instanceof Error ? error.message : 'Unknown'}`);
|
|
767
|
+
}
|
|
768
|
+
});
|
|
769
|
+
}
|
|
770
|
+
async run() {
|
|
771
|
+
const transport = new StdioServerTransport();
|
|
772
|
+
await this.server.connect(transport);
|
|
773
|
+
console.error('SafeKeyLab Enterprise MCP Server running on stdio');
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
// =============================================================================
|
|
777
|
+
// Main Entry Point
|
|
778
|
+
// =============================================================================
|
|
779
|
+
const server = new SafeKeyLabEnterpriseServer();
|
|
780
|
+
server.run().catch(console.error);
|
|
781
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@safekeylab/mcp-enterprise",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "SafeKeyLab Enterprise MCP Server - Agent Security, RAG Protection, and Compliance",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"safekeylab-mcp-enterprise": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"files": ["dist"],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"clean": "rm -rf dist",
|
|
15
|
+
"start": "node dist/index.js",
|
|
16
|
+
"prepublishOnly": "npm run build"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
20
|
+
"@safekeylab/mcp-core": "^1.0.0",
|
|
21
|
+
"zod": "^3.22.0"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@types/node": "^20.10.0",
|
|
25
|
+
"typescript": "^5.3.0"
|
|
26
|
+
},
|
|
27
|
+
"author": "SafeKey Lab Inc.",
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "https://github.com/SafeKeylab/safekeylab-mcp.git",
|
|
32
|
+
"directory": "packages/mcp-enterprise"
|
|
33
|
+
},
|
|
34
|
+
"keywords": [
|
|
35
|
+
"safekeylab",
|
|
36
|
+
"mcp",
|
|
37
|
+
"model-context-protocol",
|
|
38
|
+
"agent-security",
|
|
39
|
+
"rag-security",
|
|
40
|
+
"compliance",
|
|
41
|
+
"gdpr",
|
|
42
|
+
"hipaa",
|
|
43
|
+
"soc2",
|
|
44
|
+
"audit-trail"
|
|
45
|
+
]
|
|
46
|
+
}
|