@nyuchi/mzizi-mcp 0.9.0 → 0.10.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.
Files changed (97) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +115 -85
  3. package/dist/access.d.ts +69 -0
  4. package/dist/access.d.ts.map +1 -0
  5. package/dist/access.js +72 -0
  6. package/dist/access.js.map +1 -0
  7. package/dist/auth/authkit-handler.d.ts +4 -3
  8. package/dist/auth/authkit-handler.d.ts.map +1 -1
  9. package/dist/auth/authkit-handler.js +52 -6
  10. package/dist/auth/authkit-handler.js.map +1 -1
  11. package/dist/auth/front.d.ts +17 -0
  12. package/dist/auth/front.d.ts.map +1 -0
  13. package/dist/auth/front.js +25 -0
  14. package/dist/auth/front.js.map +1 -0
  15. package/dist/auth/mcp-api-handler.d.ts +20 -7
  16. package/dist/auth/mcp-api-handler.d.ts.map +1 -1
  17. package/dist/auth/mcp-api-handler.js +43 -29
  18. package/dist/auth/mcp-api-handler.js.map +1 -1
  19. package/dist/desk-context.d.ts +33 -0
  20. package/dist/desk-context.d.ts.map +1 -0
  21. package/dist/desk-context.js +49 -0
  22. package/dist/desk-context.js.map +1 -0
  23. package/dist/docs-federation.d.ts +68 -0
  24. package/dist/docs-federation.d.ts.map +1 -0
  25. package/dist/docs-federation.js +282 -0
  26. package/dist/docs-federation.js.map +1 -0
  27. package/dist/env.d.ts +7 -8
  28. package/dist/env.d.ts.map +1 -1
  29. package/dist/env.js +5 -5
  30. package/dist/fundi-a2a.d.ts +1 -1
  31. package/dist/fundi-a2a.js +2 -2
  32. package/dist/fundi-a2a.js.map +1 -1
  33. package/dist/fundi-client.d.ts +24 -4
  34. package/dist/fundi-client.d.ts.map +1 -1
  35. package/dist/fundi-client.js +91 -4
  36. package/dist/fundi-client.js.map +1 -1
  37. package/dist/generated/registry-pin.d.ts +5 -0
  38. package/dist/generated/registry-pin.d.ts.map +1 -0
  39. package/dist/generated/registry-pin.js +3 -0
  40. package/dist/generated/registry-pin.js.map +1 -0
  41. package/dist/generated/registry.d.ts +23 -0
  42. package/dist/generated/registry.d.ts.map +1 -0
  43. package/dist/generated/registry.js +1204 -0
  44. package/dist/generated/registry.js.map +1 -0
  45. package/dist/generated/skills.d.ts +18 -0
  46. package/dist/generated/skills.d.ts.map +1 -0
  47. package/dist/generated/skills.js +67 -0
  48. package/dist/generated/skills.js.map +1 -0
  49. package/dist/http.d.ts +18 -9
  50. package/dist/http.d.ts.map +1 -1
  51. package/dist/http.js +16 -13
  52. package/dist/http.js.map +1 -1
  53. package/dist/issue-desk.d.ts +152 -0
  54. package/dist/issue-desk.d.ts.map +1 -0
  55. package/dist/issue-desk.js +392 -0
  56. package/dist/issue-desk.js.map +1 -0
  57. package/dist/issue-log.d.ts +80 -0
  58. package/dist/issue-log.d.ts.map +1 -0
  59. package/dist/issue-log.js +146 -0
  60. package/dist/issue-log.js.map +1 -0
  61. package/dist/issue-report.d.ts +138 -0
  62. package/dist/issue-report.d.ts.map +1 -0
  63. package/dist/issue-report.js +112 -0
  64. package/dist/issue-report.js.map +1 -0
  65. package/dist/rate-limit.d.ts +41 -0
  66. package/dist/rate-limit.d.ts.map +1 -0
  67. package/dist/rate-limit.js +58 -0
  68. package/dist/rate-limit.js.map +1 -0
  69. package/dist/registry.d.ts +126 -0
  70. package/dist/registry.d.ts.map +1 -0
  71. package/dist/registry.js +280 -0
  72. package/dist/registry.js.map +1 -0
  73. package/dist/server.d.ts +96 -22
  74. package/dist/server.d.ts.map +1 -1
  75. package/dist/server.js +76 -32
  76. package/dist/server.js.map +1 -1
  77. package/dist/stdio.d.ts +6 -13
  78. package/dist/stdio.d.ts.map +1 -1
  79. package/dist/stdio.js +6 -29
  80. package/dist/stdio.js.map +1 -1
  81. package/dist/tools.d.ts +45 -6
  82. package/dist/tools.d.ts.map +1 -1
  83. package/dist/tools.js +313 -82
  84. package/dist/tools.js.map +1 -1
  85. package/dist/worker.d.ts +26 -14
  86. package/dist/worker.d.ts.map +1 -1
  87. package/dist/worker.js +42 -14
  88. package/dist/worker.js.map +1 -1
  89. package/package.json +24 -19
  90. package/dist/api-client.d.ts +0 -101
  91. package/dist/api-client.d.ts.map +0 -1
  92. package/dist/api-client.js +0 -200
  93. package/dist/api-client.js.map +0 -1
  94. package/dist/defaults.d.ts +0 -29
  95. package/dist/defaults.d.ts.map +0 -1
  96. package/dist/defaults.js +0 -29
  97. package/dist/defaults.js.map +0 -1
package/dist/stdio.js CHANGED
@@ -3,40 +3,17 @@
3
3
  * stdio entry — for the MCP registry (`npx mzizi-mcp`) and local MCP clients
4
4
  * (Claude Code, etc.).
5
5
  *
6
- * Spawns the server over the stdio transport, using a long-lived Supabase
7
- * anon client. RLS on `component_documents` enforces read-only.
6
+ * Zero-config and credential-free: the registry data and skills are bundled
7
+ * into this package at build time (from the mzizi-registry commit pinned in
8
+ * `registry.pin.json`), so the registry tools need no network at all. The
9
+ * `docs_*` tools forward to the public docs MCP at docs.mzizi.dev.
8
10
  *
9
- * Zero-config: the public Mzizi registry URL + publishable key are baked in
10
- * as defaults (see defaults.ts — they are not secrets), so `npx mzizi-mcp`
11
- * works with no environment set. This is the sanctioned headless path: the
12
- * hosted mcp.mzizi.dev endpoint sits behind an interactive, browser-only
13
- * WorkOS signup gate that a headless agent cannot complete, whereas this bin
14
- * reads the same public registry directly.
15
- *
16
- * Env (optional — override the defaults to point at a fork / self-hosted
17
- * mirror):
18
- * SUPABASE_URL (or NEXT_PUBLIC_SUPABASE_URL)
19
- * SUPABASE_PUBLISHABLE_KEY (or NEXT_PUBLIC_SUPABASE_ANON_KEY)
11
+ * `MZIZI_API_BASE` is gone: there is no registry API to point at any more. To
12
+ * serve different registry content, build with a different pin.
20
13
  */
21
14
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
22
- import { createClient } from "@supabase/supabase-js";
23
15
  import { createMziziMcpServer } from "./server.js";
24
- import { DEFAULT_SUPABASE_URL, DEFAULT_SUPABASE_PUBLISHABLE_KEY } from "./defaults.js";
25
16
  async function main() {
26
- const url = process.env.SUPABASE_URL ?? process.env.NEXT_PUBLIC_SUPABASE_URL ?? DEFAULT_SUPABASE_URL;
27
- const key = process.env.SUPABASE_PUBLISHABLE_KEY ??
28
- process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY ??
29
- DEFAULT_SUPABASE_PUBLISHABLE_KEY;
30
- if (!url || !key) {
31
- // Unreachable with the baked defaults, but keep an actionable message in
32
- // case someone explicitly sets one var to an empty string.
33
- process.stderr.write("mzizi-mcp: missing SUPABASE_URL or SUPABASE_PUBLISHABLE_KEY. Leave both unset to use " +
34
- "the public Mzizi registry defaults, or set them to point at a fork / self-hosted mirror.\n");
35
- process.exit(1);
36
- }
37
- const supabase = createClient(url, key, {
38
- auth: { persistSession: false, autoRefreshToken: false },
39
- });
40
17
  const server = await createMziziMcpServer();
41
18
  const transport = new StdioServerTransport();
42
19
  await server.connect(transport);
package/dist/stdio.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAA;AAEtF,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,oBAAoB,CAAA;IAC1F,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,CAAC,wBAAwB;QACpC,OAAO,CAAC,GAAG,CAAC,6BAA6B;QACzC,gCAAgC,CAAA;IAClC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,yEAAyE;QACzE,2DAA2D;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uFAAuF;YACrF,4FAA4F,CAC/F,CAAA;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE;QACtC,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE;KACzD,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAA;IAC3C,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AACjC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC/E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,OAAO,IAAI,CAAC,CAAA;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAElD,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAA;IAC3C,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AACjC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC/E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,OAAO,IAAI,CAAC,CAAA;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
package/dist/tools.d.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  /**
2
2
  * The Mzizi MCP tool surface — 10 tools, defined in code.
3
3
  *
4
- * Every one is backed by `mzizi.dev/api/v1` over HTTP. There is no Supabase client and
5
- * no `mcp_tool_registry` lookup: components are real files the Next.js app compiles and
6
- * serves, so the API is the single source of truth and this server is one of its
7
- * clients.
4
+ * Eight are free. `fundi` and `report_issue` act as a console user and need
5
+ * the WorkOS sign-in; `access.ts` says which is which and how to sign in.
6
+ *
7
+ * The registry tools answer from files bundled into this build (`registry.ts`,
8
+ * generated from mzizi-dev/mzizi-registry at the commit in `registry.pin.json`), and
9
+ * skills from the skill files in this repo. There is no database and no request-time
10
+ * registry API call. Docs are federated separately (`docs-federation.ts`).
8
11
  *
9
12
  * Defining the tools here rather than loading them from a table is the point. A
10
13
  * registry-driven surface changed what the server exposed whenever someone edited a
@@ -16,15 +19,51 @@
16
19
  * be checked mechanically rather than argued about.
17
20
  */
18
21
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
19
- import { MziziApiClient } from "./api-client.js";
22
+ import { type Registry } from "./registry.js";
20
23
  import type { FundiToolContext } from "./fundi-client.js";
21
24
  export declare const TOOL_PREFIX = "mzizi_";
22
25
  /** What each tool absorbed, so coverage against the old 62 is checkable. */
23
26
  export declare const TOOL_COVERAGE: Record<string, readonly string[]>;
27
+ /**
28
+ * The caller's own issue desk, already bound to their identity.
29
+ *
30
+ * A narrow structural type rather than the `IssueDesk` class: `tools.ts` runs
31
+ * in the stdio bin too, where `cloudflare:workers` does not resolve, and
32
+ * importing the class for its type alone would pull the module in. The Worker
33
+ * passes a `DurableObjectStub`, which satisfies this shape.
34
+ */
35
+ export type IssueDeskContext = {
36
+ open(input: {
37
+ kind: "feedback" | "observability" | "chaos";
38
+ message: string;
39
+ component?: string;
40
+ severity?: "low" | "medium" | "high" | "critical";
41
+ skill?: string;
42
+ }): Promise<unknown>;
43
+ get(id: string): Promise<unknown | null>;
44
+ list(limit?: number): Promise<unknown[]>;
45
+ retry(id: string): Promise<unknown | null>;
46
+ };
24
47
  export type RegisterOptions = {
25
- api: MziziApiClient;
48
+ /** The registry to answer from. Defaults to the one bundled into this build. */
49
+ registry?: () => Promise<Registry>;
26
50
  /** Registers the `fundi` tool only when this server is wired as a fundi caller. */
27
51
  fundi?: FundiToolContext;
52
+ /**
53
+ * The signed-in user's issue desk. Absent on the stdio bin and in
54
+ * `wrangler dev` — there is no Durable Object namespace and no user to key
55
+ * one by — in which case `report_issue` says so rather than pretending.
56
+ */
57
+ desk?: IssueDeskContext;
58
+ /**
59
+ * Set when the caller is anonymous on a server that offers sign-in (the
60
+ * Worker's free tier, see `access.ts`). The signed-in tools are still listed,
61
+ * and each refuses with a sign-in error rather than vanishing. `fundi` lists
62
+ * `mzizi_fundi` as well, and is true only when this server can reach fundi.
63
+ */
64
+ anonymous?: {
65
+ fundi: boolean;
66
+ };
28
67
  };
29
68
  export declare function registerMziziTools(server: McpServer, opts: RegisterOptions): string[];
30
69
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,EAAE,cAAc,EAAkB,MAAM,iBAAiB,CAAA;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AASzD,eAAO,MAAM,WAAW,WAAW,CAAA;AAuCnC,4EAA4E;AAC5E,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAwC3D,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,cAAc,CAAA;IACnB,mFAAmF;IACnF,KAAK,CAAC,EAAE,gBAAgB,CAAA;CACzB,CAAA;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE,CAkWrF"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAmB,KAAK,QAAQ,EAAe,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAW1D,eAAO,MAAM,WAAW,WAAW,CAAC;AA0DpC,4EAA4E;AAC5E,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CA0D3D,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,KAAK,EAAE;QACV,IAAI,EAAE,UAAU,GAAG,eAAe,GAAG,OAAO,CAAC;QAC7C,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;QAClD,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,mFAAmF;IACnF,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;;;OAIG;IACH,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAChC,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,eAAe,GACpB,MAAM,EAAE,CAwjBV"}