@revealui/mcp 0.5.0 → 0.6.1

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/README.md CHANGED
@@ -1,3 +1,11 @@
1
+ ---
2
+ title: "@revealui/mcp"
3
+ description: "**Model Context Protocol (MCP) - Complete Integration Package**"
4
+ visibility: public
5
+ status: verified
6
+ audience: user
7
+ ---
8
+
1
9
  # @revealui/mcp
2
10
 
3
11
  > **Commercial package** - requires a [RevealUI Pro license](https://revealui.com/pro). Free to install and evaluate; a license key is required for production use.
@@ -11,14 +19,14 @@ Centralized MCP server infrastructure, configuration, and documentation for Reve
11
19
 
12
20
  This package contains everything MCP-related:
13
21
 
14
- - **13 MCP Servers** — Code Validator, Contracts Introspection, Neon, Next.js DevTools, Playwright, RevealUI Content, RevealUI Email, RevealUI Memory, RevealUI Stripe, Stripe, Supabase, Vercel, and an Email Provider helper. Ground-truth count is enforced by `pnpm validate:claims`.
22
+ - **14 MCP Servers** — Code Validator, Contracts Introspection, RevealUI Docs, Neon, Next.js DevTools, Playwright, RevealUI Content, RevealUI Email, RevealUI Memory, RevealUI Stripe, Stripe, Supabase, Vercel, and an Email Provider helper. Ground-truth count is enforced by `pnpm validate:claims`.
15
23
  - **Configuration Templates** - For Claude Code / Claude Desktop
16
24
  - **Utilities** - Config management, database adapters
17
25
  - **Documentation** - Complete guides and per-server docs
18
26
  - **Database Migrations** - MCP-related schema
19
27
 
20
- > **Pro Package** - `@revealui/mcp` is available to RevealUI Pro subscribers via GitHub Packages.
21
- > Install: `pnpm add @revealui/mcp --registry https://npm.pkg.github.com`
28
+ > **Pro Package** - `@revealui/mcp` is published to the public npm registry under the RevealUI Pro license (FSL-1.1-MIT).
29
+ > Install: `pnpm add @revealui/mcp`
22
30
 
23
31
  ## Quick Start
24
32
 
@@ -29,7 +37,7 @@ This package contains everything MCP-related:
29
37
  pnpm install
30
38
 
31
39
  # As an external Pro subscriber:
32
- pnpm add @revealui/mcp --registry https://npm.pkg.github.com
40
+ pnpm add @revealui/mcp
33
41
  ```
34
42
 
35
43
  ### 2. Configure MCP Client
@@ -148,7 +156,7 @@ pnpm mcp:next-devtools
148
156
  ### 8. Contracts Introspection
149
157
  **Status:** ✅ Active (no API key required, **not** Pro-license-gated)
150
158
 
151
- Phase 1 of the protocol-pyramid ADR ([`docs/decisions/2026-05-03-contracts-protocol-pyramid.md`](../../docs/decisions/2026-05-03-contracts-protocol-pyramid.md)). Exposes every `@revealui/contracts` category (representation, entities, content, admin, agents, security, secrets, a2a, api-auth, api-chat, api-gdpr, content-validation, devkit-profiles, generated, providers, revealcoin, stripe-webhook-events) as MCP **resources** (read-only JSON Schemas of every category schema) and matching MCP **tools** that parse arbitrary JSON against any registered schema.
159
+ Phase 1 of the protocol-pyramid ADR ([`docs/decisions/2026-05-03-contracts-protocol-pyramid.md`](../../docs/decisions/2026-05-03-contracts-protocol-pyramid.md)). Exposes every `@revealui/contracts` category (representation, entities, content, admin, agents, security, secrets, a2a, api-auth, api-chat, api-gdpr, content-validation, devkit-profiles, generated, providers, stripe-webhook-events) as MCP **resources** (read-only JSON Schemas of every category schema) and matching MCP **tools** that parse arbitrary JSON against any registered schema.
152
160
 
153
161
  - **Resources:** `revealui-contracts://catalog` (full discovery payload) + `revealui-contracts://<category>` (one per category, returns all schemas).
154
162
  - **Tools:** `contracts_list_categories`, `contracts_get_schema`, plus one `contracts_validate_<category>` per category.
@@ -259,7 +267,7 @@ This package consolidates MCP code from multiple locations:
259
267
 
260
268
  ## License
261
269
 
262
- Commercial - see [LICENSE.commercial](../../LICENSE.commercial)
270
+ FSL-1.1-MIT (Fair Source — converts to MIT after 2 years). See [LICENSE](../../LICENSE).
263
271
 
264
272
  ---
265
273
 
package/dist/index.d.ts CHANGED
@@ -28,6 +28,7 @@ export { InMemoryRateLimitStore, PGliteRateLimitStore, type RateLimitStore, type
28
28
  export { DEFAULT_TIER_LIMITS, McpRateLimiter, type McpRateLimiterOptions, type RateLimitConfig, type RateLimitResult, } from './rate-limiter.js';
29
29
  export { createMCPAdapter, disposeAllAdapters, generateIdempotencyKey, generateUniqueIdempotencyKey, type IdempotencyStore, MCPAdapter, type MCPConfig, NeonAdapter, StripeAdapter, VercelAdapter, } from './servers/adapter.js';
30
30
  export { type ContractCategoryName, type ContractCategorySchemas, type CreateContractsServerOptions, createContractsServer, getContractsCatalog, REGISTERED_CATEGORIES, validatePayload, } from './servers/factories/contracts.js';
31
+ export { type CreateDocsServerOptions, createDocsServer, enumeratePackages, getLibraryDoc, type LibraryDoc, listLibraries, type PackageEntry, type ResolveResult, resolveLibrary, } from './servers/factories/docs.js';
31
32
  export { createRevealuiContentServer, setCredentials as setRevealuiContentCredentials, } from './servers/factories/revealui-content.js';
32
33
  export { launchNeonMcp } from './servers/neon.js';
33
34
  export { launchNextDevtoolsMcp } from './servers/next-devtools.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -39,6 +39,8 @@ export { DEFAULT_TIER_LIMITS, McpRateLimiter, } from './rate-limiter.js';
39
39
  export { createMCPAdapter, disposeAllAdapters, generateIdempotencyKey, generateUniqueIdempotencyKey, MCPAdapter, NeonAdapter, StripeAdapter, VercelAdapter, } from './servers/adapter.js';
40
40
  // Contracts introspection server (F8 Phase 1 — protocol-pyramid ADR L2-MCP)
41
41
  export { createContractsServer, getContractsCatalog, REGISTERED_CATEGORIES, validatePayload, } from './servers/factories/contracts.js';
42
+ // Docs server (dependency intelligence — first-party @revealui/* package docs)
43
+ export { createDocsServer, enumeratePackages, getLibraryDoc, listLibraries, resolveLibrary, } from './servers/factories/docs.js';
42
44
  // First-party server factories (Stage 1 PR-1.2 — dual-mode template)
43
45
  export { createRevealuiContentServer, setCredentials as setRevealuiContentCredentials, } from './servers/factories/revealui-content.js';
44
46
  // Server launchers
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,mBAAmB;AACnB,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,GAKlB,MAAM,kBAAkB,CAAC;AAC1B,2DAA2D;AAC3D,OAAO,EACL,iBAAiB,EAEjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,wFAAwF;AACxF,OAAO,EAiBL,kBAAkB,EAClB,SAAS,EAET,oBAAoB,GAoBrB,MAAM,aAAa,CAAC;AACrB,gBAAgB;AAChB,OAAO,EACL,YAAY,GAGb,MAAM,mBAAmB,CAAC;AAC3B,0CAA0C;AAC1C,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,gCAAgC,EAEhC,sBAAsB,EAGtB,uBAAuB,EACvB,gBAAgB,EAGhB,yBAAyB,EACzB,iBAAiB,EACjB,gCAAgC,EAEhC,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,0DAA0D;AAC1D,OAAO,EAEL,aAAa,GAKd,MAAM,iBAAiB,CAAC;AAGzB,kFAAkF;AAClF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EAEnB,gBAAgB,EAEhB,aAAa,EAKb,aAAa,GAGd,MAAM,YAAY,CAAC;AACpB,yCAAyC;AACzC,OAAO,EACL,eAAe,GAIhB,MAAM,eAAe,CAAC;AACvB,yCAAyC;AACzC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GAGrB,MAAM,uBAAuB,CAAC;AAC/B,2BAA2B;AAC3B,OAAO,EACL,mBAAmB,EACnB,cAAc,GAIf,MAAM,mBAAmB,CAAC;AAC3B,oBAAoB;AACpB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,EAE5B,UAAU,EAEV,WAAW,EACX,aAAa,EACb,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,4EAA4E;AAC5E,OAAO,EAIL,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAC1C,qEAAqE;AACrE,OAAO,EACL,2BAA2B,EAC3B,cAAc,IAAI,6BAA6B,GAChD,MAAM,yCAAyC,CAAC;AACjD,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,sDAAsD;AACtD,OAAO,EACL,+BAA+B,GAGhC,MAAM,sBAAsB,CAAC;AAC9B,8CAA8C;AAC9C,OAAO,EAIL,YAAY,GACb,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,mBAAmB;AACnB,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,GAKlB,MAAM,kBAAkB,CAAC;AAC1B,2DAA2D;AAC3D,OAAO,EACL,iBAAiB,EAEjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,wFAAwF;AACxF,OAAO,EAiBL,kBAAkB,EAClB,SAAS,EAET,oBAAoB,GAoBrB,MAAM,aAAa,CAAC;AACrB,gBAAgB;AAChB,OAAO,EACL,YAAY,GAGb,MAAM,mBAAmB,CAAC;AAC3B,0CAA0C;AAC1C,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,gCAAgC,EAEhC,sBAAsB,EAGtB,uBAAuB,EACvB,gBAAgB,EAGhB,yBAAyB,EACzB,iBAAiB,EACjB,gCAAgC,EAEhC,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,0DAA0D;AAC1D,OAAO,EAEL,aAAa,GAKd,MAAM,iBAAiB,CAAC;AAGzB,kFAAkF;AAClF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EAEnB,gBAAgB,EAEhB,aAAa,EAKb,aAAa,GAGd,MAAM,YAAY,CAAC;AACpB,yCAAyC;AACzC,OAAO,EACL,eAAe,GAIhB,MAAM,eAAe,CAAC;AACvB,yCAAyC;AACzC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GAGrB,MAAM,uBAAuB,CAAC;AAC/B,2BAA2B;AAC3B,OAAO,EACL,mBAAmB,EACnB,cAAc,GAIf,MAAM,mBAAmB,CAAC;AAC3B,oBAAoB;AACpB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,EAE5B,UAAU,EAEV,WAAW,EACX,aAAa,EACb,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,4EAA4E;AAC5E,OAAO,EAIL,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAC1C,+EAA+E;AAC/E,OAAO,EAEL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EAEb,aAAa,EAGb,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,qEAAqE;AACrE,OAAO,EACL,2BAA2B,EAC3B,cAAc,IAAI,6BAA6B,GAChD,MAAM,yCAAyC,CAAC;AACjD,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,sDAAsD;AACtD,OAAO,EACL,+BAA+B,GAGhC,MAAM,sBAAsB,CAAC;AAC9B,8CAA8C;AAC9C,OAAO,EAIL,YAAY,GACb,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * RevealUI Docs MCP Server — stdio launcher.
4
+ *
5
+ * Thin wrapper around `createDocsServer()` (see `./factories/docs.ts` for the
6
+ * full surface). Resolves the monorepo root so the server can read first-party
7
+ * `@revealui/*` packages, then speaks stdio-MCP — the canonical deployment for
8
+ * Claude Code / custom-agent integration and the hypervisor's spawn pipeline.
9
+ *
10
+ * Root resolution order:
11
+ * 1. `REVEALUI_ROOT` env var (when it contains a `pnpm-workspace.yaml`).
12
+ * 2. Walk up from `process.cwd()` to the first dir with `pnpm-workspace.yaml`.
13
+ * 3. Fall back to `process.cwd()` (the server then enumerates zero packages).
14
+ *
15
+ * **Not** Pro-license-gated — see the factory header for the rationale.
16
+ */
17
+ export {};
18
+ //# sourceMappingURL=docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/servers/docs.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG"}
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * RevealUI Docs MCP Server — stdio launcher.
4
+ *
5
+ * Thin wrapper around `createDocsServer()` (see `./factories/docs.ts` for the
6
+ * full surface). Resolves the monorepo root so the server can read first-party
7
+ * `@revealui/*` packages, then speaks stdio-MCP — the canonical deployment for
8
+ * Claude Code / custom-agent integration and the hypervisor's spawn pipeline.
9
+ *
10
+ * Root resolution order:
11
+ * 1. `REVEALUI_ROOT` env var (when it contains a `pnpm-workspace.yaml`).
12
+ * 2. Walk up from `process.cwd()` to the first dir with `pnpm-workspace.yaml`.
13
+ * 3. Fall back to `process.cwd()` (the server then enumerates zero packages).
14
+ *
15
+ * **Not** Pro-license-gated — see the factory header for the rationale.
16
+ */
17
+ import { existsSync } from 'node:fs';
18
+ import { dirname, join } from 'node:path';
19
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
20
+ import { logger } from '@revealui/core/observability/logger';
21
+ import { createDocsServer } from './factories/docs.js';
22
+ function resolveMonorepoRoot() {
23
+ const fromEnv = process.env.REVEALUI_ROOT;
24
+ if (fromEnv && existsSync(join(fromEnv, 'pnpm-workspace.yaml')))
25
+ return fromEnv;
26
+ let dir = process.cwd();
27
+ for (let depth = 0; depth < 64; depth += 1) {
28
+ if (existsSync(join(dir, 'pnpm-workspace.yaml')))
29
+ return dir;
30
+ const parent = dirname(dir);
31
+ if (parent === dir)
32
+ break;
33
+ dir = parent;
34
+ }
35
+ return process.cwd();
36
+ }
37
+ async function main() {
38
+ const server = createDocsServer({ root: resolveMonorepoRoot() });
39
+ const transport = new StdioServerTransport();
40
+ await server.connect(transport);
41
+ }
42
+ main().catch((err) => {
43
+ logger.error('RevealUI Docs MCP error', err instanceof Error ? err : new Error(String(err)));
44
+ process.exit(1);
45
+ });
46
+ //# sourceMappingURL=docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/servers/docs.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,SAAS,mBAAmB;IAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC1C,IAAI,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAEhF,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Factory for the `revealui-docs` MCP server — first-party dependency
3
+ * intelligence.
4
+ *
5
+ * This is the RevealUI-native answer to external "library docs" MCP servers
6
+ * (e.g. context7): instead of routing queries to a third-party service, it
7
+ * serves curated docs for the fleet's own `@revealui/*` packages straight
8
+ * from the monorepo — README + package.json metadata + public export
9
+ * subpaths. Source is ground truth, and it covers first-party packages an
10
+ * external indexer cannot see at all.
11
+ *
12
+ * ## Phase 1 (this file)
13
+ *
14
+ * First-party `@revealui/*` packages only. Tools:
15
+ * - `docs_list_libraries` — enumerate every first-party package.
16
+ * - `docs_resolve_library` — normalize a name ("router", "@revealui/router")
17
+ * to its canonical id.
18
+ * - `docs_get_library` — return curated docs for a package.
19
+ *
20
+ * Resource:
21
+ * - `revealui-docs://catalog` — the same list as `docs_list_libraries`.
22
+ *
23
+ * npm / third-party packages are out of scope for P1. `opensrc` already
24
+ * fetches real dependency source on demand; a later phase wires it in behind
25
+ * the same two tools so the ergonomics stay uniform.
26
+ *
27
+ * ## License
28
+ *
29
+ * **Not** Pro-gated. It surfaces only source-visible package metadata +
30
+ * READMEs (the `@revealui/*` packages are MIT or source-visible FSL) and is a
31
+ * developer tool for building on RevealUI — same rationale as the contracts
32
+ * server. Revisit only if it ever serves runtime/customer data.
33
+ */
34
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
35
+ /** A first-party package discovered in the monorepo. */
36
+ export interface PackageEntry {
37
+ /** Canonical package name, e.g. `@revealui/router`. */
38
+ name: string;
39
+ /** Scope-stripped id, e.g. `router`. */
40
+ shortId: string;
41
+ /** Absolute path to the package directory. */
42
+ dir: string;
43
+ version: string;
44
+ description: string;
45
+ license?: string;
46
+ homepage?: string;
47
+ /** Public export subpaths from package.json `exports`, e.g. `['.', './server']`. */
48
+ exports: string[];
49
+ }
50
+ /** Curated docs for a single package. */
51
+ export interface LibraryDoc {
52
+ name: string;
53
+ shortId: string;
54
+ version: string;
55
+ description: string;
56
+ license?: string;
57
+ homepage?: string;
58
+ exports: string[];
59
+ /** README.md contents, or null when the package has none. */
60
+ readme: string | null;
61
+ }
62
+ export interface ResolveResult {
63
+ resolved: boolean;
64
+ /** Canonical id when resolved. */
65
+ id?: string;
66
+ query: string;
67
+ /** Guidance when unresolved (e.g. third-party packages). */
68
+ hint?: string;
69
+ /** Near matches (substring) when unresolved. */
70
+ candidates?: string[];
71
+ }
72
+ /**
73
+ * Enumerate first-party packages under `<root>/packages/*`. Only entries
74
+ * whose package.json `name` is in the `@revealui/` scope (or the bare
75
+ * `revealui` meta-package) are included. Returns a map keyed by canonical
76
+ * package name. Never throws — unreadable entries are skipped.
77
+ */
78
+ export declare function enumeratePackages(root: string): Map<string, PackageEntry>;
79
+ /** Resolve a library name to a canonical first-party id. */
80
+ export declare function resolveLibrary(packages: Map<string, PackageEntry>, input: string): ResolveResult;
81
+ /** Read curated docs for a resolved package id (canonical name or short id). */
82
+ export declare function getLibraryDoc(packages: Map<string, PackageEntry>, id: string): LibraryDoc | null;
83
+ interface LibrarySummary {
84
+ name: string;
85
+ shortId: string;
86
+ version: string;
87
+ description: string;
88
+ exports: string[];
89
+ }
90
+ /** Summaries of every first-party package, sorted by name. */
91
+ export declare function listLibraries(packages: Map<string, PackageEntry>): LibrarySummary[];
92
+ export interface CreateDocsServerOptions {
93
+ /** Monorepo root containing `packages/`. The launcher resolves this. */
94
+ root: string;
95
+ /** Override the advertised server name (useful for tests). */
96
+ serverName?: string;
97
+ }
98
+ /**
99
+ * Create a fresh `revealui-docs` MCP Server. The package list is enumerated
100
+ * once at creation (cheap, name+metadata only); README contents are read
101
+ * lazily per `docs_get_library` call.
102
+ */
103
+ export declare function createDocsServer(options: CreateDocsServerOptions): Server;
104
+ export {};
105
+ //# sourceMappingURL=docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../src/servers/factories/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAuBnE,wDAAwD;AACxD,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,yCAAyC;AACzC,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AA+BD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAsCzE;AAkBD,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAkChG;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CA0BhG;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,cAAc,EAAE,CAUnF;AA+DD,MAAM,WAAW,uBAAuB;IACtC,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CA8EzE"}
@@ -0,0 +1,318 @@
1
+ /**
2
+ * Factory for the `revealui-docs` MCP server — first-party dependency
3
+ * intelligence.
4
+ *
5
+ * This is the RevealUI-native answer to external "library docs" MCP servers
6
+ * (e.g. context7): instead of routing queries to a third-party service, it
7
+ * serves curated docs for the fleet's own `@revealui/*` packages straight
8
+ * from the monorepo — README + package.json metadata + public export
9
+ * subpaths. Source is ground truth, and it covers first-party packages an
10
+ * external indexer cannot see at all.
11
+ *
12
+ * ## Phase 1 (this file)
13
+ *
14
+ * First-party `@revealui/*` packages only. Tools:
15
+ * - `docs_list_libraries` — enumerate every first-party package.
16
+ * - `docs_resolve_library` — normalize a name ("router", "@revealui/router")
17
+ * to its canonical id.
18
+ * - `docs_get_library` — return curated docs for a package.
19
+ *
20
+ * Resource:
21
+ * - `revealui-docs://catalog` — the same list as `docs_list_libraries`.
22
+ *
23
+ * npm / third-party packages are out of scope for P1. `opensrc` already
24
+ * fetches real dependency source on demand; a later phase wires it in behind
25
+ * the same two tools so the ergonomics stay uniform.
26
+ *
27
+ * ## License
28
+ *
29
+ * **Not** Pro-gated. It surfaces only source-visible package metadata +
30
+ * READMEs (the `@revealui/*` packages are MIT or source-visible FSL) and is a
31
+ * developer tool for building on RevealUI — same rationale as the contracts
32
+ * server. Revisit only if it ever serves runtime/customer data.
33
+ */
34
+ import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
35
+ import { join } from 'node:path';
36
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
37
+ import { CallToolRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
38
+ const SERVER_NAME = 'revealui-docs';
39
+ const SERVER_VERSION = '0.1.0';
40
+ const SCOPE_PREFIX = '@revealui/';
41
+ const RESOURCE_URI_PREFIX = 'revealui-docs://';
42
+ const CATALOG_URI = `${RESOURCE_URI_PREFIX}catalog`;
43
+ // ---------------------------------------------------------------------------
44
+ // Filesystem helpers
45
+ // ---------------------------------------------------------------------------
46
+ function readJson(file) {
47
+ try {
48
+ return JSON.parse(readFileSync(file, 'utf8'));
49
+ }
50
+ catch {
51
+ return null;
52
+ }
53
+ }
54
+ function asString(value) {
55
+ return typeof value === 'string' ? value : undefined;
56
+ }
57
+ function extractExports(pkg) {
58
+ const ex = pkg.exports;
59
+ if (ex && typeof ex === 'object' && !Array.isArray(ex)) {
60
+ const keys = Object.keys(ex);
61
+ return keys.length > 0 ? keys : ['.'];
62
+ }
63
+ return ['.'];
64
+ }
65
+ // ---------------------------------------------------------------------------
66
+ // Enumeration + lookup (pure — exported for tests + reuse)
67
+ // ---------------------------------------------------------------------------
68
+ /**
69
+ * Enumerate first-party packages under `<root>/packages/*`. Only entries
70
+ * whose package.json `name` is in the `@revealui/` scope (or the bare
71
+ * `revealui` meta-package) are included. Returns a map keyed by canonical
72
+ * package name. Never throws — unreadable entries are skipped.
73
+ */
74
+ export function enumeratePackages(root) {
75
+ const out = new Map();
76
+ const pkgsDir = join(root, 'packages');
77
+ if (!existsSync(pkgsDir))
78
+ return out;
79
+ let names;
80
+ try {
81
+ names = readdirSync(pkgsDir);
82
+ }
83
+ catch {
84
+ return out;
85
+ }
86
+ for (const entry of names) {
87
+ const dir = join(pkgsDir, entry);
88
+ try {
89
+ if (!statSync(dir).isDirectory())
90
+ continue;
91
+ }
92
+ catch {
93
+ continue;
94
+ }
95
+ const pkg = readJson(join(dir, 'package.json'));
96
+ if (!pkg)
97
+ continue;
98
+ const pkgName = asString(pkg.name);
99
+ if (!pkgName)
100
+ continue;
101
+ const isFirstParty = pkgName.startsWith(SCOPE_PREFIX) || pkgName === 'revealui';
102
+ if (!isFirstParty)
103
+ continue;
104
+ const shortId = pkgName.startsWith(SCOPE_PREFIX) ? pkgName.slice(SCOPE_PREFIX.length) : pkgName;
105
+ out.set(pkgName, {
106
+ name: pkgName,
107
+ shortId,
108
+ dir,
109
+ version: asString(pkg.version) ?? '0.0.0',
110
+ description: asString(pkg.description) ?? '',
111
+ license: asString(pkg.license),
112
+ homepage: asString(pkg.homepage),
113
+ exports: extractExports(pkg),
114
+ });
115
+ }
116
+ return out;
117
+ }
118
+ /** Normalize a user query to a scope-stripped, lowercased short id. */
119
+ function normalizeQuery(input) {
120
+ let s = input.trim().toLowerCase();
121
+ if (s.startsWith(SCOPE_PREFIX))
122
+ s = s.slice(SCOPE_PREFIX.length);
123
+ else if (s.startsWith('revealui/'))
124
+ s = s.slice('revealui/'.length);
125
+ return s;
126
+ }
127
+ function looksThirdParty(input) {
128
+ const s = input.trim().toLowerCase();
129
+ if (!s)
130
+ return false;
131
+ // A scoped name from another org, e.g. "@hono/node-server", or a bare npm
132
+ // name we don't recognize. Both are out of P1 scope.
133
+ return s.startsWith('@') && !s.startsWith(SCOPE_PREFIX);
134
+ }
135
+ /** Resolve a library name to a canonical first-party id. */
136
+ export function resolveLibrary(packages, input) {
137
+ const query = input.trim();
138
+ if (!query) {
139
+ return {
140
+ resolved: false,
141
+ query,
142
+ hint: 'Provide a package name, e.g. "router" or "@revealui/router".',
143
+ };
144
+ }
145
+ const shortId = normalizeQuery(query);
146
+ // Exact full-name match first, then short-id match.
147
+ for (const entry of packages.values()) {
148
+ if (entry.name === query || entry.shortId === shortId) {
149
+ return { resolved: true, id: entry.name, query };
150
+ }
151
+ }
152
+ const npmHint = 'Phase 1 of revealui-docs covers first-party @revealui/* packages only. ' +
153
+ 'For an npm/third-party package, fetch its source with `opensrc <package>` ' +
154
+ '(a later phase will wire that in behind this tool).';
155
+ const candidates = [...packages.values()]
156
+ .filter((e) => e.shortId.includes(shortId) || e.name.includes(shortId))
157
+ .map((e) => e.name);
158
+ return {
159
+ resolved: false,
160
+ query,
161
+ hint: looksThirdParty(query)
162
+ ? npmHint
163
+ : `No first-party package matches "${query}". ${npmHint}`,
164
+ candidates: candidates.length > 0 ? candidates : undefined,
165
+ };
166
+ }
167
+ /** Read curated docs for a resolved package id (canonical name or short id). */
168
+ export function getLibraryDoc(packages, id) {
169
+ const resolved = resolveLibrary(packages, id);
170
+ if (!(resolved.resolved && resolved.id))
171
+ return null;
172
+ const entry = packages.get(resolved.id);
173
+ if (!entry)
174
+ return null;
175
+ let readme = null;
176
+ const readmePath = join(entry.dir, 'README.md');
177
+ if (existsSync(readmePath)) {
178
+ try {
179
+ readme = readFileSync(readmePath, 'utf8');
180
+ }
181
+ catch {
182
+ readme = null;
183
+ }
184
+ }
185
+ return {
186
+ name: entry.name,
187
+ shortId: entry.shortId,
188
+ version: entry.version,
189
+ description: entry.description,
190
+ license: entry.license,
191
+ homepage: entry.homepage,
192
+ exports: entry.exports,
193
+ readme,
194
+ };
195
+ }
196
+ /** Summaries of every first-party package, sorted by name. */
197
+ export function listLibraries(packages) {
198
+ return [...packages.values()]
199
+ .map((e) => ({
200
+ name: e.name,
201
+ shortId: e.shortId,
202
+ version: e.version,
203
+ description: e.description,
204
+ exports: e.exports,
205
+ }))
206
+ .sort((a, b) => a.name.localeCompare(b.name));
207
+ }
208
+ // ---------------------------------------------------------------------------
209
+ // Tool + resource catalogs
210
+ // ---------------------------------------------------------------------------
211
+ function buildToolList() {
212
+ return [
213
+ {
214
+ name: 'docs_list_libraries',
215
+ description: 'List every first-party @revealui/* package available to this docs server, with version, description, and public export subpaths.',
216
+ inputSchema: { type: 'object', properties: {} },
217
+ },
218
+ {
219
+ name: 'docs_resolve_library',
220
+ description: 'Resolve a library name (e.g. "router", "@revealui/router") to its canonical first-party id. Returns guidance for third-party/npm packages (out of Phase 1 scope).',
221
+ inputSchema: {
222
+ type: 'object',
223
+ properties: {
224
+ name: { type: 'string', description: 'Library name to resolve.' },
225
+ },
226
+ required: ['name'],
227
+ },
228
+ },
229
+ {
230
+ name: 'docs_get_library',
231
+ description: 'Return curated docs for a first-party package: README + description + version + license + public export subpaths. Accepts a canonical name or a short id.',
232
+ inputSchema: {
233
+ type: 'object',
234
+ properties: {
235
+ id: {
236
+ type: 'string',
237
+ description: 'Canonical name ("@revealui/router") or short id ("router").',
238
+ },
239
+ },
240
+ required: ['id'],
241
+ },
242
+ },
243
+ ];
244
+ }
245
+ function textResult(value, isError = false) {
246
+ const result = { content: [{ type: 'text', text: JSON.stringify(value, null, 2) }] };
247
+ if (isError)
248
+ result.isError = true;
249
+ return result;
250
+ }
251
+ /**
252
+ * Create a fresh `revealui-docs` MCP Server. The package list is enumerated
253
+ * once at creation (cheap, name+metadata only); README contents are read
254
+ * lazily per `docs_get_library` call.
255
+ */
256
+ export function createDocsServer(options) {
257
+ const packages = enumeratePackages(options.root);
258
+ const server = new Server({ name: options.serverName ?? SERVER_NAME, version: SERVER_VERSION }, { capabilities: { tools: {}, resources: {} } });
259
+ const toolList = buildToolList();
260
+ const resourceList = [
261
+ {
262
+ uri: CATALOG_URI,
263
+ name: 'catalog',
264
+ description: 'List of first-party @revealui/* packages with version, description, and exports.',
265
+ mimeType: 'application/json',
266
+ },
267
+ ];
268
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: toolList }));
269
+ server.setRequestHandler(ListResourcesRequestSchema, async () => ({ resources: resourceList }));
270
+ server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
271
+ const uri = request.params.uri;
272
+ if (uri !== CATALOG_URI) {
273
+ throw new Error(`Unknown resource URI (expected ${CATALOG_URI}): ${uri}`);
274
+ }
275
+ return {
276
+ contents: [
277
+ {
278
+ uri,
279
+ mimeType: 'application/json',
280
+ text: JSON.stringify({ libraries: listLibraries(packages), total: packages.size }, null, 2),
281
+ },
282
+ ],
283
+ };
284
+ });
285
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
286
+ const toolName = request.params.name;
287
+ const args = (request.params.arguments ?? {});
288
+ try {
289
+ if (toolName === 'docs_list_libraries') {
290
+ return textResult({ libraries: listLibraries(packages), total: packages.size });
291
+ }
292
+ if (toolName === 'docs_resolve_library') {
293
+ const name = args.name;
294
+ if (typeof name !== 'string') {
295
+ return textResult({ error: '"name" (string) is required.' }, true);
296
+ }
297
+ return textResult(resolveLibrary(packages, name));
298
+ }
299
+ if (toolName === 'docs_get_library') {
300
+ const id = args.id;
301
+ if (typeof id !== 'string') {
302
+ return textResult({ error: '"id" (string) is required.' }, true);
303
+ }
304
+ const doc = getLibraryDoc(packages, id);
305
+ if (!doc) {
306
+ return textResult(resolveLibrary(packages, id), true);
307
+ }
308
+ return textResult(doc);
309
+ }
310
+ return textResult({ error: `Unknown tool: ${toolName}` }, true);
311
+ }
312
+ catch (err) {
313
+ return textResult({ error: err instanceof Error ? err.message : String(err) }, true);
314
+ }
315
+ });
316
+ return server;
317
+ }
318
+ //# sourceMappingURL=docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/servers/factories/docs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revealui/mcp",
3
- "version": "0.5.0",
3
+ "version": "0.6.1",
4
4
  "description": "Model Context Protocol framework — MCP server hypervisor, adapter pattern, tool discovery, and adapters for Stripe, Supabase, and Vercel.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -11,17 +11,17 @@
11
11
  "dependencies": {
12
12
  "@modelcontextprotocol/sdk": "^1.29.0",
13
13
  "dotenv": "^17.4.1",
14
- "jose": "^6.2.3",
15
- "@revealui/config": "0.4.1",
16
- "@revealui/contracts": "0.6.0",
17
- "@revealui/core": "0.8.0",
18
- "@revealui/security": "0.4.0"
14
+ "jose": "^5.10.0",
15
+ "@revealui/config": "0.4.2",
16
+ "@revealui/contracts": "0.6.1",
17
+ "@revealui/security": "0.4.1",
18
+ "@revealui/core": "0.10.0"
19
19
  },
20
20
  "devDependencies": {
21
- "@electric-sql/pglite": "^0.4.5",
21
+ "@electric-sql/pglite": "^0.5.1",
22
22
  "pg": "^8.21.0",
23
23
  "typescript": "^6.0.3",
24
- "vitest": "^4.1.5"
24
+ "vitest": "^4.1.8"
25
25
  },
26
26
  "engines": {
27
27
  "node": ">=24.13.0"
@@ -59,6 +59,10 @@
59
59
  "types": "./dist/servers/factories/contracts.d.ts",
60
60
  "import": "./dist/servers/factories/contracts.js"
61
61
  },
62
+ "./docs-server": {
63
+ "types": "./dist/servers/factories/docs.d.ts",
64
+ "import": "./dist/servers/factories/docs.js"
65
+ },
62
66
  "./hypervisor": {
63
67
  "types": "./dist/hypervisor.d.ts",
64
68
  "import": "./dist/hypervisor.js"