@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 +14 -6
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/servers/docs.d.ts +18 -0
- package/dist/servers/docs.d.ts.map +1 -0
- package/dist/servers/docs.js +46 -0
- package/dist/servers/docs.js.map +1 -0
- package/dist/servers/factories/docs.d.ts +105 -0
- package/dist/servers/factories/docs.d.ts.map +1 -0
- package/dist/servers/factories/docs.js +318 -0
- package/dist/servers/factories/docs.js.map +1 -0
- package/package.json +12 -8
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
|
-
- **
|
|
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
|
|
21
|
-
> Install: `pnpm add @revealui/mcp
|
|
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
|
|
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,
|
|
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
|
-
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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.
|
|
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": "^
|
|
15
|
-
"@revealui/config": "0.4.
|
|
16
|
-
"@revealui/contracts": "0.6.
|
|
17
|
-
"@revealui/
|
|
18
|
-
"@revealui/
|
|
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.
|
|
21
|
+
"@electric-sql/pglite": "^0.5.1",
|
|
22
22
|
"pg": "^8.21.0",
|
|
23
23
|
"typescript": "^6.0.3",
|
|
24
|
-
"vitest": "^4.1.
|
|
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"
|