@dereekb/firebase-server 13.25.0 → 13.26.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.
- package/mailgun/package.json +9 -9
- package/mcp/index.cjs.js +187 -119
- package/mcp/index.esm.js +188 -120
- package/mcp/package.json +11 -11
- package/mcp/src/lib/controller/mcp.wellknown.controller.d.ts +10 -1
- package/mcp/src/lib/mcp.config.d.ts +27 -0
- package/mcp/src/lib/mcp.module.d.ts +5 -1
- package/model/package.json +9 -9
- package/oidc/index.cjs.js +1 -0
- package/oidc/index.esm.js +1 -0
- package/oidc/package.json +10 -10
- package/package.json +10 -10
- package/test/package.json +11 -11
- package/twilio/package.json +8 -8
- package/zoho/package.json +9 -9
package/mcp/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/mcp",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.26.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/analytics": "13.
|
|
6
|
-
"@dereekb/date": "13.
|
|
7
|
-
"@dereekb/firebase": "13.
|
|
8
|
-
"@dereekb/firebase-server": "13.
|
|
9
|
-
"@dereekb/firebase-server/oidc": "13.
|
|
10
|
-
"@dereekb/model": "13.
|
|
11
|
-
"@dereekb/nestjs": "13.
|
|
12
|
-
"@dereekb/rxjs": "13.
|
|
13
|
-
"@dereekb/util": "13.
|
|
14
|
-
"@dereekb/zoho": "13.
|
|
5
|
+
"@dereekb/analytics": "13.26.0",
|
|
6
|
+
"@dereekb/date": "13.26.0",
|
|
7
|
+
"@dereekb/firebase": "13.26.0",
|
|
8
|
+
"@dereekb/firebase-server": "13.26.0",
|
|
9
|
+
"@dereekb/firebase-server/oidc": "13.26.0",
|
|
10
|
+
"@dereekb/model": "13.26.0",
|
|
11
|
+
"@dereekb/nestjs": "13.26.0",
|
|
12
|
+
"@dereekb/rxjs": "13.26.0",
|
|
13
|
+
"@dereekb/util": "13.26.0",
|
|
14
|
+
"@dereekb/zoho": "13.26.0",
|
|
15
15
|
"@modelcontextprotocol/sdk": "1.29.0",
|
|
16
16
|
"@nestjs/common": "^11.1.19",
|
|
17
17
|
"@nestjs/core": "^11.1.19",
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { OidcProviderConfigService } from '@dereekb/firebase-server/oidc';
|
|
1
2
|
import { McpModuleConfig } from '../mcp.config';
|
|
3
|
+
import { type OidcScope } from '@dereekb/firebase';
|
|
2
4
|
/**
|
|
3
5
|
* Discovery document body for the OAuth protected-resource indicator.
|
|
4
6
|
*
|
|
@@ -7,6 +9,12 @@ import { McpModuleConfig } from '../mcp.config';
|
|
|
7
9
|
export interface OAuthProtectedResourceMetadata {
|
|
8
10
|
readonly resource: string;
|
|
9
11
|
readonly authorization_servers: ReadonlyArray<string>;
|
|
12
|
+
/**
|
|
13
|
+
* Scopes the resource accepts (RFC 9728 §2). Advertised so dynamic-registration
|
|
14
|
+
* MCP clients (e.g. the Claude Code CLI) know which scopes to request on the
|
|
15
|
+
* authorization call. Omitted when {@link McpModuleConfig.scopesSupported} is unset.
|
|
16
|
+
*/
|
|
17
|
+
readonly scopes_supported?: ReadonlyArray<OidcScope>;
|
|
10
18
|
}
|
|
11
19
|
/**
|
|
12
20
|
* Serves the `GET /.well-known/oauth-protected-resource` metadata document so
|
|
@@ -20,6 +28,7 @@ export interface OAuthProtectedResourceMetadata {
|
|
|
20
28
|
*/
|
|
21
29
|
export declare class McpWellKnownController {
|
|
22
30
|
private readonly mcpConfig;
|
|
23
|
-
|
|
31
|
+
private readonly oidcProviderConfigService;
|
|
32
|
+
constructor(mcpConfig: McpModuleConfig, oidcProviderConfigService: OidcProviderConfigService);
|
|
24
33
|
getProtectedResourceMetadata(): OAuthProtectedResourceMetadata;
|
|
25
34
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type AuthClaims, type AuthRoleSet } from '@dereekb/util';
|
|
2
|
+
import { type OidcScope } from '@dereekb/firebase';
|
|
2
3
|
/**
|
|
3
4
|
* Default path the MCP Streamable HTTP transport is mounted at.
|
|
4
5
|
*
|
|
@@ -79,6 +80,13 @@ export interface McpReasonParameterConfig {
|
|
|
79
80
|
*/
|
|
80
81
|
readonly parameterName?: string;
|
|
81
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Filter applied to the OIDC provider's advertised scope list when building the MCP
|
|
85
|
+
* protected-resource metadata's `scopes_supported`. Receives every scope the provider
|
|
86
|
+
* issues (from `OidcProviderConfigService.scopesSupported`) and returns the subset to
|
|
87
|
+
* advertise. Supplied via {@link McpModuleConfig.scopesSupported}; when unset, all are advertised.
|
|
88
|
+
*/
|
|
89
|
+
export type McpScopesSupportedFilter = (allScopes: readonly OidcScope[]) => readonly OidcScope[];
|
|
82
90
|
/**
|
|
83
91
|
* Configuration for the firebase-server/mcp module.
|
|
84
92
|
*
|
|
@@ -114,6 +122,25 @@ export declare abstract class McpModuleConfig {
|
|
|
114
122
|
* @example 'https://api.example.com/mcp'
|
|
115
123
|
*/
|
|
116
124
|
readonly mcpUrl: string;
|
|
125
|
+
/**
|
|
126
|
+
* Optional filter applied to the OIDC provider's scope list when building the
|
|
127
|
+
* protected-resource discovery document's `scopes_supported` (RFC 9728 §2).
|
|
128
|
+
*
|
|
129
|
+
* The base list is pulled automatically from the OIDC provider config via the
|
|
130
|
+
* injected {@link OidcProviderConfigService.scopesSupported} (i.e.
|
|
131
|
+
* `Object.keys(providerConfig.claims)`), so the MCP resource advertises exactly
|
|
132
|
+
* the scopes the issuer supports without the app restating them. Provide this
|
|
133
|
+
* only to narrow that set — it receives every scope the provider issues and
|
|
134
|
+
* returns the subset to advertise. When unset, all of them are advertised.
|
|
135
|
+
*
|
|
136
|
+
* Advertising these matters because dynamic-registration MCP clients (the Claude
|
|
137
|
+
* Code CLI) read `scopes_supported` to decide which scopes to request on the
|
|
138
|
+
* authorization call; with none advertised they authorize with no `scope`, leaving
|
|
139
|
+
* the OIDC provider nothing to grant and ending the interaction in `access_denied`.
|
|
140
|
+
*
|
|
141
|
+
* @example (allScopes) => allScopes.filter((scope) => scope === 'openid' || scope.startsWith('model.'))
|
|
142
|
+
*/
|
|
143
|
+
readonly scopesSupported?: McpScopesSupportedFilter;
|
|
117
144
|
/**
|
|
118
145
|
* Optional name advertised on the MCP `initialize` handshake. Defaults to
|
|
119
146
|
* {@link DEFAULT_MCP_SERVER_NAME}.
|
|
@@ -16,10 +16,14 @@ export interface McpModuleMetadataConfig extends Pick<ModuleMetadata, 'imports'
|
|
|
16
16
|
* Must provide:
|
|
17
17
|
* - {@link ModelApiDispatchConfig} — so the MCP server can reuse the call model dispatch chain.
|
|
18
18
|
* - {@link McpModuleConfig} — issuer + resource URLs for protected-resource discovery.
|
|
19
|
+
* - `OidcProviderConfigService` (from `@dereekb/firebase-server/oidc`) — the `McpWellKnownController`
|
|
20
|
+
* reads the provider's `scopesSupported` to advertise them on the protected-resource document.
|
|
19
21
|
*
|
|
20
22
|
* In practice, downstream apps typically import their own `*ModelApiModule` first (which provides
|
|
21
23
|
* `ModelApiCallModelDispatchService` + `MODEL_API_NEST_APPLICATION_CONTEXT`) and add the
|
|
22
|
-
* `McpModuleConfig` provider in the dependency module passed here.
|
|
24
|
+
* `McpModuleConfig` provider in the dependency module passed here. The `OidcProviderConfigService`
|
|
25
|
+
* export is satisfied by re-exporting the app's `*OidcModule` from the dependency module (the shared
|
|
26
|
+
* `oidcModuleMetadata` exports the service, so re-exporting the module propagates it to the controller).
|
|
23
27
|
*/
|
|
24
28
|
readonly dependencyModule: ClassType;
|
|
25
29
|
}
|
package/model/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/model",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.26.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/analytics": "13.
|
|
6
|
-
"@dereekb/date": "13.
|
|
7
|
-
"@dereekb/firebase": "13.
|
|
8
|
-
"@dereekb/firebase-server": "13.
|
|
9
|
-
"@dereekb/model": "13.
|
|
10
|
-
"@dereekb/nestjs": "13.
|
|
11
|
-
"@dereekb/rxjs": "13.
|
|
12
|
-
"@dereekb/util": "13.
|
|
5
|
+
"@dereekb/analytics": "13.26.0",
|
|
6
|
+
"@dereekb/date": "13.26.0",
|
|
7
|
+
"@dereekb/firebase": "13.26.0",
|
|
8
|
+
"@dereekb/firebase-server": "13.26.0",
|
|
9
|
+
"@dereekb/model": "13.26.0",
|
|
10
|
+
"@dereekb/nestjs": "13.26.0",
|
|
11
|
+
"@dereekb/rxjs": "13.26.0",
|
|
12
|
+
"@dereekb/util": "13.26.0",
|
|
13
13
|
"@nestjs/common": "^11.1.19",
|
|
14
14
|
"@nestjs/config": "^4.0.4",
|
|
15
15
|
"archiver": "^7.0.1",
|
package/oidc/index.cjs.js
CHANGED
|
@@ -7447,6 +7447,7 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
7447
7447
|
exports: [
|
|
7448
7448
|
OidcClientService,
|
|
7449
7449
|
exports.OidcService,
|
|
7450
|
+
exports.OidcProviderConfigService,
|
|
7450
7451
|
OidcModuleConfig,
|
|
7451
7452
|
OidcAuthMiddlewareConfig,
|
|
7452
7453
|
OidcServerFirestoreCollections
|
package/oidc/index.esm.js
CHANGED
package/oidc/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/oidc",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.26.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/analytics": "13.
|
|
6
|
-
"@dereekb/date": "13.
|
|
7
|
-
"@dereekb/firebase": "13.
|
|
8
|
-
"@dereekb/firebase-server": "13.
|
|
9
|
-
"@dereekb/model": "13.
|
|
10
|
-
"@dereekb/nestjs": "13.
|
|
11
|
-
"@dereekb/rxjs": "13.
|
|
12
|
-
"@dereekb/util": "13.
|
|
13
|
-
"@dereekb/zoho": "13.
|
|
5
|
+
"@dereekb/analytics": "13.26.0",
|
|
6
|
+
"@dereekb/date": "13.26.0",
|
|
7
|
+
"@dereekb/firebase": "13.26.0",
|
|
8
|
+
"@dereekb/firebase-server": "13.26.0",
|
|
9
|
+
"@dereekb/model": "13.26.0",
|
|
10
|
+
"@dereekb/nestjs": "13.26.0",
|
|
11
|
+
"@dereekb/rxjs": "13.26.0",
|
|
12
|
+
"@dereekb/util": "13.26.0",
|
|
13
|
+
"@dereekb/zoho": "13.26.0",
|
|
14
14
|
"@nestjs/common": "^11.1.19",
|
|
15
15
|
"@nestjs/config": "^4.0.4",
|
|
16
16
|
"express": "^5.2.1",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.26.0",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"exports": {
|
|
6
6
|
"./test": {
|
|
@@ -57,15 +57,15 @@
|
|
|
57
57
|
"types": "./src/index.d.ts",
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"@cantoo/pdf-lib": "^2.6.5",
|
|
60
|
-
"@dereekb/analytics": "13.
|
|
61
|
-
"@dereekb/date": "13.
|
|
62
|
-
"@dereekb/dbx-core": "13.
|
|
63
|
-
"@dereekb/firebase": "13.
|
|
64
|
-
"@dereekb/model": "13.
|
|
65
|
-
"@dereekb/nestjs": "13.
|
|
66
|
-
"@dereekb/rxjs": "13.
|
|
67
|
-
"@dereekb/util": "13.
|
|
68
|
-
"@dereekb/zoho": "13.
|
|
60
|
+
"@dereekb/analytics": "13.26.0",
|
|
61
|
+
"@dereekb/date": "13.26.0",
|
|
62
|
+
"@dereekb/dbx-core": "13.26.0",
|
|
63
|
+
"@dereekb/firebase": "13.26.0",
|
|
64
|
+
"@dereekb/model": "13.26.0",
|
|
65
|
+
"@dereekb/nestjs": "13.26.0",
|
|
66
|
+
"@dereekb/rxjs": "13.26.0",
|
|
67
|
+
"@dereekb/util": "13.26.0",
|
|
68
|
+
"@dereekb/zoho": "13.26.0",
|
|
69
69
|
"@google-cloud/firestore": "^7.11.6",
|
|
70
70
|
"@google-cloud/storage": "^7.19.0",
|
|
71
71
|
"@modelcontextprotocol/sdk": "1.29.0",
|
package/test/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/test",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.26.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/analytics": "13.
|
|
6
|
-
"@dereekb/date": "13.
|
|
7
|
-
"@dereekb/firebase": "13.
|
|
8
|
-
"@dereekb/firebase-server": "13.
|
|
9
|
-
"@dereekb/firebase-server/oidc": "13.
|
|
10
|
-
"@dereekb/model": "13.
|
|
11
|
-
"@dereekb/nestjs": "13.
|
|
12
|
-
"@dereekb/rxjs": "13.
|
|
13
|
-
"@dereekb/util": "13.
|
|
5
|
+
"@dereekb/analytics": "13.26.0",
|
|
6
|
+
"@dereekb/date": "13.26.0",
|
|
7
|
+
"@dereekb/firebase": "13.26.0",
|
|
8
|
+
"@dereekb/firebase-server": "13.26.0",
|
|
9
|
+
"@dereekb/firebase-server/oidc": "13.26.0",
|
|
10
|
+
"@dereekb/model": "13.26.0",
|
|
11
|
+
"@dereekb/nestjs": "13.26.0",
|
|
12
|
+
"@dereekb/rxjs": "13.26.0",
|
|
13
|
+
"@dereekb/util": "13.26.0",
|
|
14
14
|
"@google-cloud/firestore": "^7.11.6",
|
|
15
15
|
"@google-cloud/storage": "^7.19.0",
|
|
16
16
|
"@nestjs/common": "^11.1.19",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"supertest": "^7.2.2"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@dereekb/nestjs": "13.
|
|
26
|
+
"@dereekb/nestjs": "13.26.0"
|
|
27
27
|
},
|
|
28
28
|
"exports": {
|
|
29
29
|
"./package.json": "./package.json",
|
package/twilio/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/twilio",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.26.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/date": "13.
|
|
6
|
-
"@dereekb/firebase": "13.
|
|
7
|
-
"@dereekb/firebase-server": "13.
|
|
8
|
-
"@dereekb/model": "13.
|
|
9
|
-
"@dereekb/nestjs": "13.
|
|
10
|
-
"@dereekb/rxjs": "13.
|
|
11
|
-
"@dereekb/util": "13.
|
|
5
|
+
"@dereekb/date": "13.26.0",
|
|
6
|
+
"@dereekb/firebase": "13.26.0",
|
|
7
|
+
"@dereekb/firebase-server": "13.26.0",
|
|
8
|
+
"@dereekb/model": "13.26.0",
|
|
9
|
+
"@dereekb/nestjs": "13.26.0",
|
|
10
|
+
"@dereekb/rxjs": "13.26.0",
|
|
11
|
+
"@dereekb/util": "13.26.0"
|
|
12
12
|
},
|
|
13
13
|
"exports": {
|
|
14
14
|
"./package.json": "./package.json",
|
package/zoho/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/zoho",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.26.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/analytics": "13.
|
|
6
|
-
"@dereekb/date": "13.
|
|
7
|
-
"@dereekb/model": "13.
|
|
8
|
-
"@dereekb/nestjs": "13.
|
|
9
|
-
"@dereekb/rxjs": "13.
|
|
10
|
-
"@dereekb/firebase": "13.
|
|
11
|
-
"@dereekb/util": "13.
|
|
12
|
-
"@dereekb/zoho": "13.
|
|
5
|
+
"@dereekb/analytics": "13.26.0",
|
|
6
|
+
"@dereekb/date": "13.26.0",
|
|
7
|
+
"@dereekb/model": "13.26.0",
|
|
8
|
+
"@dereekb/nestjs": "13.26.0",
|
|
9
|
+
"@dereekb/rxjs": "13.26.0",
|
|
10
|
+
"@dereekb/firebase": "13.26.0",
|
|
11
|
+
"@dereekb/util": "13.26.0",
|
|
12
|
+
"@dereekb/zoho": "13.26.0"
|
|
13
13
|
},
|
|
14
14
|
"exports": {
|
|
15
15
|
"./package.json": "./package.json",
|