@inkog-io/mcp 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/LICENSE +190 -0
- package/README.md +265 -0
- package/dist/api/client.d.ts +108 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +288 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/types.d.ts +286 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +21 -0
- package/dist/api/types.js.map +1 -0
- package/dist/config.d.ts +68 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +130 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +203 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/audit-a2a.d.ts +20 -0
- package/dist/tools/audit-a2a.d.ts.map +1 -0
- package/dist/tools/audit-a2a.js +382 -0
- package/dist/tools/audit-a2a.js.map +1 -0
- package/dist/tools/audit-mcp.d.ts +16 -0
- package/dist/tools/audit-mcp.d.ts.map +1 -0
- package/dist/tools/audit-mcp.js +259 -0
- package/dist/tools/audit-mcp.js.map +1 -0
- package/dist/tools/compliance.d.ts +14 -0
- package/dist/tools/compliance.d.ts.map +1 -0
- package/dist/tools/compliance.js +255 -0
- package/dist/tools/compliance.js.map +1 -0
- package/dist/tools/explain.d.ts +14 -0
- package/dist/tools/explain.d.ts.map +1 -0
- package/dist/tools/explain.js +202 -0
- package/dist/tools/explain.js.map +1 -0
- package/dist/tools/governance.d.ts +16 -0
- package/dist/tools/governance.d.ts.map +1 -0
- package/dist/tools/governance.js +200 -0
- package/dist/tools/governance.js.map +1 -0
- package/dist/tools/index.d.ts +50 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +94 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/mlbom.d.ts +18 -0
- package/dist/tools/mlbom.d.ts.map +1 -0
- package/dist/tools/mlbom.js +344 -0
- package/dist/tools/mlbom.js.map +1 -0
- package/dist/tools/scan.d.ts +15 -0
- package/dist/tools/scan.d.ts.map +1 -0
- package/dist/tools/scan.js +270 -0
- package/dist/tools/scan.js.map +1 -0
- package/dist/utils/file-reader.d.ts +55 -0
- package/dist/utils/file-reader.d.ts.map +1 -0
- package/dist/utils/file-reader.js +269 -0
- package/dist/utils/file-reader.js.map +1 -0
- package/package.json +64 -0
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inkog MCP Server Configuration
|
|
3
|
+
*
|
|
4
|
+
* All configuration is externalized - no hardcoded values.
|
|
5
|
+
* Uses environment variables with sensible defaults.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
/**
|
|
9
|
+
* Configuration schema with validation
|
|
10
|
+
*/
|
|
11
|
+
declare const ConfigSchema: z.ZodObject<{
|
|
12
|
+
apiBaseUrl: z.ZodDefault<z.ZodString>;
|
|
13
|
+
apiVersion: z.ZodDefault<z.ZodString>;
|
|
14
|
+
apiTimeout: z.ZodDefault<z.ZodNumber>;
|
|
15
|
+
apiRetryAttempts: z.ZodDefault<z.ZodNumber>;
|
|
16
|
+
apiRetryDelay: z.ZodDefault<z.ZodNumber>;
|
|
17
|
+
serverName: z.ZodDefault<z.ZodString>;
|
|
18
|
+
serverVersion: z.ZodDefault<z.ZodString>;
|
|
19
|
+
enableMcpAudit: z.ZodDefault<z.ZodBoolean>;
|
|
20
|
+
enableMlbom: z.ZodDefault<z.ZodBoolean>;
|
|
21
|
+
enableA2a: z.ZodDefault<z.ZodBoolean>;
|
|
22
|
+
logLevel: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
|
|
23
|
+
logFormat: z.ZodDefault<z.ZodEnum<["json", "text"]>>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
apiBaseUrl: string;
|
|
26
|
+
apiVersion: string;
|
|
27
|
+
apiTimeout: number;
|
|
28
|
+
apiRetryAttempts: number;
|
|
29
|
+
apiRetryDelay: number;
|
|
30
|
+
serverName: string;
|
|
31
|
+
serverVersion: string;
|
|
32
|
+
enableMcpAudit: boolean;
|
|
33
|
+
enableMlbom: boolean;
|
|
34
|
+
enableA2a: boolean;
|
|
35
|
+
logLevel: "debug" | "info" | "warn" | "error";
|
|
36
|
+
logFormat: "json" | "text";
|
|
37
|
+
}, {
|
|
38
|
+
apiBaseUrl?: string | undefined;
|
|
39
|
+
apiVersion?: string | undefined;
|
|
40
|
+
apiTimeout?: number | undefined;
|
|
41
|
+
apiRetryAttempts?: number | undefined;
|
|
42
|
+
apiRetryDelay?: number | undefined;
|
|
43
|
+
serverName?: string | undefined;
|
|
44
|
+
serverVersion?: string | undefined;
|
|
45
|
+
enableMcpAudit?: boolean | undefined;
|
|
46
|
+
enableMlbom?: boolean | undefined;
|
|
47
|
+
enableA2a?: boolean | undefined;
|
|
48
|
+
logLevel?: "debug" | "info" | "warn" | "error" | undefined;
|
|
49
|
+
logFormat?: "json" | "text" | undefined;
|
|
50
|
+
}>;
|
|
51
|
+
export type Config = z.infer<typeof ConfigSchema>;
|
|
52
|
+
/**
|
|
53
|
+
* Create configuration with defaults and environment overrides
|
|
54
|
+
*/
|
|
55
|
+
export declare function createConfig(overrides?: Partial<Config>): Config;
|
|
56
|
+
/**
|
|
57
|
+
* Get the API key from environment
|
|
58
|
+
* Returns undefined if not set (API client will handle the error)
|
|
59
|
+
*/
|
|
60
|
+
export declare function getApiKey(): string | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Build full API endpoint URL
|
|
63
|
+
*/
|
|
64
|
+
export declare function buildApiUrl(config: Config, path: string): string;
|
|
65
|
+
export declare function getConfig(): Config;
|
|
66
|
+
export declare function resetConfig(): void;
|
|
67
|
+
export {};
|
|
68
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBhB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAgFlD;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAWhE;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKhE;AAOD,wBAAgB,SAAS,IAAI,MAAM,CAGlC;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inkog MCP Server Configuration
|
|
3
|
+
*
|
|
4
|
+
* All configuration is externalized - no hardcoded values.
|
|
5
|
+
* Uses environment variables with sensible defaults.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
/**
|
|
9
|
+
* Configuration schema with validation
|
|
10
|
+
*/
|
|
11
|
+
const ConfigSchema = z.object({
|
|
12
|
+
// API Configuration
|
|
13
|
+
apiBaseUrl: z.string().url().default('https://api.inkog.io'),
|
|
14
|
+
apiVersion: z.string().default('v1'),
|
|
15
|
+
apiTimeout: z.number().positive().default(30000),
|
|
16
|
+
apiRetryAttempts: z.number().int().min(0).max(10).default(3),
|
|
17
|
+
apiRetryDelay: z.number().positive().default(1000),
|
|
18
|
+
// MCP Server Configuration
|
|
19
|
+
serverName: z.string().default('inkog'),
|
|
20
|
+
serverVersion: z.string().default('1.0.0'),
|
|
21
|
+
// Feature Flags
|
|
22
|
+
enableMcpAudit: z.boolean().default(true),
|
|
23
|
+
enableMlbom: z.boolean().default(true),
|
|
24
|
+
enableA2a: z.boolean().default(true),
|
|
25
|
+
// Logging
|
|
26
|
+
logLevel: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
|
|
27
|
+
logFormat: z.enum(['json', 'text']).default('json'),
|
|
28
|
+
});
|
|
29
|
+
/**
|
|
30
|
+
* Load configuration from environment variables
|
|
31
|
+
*/
|
|
32
|
+
function loadFromEnvironment() {
|
|
33
|
+
const config = {};
|
|
34
|
+
const apiUrl = process.env.INKOG_API_URL;
|
|
35
|
+
if (apiUrl !== undefined) {
|
|
36
|
+
config.apiBaseUrl = apiUrl;
|
|
37
|
+
}
|
|
38
|
+
const apiVersion = process.env.INKOG_API_VERSION;
|
|
39
|
+
if (apiVersion !== undefined) {
|
|
40
|
+
config.apiVersion = apiVersion;
|
|
41
|
+
}
|
|
42
|
+
const apiTimeout = process.env.INKOG_API_TIMEOUT;
|
|
43
|
+
if (apiTimeout !== undefined) {
|
|
44
|
+
config.apiTimeout = parseInt(apiTimeout, 10);
|
|
45
|
+
}
|
|
46
|
+
const retryAttempts = process.env.INKOG_API_RETRY_ATTEMPTS;
|
|
47
|
+
if (retryAttempts !== undefined) {
|
|
48
|
+
config.apiRetryAttempts = parseInt(retryAttempts, 10);
|
|
49
|
+
}
|
|
50
|
+
const retryDelay = process.env.INKOG_API_RETRY_DELAY;
|
|
51
|
+
if (retryDelay !== undefined) {
|
|
52
|
+
config.apiRetryDelay = parseInt(retryDelay, 10);
|
|
53
|
+
}
|
|
54
|
+
const serverName = process.env.INKOG_SERVER_NAME;
|
|
55
|
+
if (serverName !== undefined) {
|
|
56
|
+
config.serverName = serverName;
|
|
57
|
+
}
|
|
58
|
+
const serverVersion = process.env.INKOG_SERVER_VERSION;
|
|
59
|
+
if (serverVersion !== undefined) {
|
|
60
|
+
config.serverVersion = serverVersion;
|
|
61
|
+
}
|
|
62
|
+
const enableMcpAudit = process.env.INKOG_ENABLE_MCP_AUDIT;
|
|
63
|
+
if (enableMcpAudit !== undefined) {
|
|
64
|
+
config.enableMcpAudit = enableMcpAudit === 'true';
|
|
65
|
+
}
|
|
66
|
+
const enableMlbom = process.env.INKOG_ENABLE_MLBOM;
|
|
67
|
+
if (enableMlbom !== undefined) {
|
|
68
|
+
config.enableMlbom = enableMlbom === 'true';
|
|
69
|
+
}
|
|
70
|
+
const enableA2a = process.env.INKOG_ENABLE_A2A;
|
|
71
|
+
if (enableA2a !== undefined) {
|
|
72
|
+
config.enableA2a = enableA2a === 'true';
|
|
73
|
+
}
|
|
74
|
+
const logLevel = process.env.INKOG_LOG_LEVEL;
|
|
75
|
+
if (logLevel !== undefined) {
|
|
76
|
+
config.logLevel = logLevel;
|
|
77
|
+
}
|
|
78
|
+
const logFormat = process.env.INKOG_LOG_FORMAT;
|
|
79
|
+
if (logFormat !== undefined) {
|
|
80
|
+
config.logFormat = logFormat;
|
|
81
|
+
}
|
|
82
|
+
return config;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Remove undefined values from object
|
|
86
|
+
*/
|
|
87
|
+
function filterDefined(obj) {
|
|
88
|
+
return Object.fromEntries(Object.entries(obj).filter(([, v]) => v !== undefined));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create configuration with defaults and environment overrides
|
|
92
|
+
*/
|
|
93
|
+
export function createConfig(overrides) {
|
|
94
|
+
const envConfig = loadFromEnvironment();
|
|
95
|
+
const overrideConfig = overrides !== undefined ? filterDefined(overrides) : {};
|
|
96
|
+
const merged = { ...envConfig, ...overrideConfig };
|
|
97
|
+
const result = ConfigSchema.safeParse(merged);
|
|
98
|
+
if (!result.success) {
|
|
99
|
+
throw new Error(`Invalid configuration: ${result.error.message}`);
|
|
100
|
+
}
|
|
101
|
+
return result.data;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Get the API key from environment
|
|
105
|
+
* Returns undefined if not set (API client will handle the error)
|
|
106
|
+
*/
|
|
107
|
+
export function getApiKey() {
|
|
108
|
+
return process.env.INKOG_API_KEY;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Build full API endpoint URL
|
|
112
|
+
*/
|
|
113
|
+
export function buildApiUrl(config, path) {
|
|
114
|
+
const baseUrl = config.apiBaseUrl.replace(/\/$/, '');
|
|
115
|
+
const version = config.apiVersion;
|
|
116
|
+
const cleanPath = path.replace(/^\//, '');
|
|
117
|
+
return `${baseUrl}/${version}/${cleanPath}`;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Default configuration singleton
|
|
121
|
+
*/
|
|
122
|
+
let defaultConfig = null;
|
|
123
|
+
export function getConfig() {
|
|
124
|
+
defaultConfig ??= createConfig();
|
|
125
|
+
return defaultConfig;
|
|
126
|
+
}
|
|
127
|
+
export function resetConfig() {
|
|
128
|
+
defaultConfig = null;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Inkog MCP Server
|
|
4
|
+
*
|
|
5
|
+
* AI Security Platform for the Agentic Era
|
|
6
|
+
*
|
|
7
|
+
* This MCP server provides AI agent security capabilities:
|
|
8
|
+
* - Vulnerability scanning (prompt injection, infinite loops, token bombing)
|
|
9
|
+
* - AGENTS.md governance verification
|
|
10
|
+
* - Compliance reporting (EU AI Act, NIST, OWASP)
|
|
11
|
+
* - MCP server security auditing
|
|
12
|
+
* - ML Bill of Materials (MLBOM) generation
|
|
13
|
+
* - Agent-to-Agent communication security
|
|
14
|
+
*
|
|
15
|
+
* @author Inkog.io
|
|
16
|
+
* @license Apache-2.0
|
|
17
|
+
*/
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Inkog MCP Server
|
|
4
|
+
*
|
|
5
|
+
* AI Security Platform for the Agentic Era
|
|
6
|
+
*
|
|
7
|
+
* This MCP server provides AI agent security capabilities:
|
|
8
|
+
* - Vulnerability scanning (prompt injection, infinite loops, token bombing)
|
|
9
|
+
* - AGENTS.md governance verification
|
|
10
|
+
* - Compliance reporting (EU AI Act, NIST, OWASP)
|
|
11
|
+
* - MCP server security auditing
|
|
12
|
+
* - ML Bill of Materials (MLBOM) generation
|
|
13
|
+
* - Agent-to-Agent communication security
|
|
14
|
+
*
|
|
15
|
+
* @author Inkog.io
|
|
16
|
+
* @license Apache-2.0
|
|
17
|
+
*/
|
|
18
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
19
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
20
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
21
|
+
import { getConfig, getApiKey } from './config.js';
|
|
22
|
+
import { callTool, getToolList, registeredToolCount } from './tools/index.js';
|
|
23
|
+
// =============================================================================
|
|
24
|
+
// Server Setup
|
|
25
|
+
// =============================================================================
|
|
26
|
+
const config = getConfig();
|
|
27
|
+
/**
|
|
28
|
+
* Create and configure the MCP server
|
|
29
|
+
* Note: Using Server (not McpServer) for advanced request handling capabilities
|
|
30
|
+
*/
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
32
|
+
function createServer() {
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
34
|
+
const server = new Server({
|
|
35
|
+
name: config.serverName,
|
|
36
|
+
version: config.serverVersion,
|
|
37
|
+
}, {
|
|
38
|
+
capabilities: {
|
|
39
|
+
tools: {},
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
// Request Handlers
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
/**
|
|
46
|
+
* Handle tool listing requests
|
|
47
|
+
*/
|
|
48
|
+
server.setRequestHandler(ListToolsRequestSchema, () => {
|
|
49
|
+
const tools = getToolList();
|
|
50
|
+
// Log tool count in debug mode
|
|
51
|
+
if (config.logLevel === 'debug') {
|
|
52
|
+
logDebug('ListTools', `Returning ${tools.length} tools`);
|
|
53
|
+
}
|
|
54
|
+
return { tools };
|
|
55
|
+
});
|
|
56
|
+
/**
|
|
57
|
+
* Handle tool execution requests
|
|
58
|
+
*/
|
|
59
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
60
|
+
const { name, arguments: args } = request.params;
|
|
61
|
+
// Log tool call in debug mode
|
|
62
|
+
if (config.logLevel === 'debug') {
|
|
63
|
+
logDebug('CallTool', `Executing tool: ${name}`);
|
|
64
|
+
}
|
|
65
|
+
// Execute the tool
|
|
66
|
+
const result = await callTool(name, args ?? {});
|
|
67
|
+
// Convert our internal result format to MCP format
|
|
68
|
+
return {
|
|
69
|
+
content: result.content.map((item) => {
|
|
70
|
+
if (item.type === 'text') {
|
|
71
|
+
return {
|
|
72
|
+
type: 'text',
|
|
73
|
+
text: item.text ?? '',
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
if (item.type === 'image') {
|
|
77
|
+
return {
|
|
78
|
+
type: 'image',
|
|
79
|
+
data: item.data ?? '',
|
|
80
|
+
mimeType: item.mimeType ?? 'image/png',
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
// Resource type - convert to text for now
|
|
84
|
+
return {
|
|
85
|
+
type: 'text',
|
|
86
|
+
text: item.text ?? '',
|
|
87
|
+
};
|
|
88
|
+
}),
|
|
89
|
+
isError: result.isError,
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
return server;
|
|
93
|
+
}
|
|
94
|
+
const logLevelOrder = {
|
|
95
|
+
debug: 0,
|
|
96
|
+
info: 1,
|
|
97
|
+
warn: 2,
|
|
98
|
+
error: 3,
|
|
99
|
+
};
|
|
100
|
+
function shouldLog(level) {
|
|
101
|
+
return logLevelOrder[level] >= logLevelOrder[config.logLevel];
|
|
102
|
+
}
|
|
103
|
+
function formatLogMessage(level, context, message) {
|
|
104
|
+
const timestamp = new Date().toISOString();
|
|
105
|
+
if (config.logFormat === 'json') {
|
|
106
|
+
return JSON.stringify({
|
|
107
|
+
timestamp,
|
|
108
|
+
level,
|
|
109
|
+
context,
|
|
110
|
+
message,
|
|
111
|
+
server: config.serverName,
|
|
112
|
+
version: config.serverVersion,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return `[${timestamp}] [${level.toUpperCase()}] [${context}] ${message}`;
|
|
116
|
+
}
|
|
117
|
+
function log(level, context, message) {
|
|
118
|
+
if (shouldLog(level)) {
|
|
119
|
+
console.error(formatLogMessage(level, context, message));
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function logDebug(context, message) {
|
|
123
|
+
log('debug', context, message);
|
|
124
|
+
}
|
|
125
|
+
function logInfo(context, message) {
|
|
126
|
+
log('info', context, message);
|
|
127
|
+
}
|
|
128
|
+
function logError(context, message) {
|
|
129
|
+
log('error', context, message);
|
|
130
|
+
}
|
|
131
|
+
// =============================================================================
|
|
132
|
+
// Startup Banner
|
|
133
|
+
// =============================================================================
|
|
134
|
+
function printBanner() {
|
|
135
|
+
if (config.logLevel === 'debug' || config.logLevel === 'info') {
|
|
136
|
+
const banner = `
|
|
137
|
+
╔══════════════════════════════════════════════════════════════════╗
|
|
138
|
+
║ ║
|
|
139
|
+
║ ██╗███╗ ██╗██╗ ██╗ ██████╗ ██████╗ ║
|
|
140
|
+
║ ██║████╗ ██║██║ ██╔╝██╔═══██╗██╔════╝ ║
|
|
141
|
+
║ ██║██╔██╗ ██║█████╔╝ ██║ ██║██║ ███╗ ║
|
|
142
|
+
║ ██║██║╚██╗██║██╔═██╗ ██║ ██║██║ ██║ ║
|
|
143
|
+
║ ██║██║ ╚████║██║ ██╗╚██████╔╝╚██████╔╝ ║
|
|
144
|
+
║ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ║
|
|
145
|
+
║ ║
|
|
146
|
+
║ AI Security Platform for the Agentic Era ║
|
|
147
|
+
║ ║
|
|
148
|
+
╚══════════════════════════════════════════════════════════════════╝
|
|
149
|
+
`;
|
|
150
|
+
console.error(banner);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// =============================================================================
|
|
154
|
+
// Main Entry Point
|
|
155
|
+
// =============================================================================
|
|
156
|
+
async function main() {
|
|
157
|
+
printBanner();
|
|
158
|
+
// Check for API key
|
|
159
|
+
const apiKey = getApiKey();
|
|
160
|
+
if (apiKey === undefined) {
|
|
161
|
+
logInfo('Startup', 'No API key configured. Set INKOG_API_KEY environment variable.');
|
|
162
|
+
logInfo('Startup', 'Get your free API key at https://app.inkog.io');
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
logDebug('Startup', 'API key configured');
|
|
166
|
+
}
|
|
167
|
+
// Create and start server
|
|
168
|
+
logInfo('Startup', `Starting Inkog MCP Server v${config.serverVersion}`);
|
|
169
|
+
logInfo('Startup', `Registered ${registeredToolCount} tools`);
|
|
170
|
+
logDebug('Startup', `API endpoint: ${config.apiBaseUrl}/${config.apiVersion}`);
|
|
171
|
+
const server = createServer();
|
|
172
|
+
const transport = new StdioServerTransport();
|
|
173
|
+
// Handle graceful shutdown
|
|
174
|
+
const handleShutdown = (signal) => {
|
|
175
|
+
logInfo('Shutdown', `Received ${signal}, shutting down...`);
|
|
176
|
+
server.close().then(() => {
|
|
177
|
+
process.exit(0);
|
|
178
|
+
}).catch((error) => {
|
|
179
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
180
|
+
logError('Shutdown', `Error during shutdown: ${message}`);
|
|
181
|
+
process.exit(1);
|
|
182
|
+
});
|
|
183
|
+
};
|
|
184
|
+
process.on('SIGINT', () => { handleShutdown('SIGINT'); });
|
|
185
|
+
process.on('SIGTERM', () => { handleShutdown('SIGTERM'); });
|
|
186
|
+
// Connect and run
|
|
187
|
+
try {
|
|
188
|
+
await server.connect(transport);
|
|
189
|
+
logInfo('Startup', 'MCP Server connected and ready');
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
193
|
+
logError('Startup', `Failed to start server: ${message}`);
|
|
194
|
+
process.exit(1);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// Run the server
|
|
198
|
+
main().catch((error) => {
|
|
199
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
200
|
+
logError('Fatal', message);
|
|
201
|
+
process.exit(1);
|
|
202
|
+
});
|
|
203
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inkog_audit_a2a Tool
|
|
3
|
+
*
|
|
4
|
+
* P2 - Agent-to-Agent (A2A) Security Auditing (MULTI-AGENT SECURITY)
|
|
5
|
+
*
|
|
6
|
+
* Audits communication patterns in multi-agent systems for:
|
|
7
|
+
* - Infinite delegation loops
|
|
8
|
+
* - Privilege escalation via delegation
|
|
9
|
+
* - Data leakage between agents
|
|
10
|
+
* - Unauthorized agent handoffs
|
|
11
|
+
* - Missing permission guards
|
|
12
|
+
*
|
|
13
|
+
* Supports: Google A2A protocol, CrewAI, LangGraph, auto-detection
|
|
14
|
+
*
|
|
15
|
+
* Aligned with Google Cloud AI Agent Trends 2026:
|
|
16
|
+
* "Multi-agent orchestration is the future of enterprise AI"
|
|
17
|
+
*/
|
|
18
|
+
import type { ToolDefinition } from './index.js';
|
|
19
|
+
export declare const auditA2aTool: ToolDefinition;
|
|
20
|
+
//# sourceMappingURL=audit-a2a.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-a2a.d.ts","sourceRoot":"","sources":["../../src/tools/audit-a2a.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAYH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,YAAY,CAAC;AAkY7D,eAAO,MAAM,YAAY,EAAE,cA4B1B,CAAC"}
|