@cognium-ai/mcp-server 4.4.0 → 4.6.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.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWpE,wBAAgB,WAAW,IAAI,SAAS,CAsBvC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYpE,wBAAgB,WAAW,IAAI,SAAS,CAyBvC"}
package/dist/server.js CHANGED
@@ -11,6 +11,7 @@ import { registerFindStaleDependencies } from './tools/find-stale-dependencies.j
11
11
  import { registerFindInstallScriptRisk } from './tools/find-install-script-risk.js';
12
12
  import { registerFindTyposquats } from './tools/find-typosquats.js';
13
13
  import { registerFindExcessivePermissions } from './tools/find-excessive-permissions.js';
14
+ import { registerLayerBom } from './tools/layer-bom.js';
14
15
  export function buildServer() {
15
16
  const server = new McpServer({
16
17
  name: 'cognium-mcp',
@@ -28,6 +29,8 @@ export function buildServer() {
28
29
  registerFindInstallScriptRisk(server);
29
30
  registerFindTyposquats(server);
30
31
  registerFindExcessivePermissions(server);
32
+ // Conformis inventory primitive
33
+ registerLayerBom(server);
31
34
  return server;
32
35
  }
33
36
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAEzF,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,sBAAsB;IACtB,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,mBAAmB;IACnB,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IAEvC,mBAAmB;IACnB,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,gCAAgC,CAAC,MAAM,CAAC,CAAC;IAEzC,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,sBAAsB;IACtB,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,mBAAmB;IACnB,8BAA8B,CAAC,MAAM,CAAC,CAAC;IACvC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IAEvC,mBAAmB;IACnB,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACtC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,gCAAgC,CAAC,MAAM,CAAC,CAAC;IAEzC,gCAAgC;IAChC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * layer_bom MCP tool (Conformis inventory primitive).
3
+ *
4
+ * Exposes the circle-ir-ai layer-BOM engine op — a 9-layer component inventory
5
+ * (L2 Runtime … L8 Integration/API) with the dependency BOM sorted into
6
+ * protocol/framework/data usage layers and a usage index (which of the repo's
7
+ * own files import each). This is an *engine primitive* (like verify_spec_
8
+ * conformance), not the Conformis campaign runner — the plan (conformis-
9
+ * execution-plan.md §7) explicitly exposes `bom` via CLI + /api/bom + MCP.
10
+ *
11
+ * @see https://github.com/cogniumhq/cognium-ai (Conformis A3-S2)
12
+ */
13
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
14
+ export declare function registerLayerBom(server: McpServer): void;
15
+ //# sourceMappingURL=layer-bom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layer-bom.d.ts","sourceRoot":"","sources":["../../src/tools/layer-bom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuEzE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwBxD"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * layer_bom MCP tool (Conformis inventory primitive).
3
+ *
4
+ * Exposes the circle-ir-ai layer-BOM engine op — a 9-layer component inventory
5
+ * (L2 Runtime … L8 Integration/API) with the dependency BOM sorted into
6
+ * protocol/framework/data usage layers and a usage index (which of the repo's
7
+ * own files import each). This is an *engine primitive* (like verify_spec_
8
+ * conformance), not the Conformis campaign runner — the plan (conformis-
9
+ * execution-plan.md §7) explicitly exposes `bom` via CLI + /api/bom + MCP.
10
+ *
11
+ * @see https://github.com/cogniumhq/cognium-ai (Conformis A3-S2)
12
+ */
13
+ import { z } from 'zod';
14
+ import { generateBom } from 'circle-ir-ai';
15
+ const inputSchema = {
16
+ code_root: z.string().describe('Absolute path to the repo root to inventory'),
17
+ usage: z.boolean().optional().default(true).describe('Build the usage index (import-site scan per classified component). Set false for a faster inventory-only BOM (default: true)'),
18
+ };
19
+ const componentSchema = z.object({
20
+ name: z.string(),
21
+ version: z.string().optional(),
22
+ layer: z.string(),
23
+ kind: z.string(),
24
+ ecosystem: z.string().optional(),
25
+ source: z.string(),
26
+ path: z.string().optional(),
27
+ direct: z.boolean().optional(),
28
+ usage_count: z.number().optional(),
29
+ });
30
+ const outputSchema = {
31
+ target: z.string(),
32
+ languages: z.array(z.string()),
33
+ layers: z.array(z.object({
34
+ layer: z.string(),
35
+ title: z.string(),
36
+ component_count: z.number(),
37
+ components: z.array(componentSchema),
38
+ })),
39
+ meta: z.object({
40
+ total_dependencies: z.number(),
41
+ total_components: z.number(),
42
+ populated_layers: z.array(z.string()),
43
+ }),
44
+ };
45
+ const LAYER_ORDER = ['L2', 'L3', 'L4', 'L5', 'L6', 'L7', 'L8', 'L9'];
46
+ const MAX_COMPONENTS_PER_LAYER = 500;
47
+ /** Map the RepoBom to a lean MCP output (drops verbose usageSites/usageIndex). */
48
+ function toOutput(bom) {
49
+ return {
50
+ target: bom.target,
51
+ languages: bom.languages,
52
+ layers: LAYER_ORDER.map((l) => {
53
+ const lb = bom.layers[l];
54
+ return {
55
+ layer: l,
56
+ title: lb.title,
57
+ component_count: lb.components.length,
58
+ components: lb.components.slice(0, MAX_COMPONENTS_PER_LAYER).map((c) => ({
59
+ name: c.name,
60
+ version: c.version,
61
+ layer: c.layer,
62
+ kind: c.kind,
63
+ ecosystem: c.ecosystem,
64
+ source: c.source,
65
+ path: c.path,
66
+ direct: c.direct,
67
+ usage_count: c.usageCount,
68
+ })),
69
+ };
70
+ }).filter((l) => l.component_count > 0),
71
+ meta: {
72
+ total_dependencies: bom.meta.totalDependencies,
73
+ total_components: bom.meta.totalComponents,
74
+ populated_layers: bom.meta.populatedLayers,
75
+ },
76
+ };
77
+ }
78
+ export function registerLayerBom(server) {
79
+ server.registerTool('layer_bom', {
80
+ title: 'Layer-BOM (9-layer inventory)',
81
+ description: 'Inventory a repo across the 9 canonical layers: L2 Runtime, L3 Protocols ' +
82
+ '(JWT/OAuth/gRPC/GraphQL/HTTP), L4 Supply-chain (direct + transitive deps), ' +
83
+ 'L5 Framework (React/Expo/Spring/Django…), L6 Platform/Toolchain (Dockerfile/CI), ' +
84
+ 'L7 Data (ORMs/drivers), L8 Integration/API (OpenAPI/GraphQL/proto specs). ' +
85
+ 'Returns per-layer components plus a usage index (which of the repo\'s files ' +
86
+ 'import each classified component). The Conformis inventory primitive.',
87
+ inputSchema,
88
+ outputSchema,
89
+ }, async ({ code_root, usage }) => {
90
+ const bom = await generateBom(code_root, { usage });
91
+ const output = toOutput(bom);
92
+ return {
93
+ content: [{ type: 'text', text: JSON.stringify(output) }],
94
+ structuredContent: output,
95
+ };
96
+ });
97
+ }
98
+ //# sourceMappingURL=layer-bom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layer-bom.js","sourceRoot":"","sources":["../../src/tools/layer-bom.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cognium-ai/mcp-server",
3
- "version": "4.4.0",
3
+ "version": "4.6.0",
4
4
  "description": "MCP server exposing Cognium spec-conformance, spec-drift, and pattern-search tools over stdio",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -45,8 +45,8 @@
45
45
  ],
46
46
  "dependencies": {
47
47
  "@modelcontextprotocol/sdk": "^1.29.0",
48
- "circle-ir": "4.8.2",
49
- "circle-ir-ai": "^4.4.0",
48
+ "circle-ir": "4.9.7",
49
+ "circle-ir-ai": "^4.6.0",
50
50
  "minimatch": "^10.2.5",
51
51
  "zod": "^3.25.0"
52
52
  },