@codai/axiom-mcp 1.0.1 → 1.0.3

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.
Files changed (191) hide show
  1. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@codai/axiom-core.json +1 -0
  2. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@codai/axiom-emitter-apiservice.json +1 -0
  3. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@codai/axiom-emitter-batchjob.json +1 -0
  4. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@codai/axiom-emitter-docker.json +1 -0
  5. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@codai/axiom-emitter-webapp.json +1 -0
  6. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@codai/axiom-engine.json +1 -0
  7. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@codai/axiom-policies.json +1 -0
  8. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/aix-ppc64.json +1 -0
  9. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/android-arm.json +1 -0
  10. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/android-arm64.json +1 -0
  11. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/android-x64.json +1 -0
  12. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/darwin-arm64.json +1 -0
  13. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/darwin-x64.json +1 -0
  14. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/freebsd-arm64.json +1 -0
  15. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/freebsd-x64.json +1 -0
  16. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/linux-arm.json +1 -0
  17. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/linux-arm64.json +1 -0
  18. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/linux-ia32.json +1 -0
  19. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/linux-loong64.json +1 -0
  20. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/linux-mips64el.json +1 -0
  21. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/linux-ppc64.json +1 -0
  22. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/linux-riscv64.json +1 -0
  23. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/linux-s390x.json +1 -0
  24. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/linux-x64.json +1 -0
  25. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/netbsd-arm64.json +1 -0
  26. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/netbsd-x64.json +1 -0
  27. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/openbsd-arm64.json +1 -0
  28. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/openbsd-x64.json +1 -0
  29. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/openharmony-arm64.json +1 -0
  30. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/sunos-x64.json +1 -0
  31. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/win32-arm64.json +1 -0
  32. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/win32-ia32.json +1 -0
  33. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@esbuild/win32-x64.json +1 -0
  34. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@jridgewell/sourcemap-codec.json +1 -0
  35. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@modelcontextprotocol/sdk.json +1 -0
  36. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-android-arm-eabi.json +1 -0
  37. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-android-arm64.json +1 -0
  38. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-darwin-arm64.json +1 -0
  39. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-darwin-x64.json +1 -0
  40. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-freebsd-arm64.json +1 -0
  41. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-freebsd-x64.json +1 -0
  42. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf.json +1 -0
  43. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf.json +1 -0
  44. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-linux-arm64-gnu.json +1 -0
  45. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-linux-arm64-musl.json +1 -0
  46. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-linux-loong64-gnu.json +1 -0
  47. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu.json +1 -0
  48. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu.json +1 -0
  49. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-linux-riscv64-musl.json +1 -0
  50. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-linux-s390x-gnu.json +1 -0
  51. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-linux-x64-gnu.json +1 -0
  52. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-linux-x64-musl.json +1 -0
  53. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-openharmony-arm64.json +1 -0
  54. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-win32-arm64-msvc.json +1 -0
  55. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-win32-ia32-msvc.json +1 -0
  56. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-win32-x64-gnu.json +1 -0
  57. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@rollup/rollup-win32-x64-msvc.json +1 -0
  58. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@types/estree.json +1 -0
  59. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@types/node.json +1 -0
  60. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@vitest/expect.json +1 -0
  61. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@vitest/mocker.json +1 -0
  62. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@vitest/pretty-format.json +1 -0
  63. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@vitest/runner.json +1 -0
  64. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@vitest/snapshot.json +1 -0
  65. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@vitest/spy.json +1 -0
  66. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/@vitest/utils.json +1 -0
  67. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/accepts.json +1 -0
  68. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/ajv.json +1 -0
  69. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/assertion-error.json +1 -0
  70. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/body-parser.json +1 -0
  71. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/bytes.json +1 -0
  72. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/cac.json +1 -0
  73. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/call-bind-apply-helpers.json +1 -0
  74. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/call-bound.json +1 -0
  75. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/chai.json +1 -0
  76. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/check-error.json +1 -0
  77. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/content-disposition.json +1 -0
  78. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/content-type.json +1 -0
  79. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/cookie-signature.json +1 -0
  80. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/cookie.json +1 -0
  81. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/cors.json +1 -0
  82. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/cross-spawn.json +1 -0
  83. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/debug.json +1 -0
  84. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/deep-eql.json +1 -0
  85. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/depd.json +1 -0
  86. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/dunder-proto.json +1 -0
  87. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/ee-first.json +1 -0
  88. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/encodeurl.json +1 -0
  89. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/es-define-property.json +1 -0
  90. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/es-errors.json +1 -0
  91. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/es-module-lexer.json +1 -0
  92. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/es-object-atoms.json +1 -0
  93. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/esbuild.json +1 -0
  94. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/escape-html.json +1 -0
  95. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/estree-walker.json +1 -0
  96. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/etag.json +1 -0
  97. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/eventsource-parser.json +1 -0
  98. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/eventsource.json +1 -0
  99. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/expect-type.json +1 -0
  100. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/express-rate-limit.json +1 -0
  101. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/express.json +1 -0
  102. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/fast-deep-equal.json +1 -0
  103. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/fast-json-stable-stringify.json +1 -0
  104. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/finalhandler.json +1 -0
  105. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/forwarded.json +1 -0
  106. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/fresh.json +1 -0
  107. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/fsevents.json +1 -0
  108. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/function-bind.json +1 -0
  109. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/get-intrinsic.json +1 -0
  110. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/get-proto.json +1 -0
  111. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/get-tsconfig.json +1 -0
  112. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/gopd.json +1 -0
  113. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/has-symbols.json +1 -0
  114. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/hasown.json +1 -0
  115. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/http-errors.json +1 -0
  116. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/iconv-lite.json +1 -0
  117. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/inherits.json +1 -0
  118. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/ipaddr.js.json +1 -0
  119. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/is-promise.json +1 -0
  120. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/isexe.json +1 -0
  121. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/json-schema-traverse.json +1 -0
  122. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/loupe.json +1 -0
  123. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/magic-string.json +1 -0
  124. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/math-intrinsics.json +1 -0
  125. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/media-typer.json +1 -0
  126. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/merge-descriptors.json +1 -0
  127. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/mime-db.json +1 -0
  128. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/mime-types.json +1 -0
  129. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/ms.json +1 -0
  130. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/nanoid.json +1 -0
  131. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/negotiator.json +1 -0
  132. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/object-assign.json +1 -0
  133. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/object-inspect.json +1 -0
  134. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/on-finished.json +1 -0
  135. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/once.json +1 -0
  136. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/parseurl.json +1 -0
  137. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/path-key.json +1 -0
  138. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/path-to-regexp.json +1 -0
  139. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/pathe.json +1 -0
  140. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/pathval.json +1 -0
  141. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/picocolors.json +1 -0
  142. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/pkce-challenge.json +1 -0
  143. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/postcss.json +1 -0
  144. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/proxy-addr.json +1 -0
  145. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/punycode.json +1 -0
  146. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/qs.json +1 -0
  147. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/range-parser.json +1 -0
  148. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/raw-body.json +1 -0
  149. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/resolve-pkg-maps.json +1 -0
  150. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/rollup.json +1 -0
  151. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/router.json +1 -0
  152. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/safe-buffer.json +1 -0
  153. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/safer-buffer.json +1 -0
  154. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/send.json +1 -0
  155. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/serve-static.json +1 -0
  156. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/setprototypeof.json +1 -0
  157. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/shebang-command.json +1 -0
  158. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/shebang-regex.json +1 -0
  159. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/side-channel-list.json +1 -0
  160. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/side-channel-map.json +1 -0
  161. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/side-channel-weakmap.json +1 -0
  162. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/side-channel.json +1 -0
  163. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/siginfo.json +1 -0
  164. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/source-map-js.json +1 -0
  165. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/stackback.json +1 -0
  166. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/statuses.json +1 -0
  167. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/std-env.json +1 -0
  168. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/tinybench.json +1 -0
  169. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/tinyexec.json +1 -0
  170. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/tinypool.json +1 -0
  171. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/tinyrainbow.json +1 -0
  172. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/tinyspy.json +1 -0
  173. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/toidentifier.json +1 -0
  174. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/tsx.json +1 -0
  175. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/type-is.json +1 -0
  176. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/typescript.json +1 -0
  177. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/undici-types.json +1 -0
  178. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/unpipe.json +1 -0
  179. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/uri-js.json +1 -0
  180. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/vary.json +1 -0
  181. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/vite-node.json +1 -0
  182. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/vite.json +1 -0
  183. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/vitest.json +1 -0
  184. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/which.json +1 -0
  185. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/why-is-node-running.json +1 -0
  186. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/wrappy.json +1 -0
  187. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/zod-to-json-schema.json +1 -0
  188. package/.pnpm-cache/metadata-v1.3/registry.npmjs.org/zod.json +1 -0
  189. package/dist/mcp-stdio.js +329 -0
  190. package/package.json +14 -11
  191. package/src/mcp-stdio.ts +374 -0
@@ -0,0 +1,374 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
4
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
+ import {
6
+ CallToolRequestSchema,
7
+ ListToolsRequestSchema,
8
+ } from "@modelcontextprotocol/sdk/types.js";
9
+
10
+ import { parseAxiomSource } from "@codai/axiom-core/dist/parser.js";
11
+ import { validateIR } from "@codai/axiom-core/dist/validator.js";
12
+ import { AxiomIR } from "@codai/axiom-core/dist/ir.js";
13
+ import { generate } from "@codai/axiom-engine/dist/generate.js";
14
+ import { check } from "@codai/axiom-engine/dist/check.js";
15
+ import { reverseIR } from "@codai/axiom-engine/dist/reverse-ir.js";
16
+ import { diff } from "@codai/axiom-engine/dist/axpatch.js";
17
+ import { apply } from "@codai/axiom-engine/dist/apply.js";
18
+
19
+ const server = new Server(
20
+ {
21
+ name: "axiom-mcp",
22
+ version: "1.0.2",
23
+ },
24
+ {
25
+ capabilities: {
26
+ tools: {},
27
+ },
28
+ }
29
+ );
30
+
31
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
32
+ return {
33
+ tools: [
34
+ {
35
+ name: "axiom_parse",
36
+ description: "Parse .axm source code to IR (Intermediate Representation)",
37
+ inputSchema: {
38
+ type: "object",
39
+ properties: {
40
+ source: {
41
+ type: "string",
42
+ description: "AXIOM source code (.axm)",
43
+ },
44
+ },
45
+ required: ["source"],
46
+ },
47
+ },
48
+ {
49
+ name: "axiom_validate",
50
+ description: "Validate IR semantics and constraints",
51
+ inputSchema: {
52
+ type: "object",
53
+ properties: {
54
+ ir: {
55
+ type: "object",
56
+ description: "AXIOM IR object",
57
+ },
58
+ },
59
+ required: ["ir"],
60
+ },
61
+ },
62
+ {
63
+ name: "axiom_generate",
64
+ description: "Generate artifacts and manifest from IR",
65
+ inputSchema: {
66
+ type: "object",
67
+ properties: {
68
+ ir: {
69
+ type: "object",
70
+ description: "AXIOM IR object",
71
+ },
72
+ profile: {
73
+ type: "string",
74
+ description: "Profile name (e.g., 'edge', 'budget')",
75
+ },
76
+ },
77
+ required: ["ir"],
78
+ },
79
+ },
80
+ {
81
+ name: "axiom_check",
82
+ description: "Run policy checks on manifest",
83
+ inputSchema: {
84
+ type: "object",
85
+ properties: {
86
+ manifest: {
87
+ type: "object",
88
+ description: "Generated manifest",
89
+ },
90
+ ir: {
91
+ type: "object",
92
+ description: "Optional IR for context",
93
+ },
94
+ },
95
+ required: ["manifest"],
96
+ },
97
+ },
98
+ {
99
+ name: "axiom_reverse",
100
+ description: "Reverse engineer IR from existing repository",
101
+ inputSchema: {
102
+ type: "object",
103
+ properties: {
104
+ repoPath: {
105
+ type: "string",
106
+ description: "Path to repository",
107
+ },
108
+ outDir: {
109
+ type: "string",
110
+ description: "Output directory to scan",
111
+ default: "out",
112
+ },
113
+ },
114
+ },
115
+ },
116
+ {
117
+ name: "axiom_diff",
118
+ description: "Generate diff patches between two IR versions",
119
+ inputSchema: {
120
+ type: "object",
121
+ properties: {
122
+ oldIr: {
123
+ type: "object",
124
+ description: "Old IR version",
125
+ },
126
+ newIr: {
127
+ type: "object",
128
+ description: "New IR version",
129
+ },
130
+ },
131
+ required: ["oldIr", "newIr"],
132
+ },
133
+ },
134
+ {
135
+ name: "axiom_apply",
136
+ description: "Apply manifest changes to filesystem",
137
+ inputSchema: {
138
+ type: "object",
139
+ properties: {
140
+ manifest: {
141
+ type: "object",
142
+ description: "Manifest to apply",
143
+ },
144
+ mode: {
145
+ type: "string",
146
+ enum: ["fs", "pr"],
147
+ description: "Application mode: 'fs' for direct filesystem, 'pr' for pull request",
148
+ default: "fs",
149
+ },
150
+ repoPath: {
151
+ type: "string",
152
+ description: "Repository path",
153
+ },
154
+ branchName: {
155
+ type: "string",
156
+ description: "Branch name for PR mode",
157
+ },
158
+ commitMessage: {
159
+ type: "string",
160
+ description: "Commit message for PR mode",
161
+ },
162
+ },
163
+ required: ["manifest"],
164
+ },
165
+ },
166
+ ],
167
+ };
168
+ });
169
+
170
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
171
+ try {
172
+ const { name, arguments: args } = request.params;
173
+
174
+ switch (name) {
175
+ case "axiom_parse": {
176
+ const { source } = args as { source: string };
177
+ const { ir, diagnostics } = parseAxiomSource(source);
178
+ return {
179
+ content: [
180
+ {
181
+ type: "text",
182
+ text: JSON.stringify({ ir, diagnostics }, null, 2),
183
+ },
184
+ ],
185
+ };
186
+ }
187
+
188
+ case "axiom_validate": {
189
+ const { ir } = args as { ir: any };
190
+ const parse = AxiomIR.safeParse(ir);
191
+ if (!parse.success) {
192
+ return {
193
+ content: [
194
+ {
195
+ type: "text",
196
+ text: JSON.stringify(
197
+ { ok: false, diagnostics: parse.error.issues },
198
+ null,
199
+ 2
200
+ ),
201
+ },
202
+ ],
203
+ };
204
+ }
205
+ const result = validateIR(parse.data);
206
+ return {
207
+ content: [
208
+ {
209
+ type: "text",
210
+ text: JSON.stringify(result, null, 2),
211
+ },
212
+ ],
213
+ };
214
+ }
215
+
216
+ case "axiom_generate": {
217
+ const { ir, profile } = args as { ir: any; profile?: string };
218
+ const parse = AxiomIR.safeParse(ir);
219
+ if (!parse.success) {
220
+ return {
221
+ content: [
222
+ {
223
+ type: "text",
224
+ text: JSON.stringify({ error: parse.error.issues }, null, 2),
225
+ },
226
+ ],
227
+ isError: true,
228
+ };
229
+ }
230
+ const { artifacts, manifest } = await generate(
231
+ parse.data,
232
+ process.cwd(),
233
+ profile
234
+ );
235
+ return {
236
+ content: [
237
+ {
238
+ type: "text",
239
+ text: JSON.stringify({ artifacts, manifest }, null, 2),
240
+ },
241
+ ],
242
+ };
243
+ }
244
+
245
+ case "axiom_check": {
246
+ const { manifest, ir } = args as { manifest: any; ir?: any };
247
+ const irParsed = ir ? AxiomIR.safeParse(ir) : null;
248
+ const result = await check(
249
+ manifest,
250
+ irParsed?.success ? irParsed.data : undefined,
251
+ process.cwd()
252
+ );
253
+ return {
254
+ content: [
255
+ {
256
+ type: "text",
257
+ text: JSON.stringify(result, null, 2),
258
+ },
259
+ ],
260
+ };
261
+ }
262
+
263
+ case "axiom_reverse": {
264
+ const { repoPath, outDir } = args as {
265
+ repoPath?: string;
266
+ outDir?: string;
267
+ };
268
+ const ir = await reverseIR({
269
+ repoPath: repoPath || process.cwd(),
270
+ outDir: outDir || "out",
271
+ });
272
+ return {
273
+ content: [
274
+ {
275
+ type: "text",
276
+ text: JSON.stringify({ ir, diagnostics: [] }, null, 2),
277
+ },
278
+ ],
279
+ };
280
+ }
281
+
282
+ case "axiom_diff": {
283
+ const { oldIr, newIr } = args as { oldIr: any; newIr: any };
284
+ const oldParse = AxiomIR.safeParse(oldIr);
285
+ const newParse = AxiomIR.safeParse(newIr);
286
+ if (!oldParse.success || !newParse.success) {
287
+ return {
288
+ content: [
289
+ {
290
+ type: "text",
291
+ text: JSON.stringify(
292
+ {
293
+ error: "Invalid IR",
294
+ oldIr: oldParse.success ? null : oldParse.error.issues,
295
+ newIr: newParse.success ? null : newParse.error.issues,
296
+ },
297
+ null,
298
+ 2
299
+ ),
300
+ },
301
+ ],
302
+ isError: true,
303
+ };
304
+ }
305
+ const patch = diff(oldParse.data, newParse.data);
306
+ return {
307
+ content: [
308
+ {
309
+ type: "text",
310
+ text: JSON.stringify({ patch }, null, 2),
311
+ },
312
+ ],
313
+ };
314
+ }
315
+
316
+ case "axiom_apply": {
317
+ const { manifest, mode, repoPath, branchName, commitMessage } = args as {
318
+ manifest: any;
319
+ mode?: string;
320
+ repoPath?: string;
321
+ branchName?: string;
322
+ commitMessage?: string;
323
+ };
324
+ const result = await apply({
325
+ manifest,
326
+ mode: (mode as "fs" | "pr") || "fs",
327
+ repoPath: repoPath || process.cwd(),
328
+ branchName,
329
+ commitMessage,
330
+ });
331
+ return {
332
+ content: [
333
+ {
334
+ type: "text",
335
+ text: JSON.stringify(result, null, 2),
336
+ },
337
+ ],
338
+ };
339
+ }
340
+
341
+ default:
342
+ return {
343
+ content: [
344
+ {
345
+ type: "text",
346
+ text: `Unknown tool: ${name}`,
347
+ },
348
+ ],
349
+ isError: true,
350
+ };
351
+ }
352
+ } catch (error: any) {
353
+ return {
354
+ content: [
355
+ {
356
+ type: "text",
357
+ text: `Error: ${error.message || String(error)}`,
358
+ },
359
+ ],
360
+ isError: true,
361
+ };
362
+ }
363
+ });
364
+
365
+ async function main() {
366
+ const transport = new StdioServerTransport();
367
+ await server.connect(transport);
368
+ console.error("AXIOM MCP Server running on stdio");
369
+ }
370
+
371
+ main().catch((error) => {
372
+ console.error("Fatal error:", error);
373
+ process.exit(1);
374
+ });