youtube-knowledge-mcp 2.0.2 → 2.2.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/README.md +166 -33
- package/dist/brain-schemas.d.ts +502 -0
- package/dist/brain-schemas.d.ts.map +1 -0
- package/dist/brain-schemas.js +109 -0
- package/dist/brain-schemas.js.map +1 -0
- package/dist/http/app.d.ts +16 -0
- package/dist/http/app.d.ts.map +1 -0
- package/dist/http/app.js +176 -0
- package/dist/http/app.js.map +1 -0
- package/dist/http/auth.d.ts +38 -0
- package/dist/http/auth.d.ts.map +1 -0
- package/dist/http/auth.js +79 -0
- package/dist/http/auth.js.map +1 -0
- package/dist/http/config.d.ts +41 -0
- package/dist/http/config.d.ts.map +1 -0
- package/dist/http/config.js +65 -0
- package/dist/http/config.js.map +1 -0
- package/dist/http/rate-limiter.d.ts +24 -0
- package/dist/http/rate-limiter.d.ts.map +1 -0
- package/dist/http/rate-limiter.js +55 -0
- package/dist/http/rate-limiter.js.map +1 -0
- package/dist/http/sessions.d.ts +34 -0
- package/dist/http/sessions.d.ts.map +1 -0
- package/dist/http/sessions.js +62 -0
- package/dist/http/sessions.js.map +1 -0
- package/dist/http.d.ts +6 -48
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +35 -252
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -431
- package/dist/index.js.map +1 -1
- package/dist/prompts-brain.d.ts +4 -0
- package/dist/prompts-brain.d.ts.map +1 -0
- package/dist/prompts-brain.js +48 -0
- package/dist/prompts-brain.js.map +1 -0
- package/dist/prompts-research.d.ts +4 -0
- package/dist/prompts-research.d.ts.map +1 -0
- package/dist/prompts-research.js +74 -0
- package/dist/prompts-research.js.map +1 -0
- package/dist/prompts-shared.d.ts +13 -0
- package/dist/prompts-shared.d.ts.map +1 -0
- package/dist/prompts-shared.js +7 -0
- package/dist/prompts-shared.js.map +1 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +5 -58
- package/dist/prompts.js.map +1 -1
- package/dist/registry/brain-tools.d.ts +4 -0
- package/dist/registry/brain-tools.d.ts.map +1 -0
- package/dist/registry/brain-tools.js +104 -0
- package/dist/registry/brain-tools.js.map +1 -0
- package/dist/registry/channel-tools.d.ts +4 -0
- package/dist/registry/channel-tools.d.ts.map +1 -0
- package/dist/registry/channel-tools.js +53 -0
- package/dist/registry/channel-tools.js.map +1 -0
- package/dist/registry/health-tools.d.ts +4 -0
- package/dist/registry/health-tools.d.ts.map +1 -0
- package/dist/registry/health-tools.js +21 -0
- package/dist/registry/health-tools.js.map +1 -0
- package/dist/registry/index.d.ts +8 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +27 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/library-tools.d.ts +4 -0
- package/dist/registry/library-tools.d.ts.map +1 -0
- package/dist/registry/library-tools.js +116 -0
- package/dist/registry/library-tools.js.map +1 -0
- package/dist/registry/media-tools.d.ts +4 -0
- package/dist/registry/media-tools.d.ts.map +1 -0
- package/dist/registry/media-tools.js +100 -0
- package/dist/registry/media-tools.js.map +1 -0
- package/dist/registry/thumbnail-tools.d.ts +7 -0
- package/dist/registry/thumbnail-tools.d.ts.map +1 -0
- package/dist/registry/thumbnail-tools.js +72 -0
- package/dist/registry/thumbnail-tools.js.map +1 -0
- package/dist/registry/transcript-tools.d.ts +4 -0
- package/dist/registry/transcript-tools.d.ts.map +1 -0
- package/dist/registry/transcript-tools.js +68 -0
- package/dist/registry/transcript-tools.js.map +1 -0
- package/dist/registry/types.d.ts +41 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +17 -0
- package/dist/registry/types.js.map +1 -0
- package/dist/registry/video-tools.d.ts +4 -0
- package/dist/registry/video-tools.d.ts.map +1 -0
- package/dist/registry/video-tools.js +101 -0
- package/dist/registry/video-tools.js.map +1 -0
- package/dist/resources.d.ts.map +1 -1
- package/dist/resources.js +75 -6
- package/dist/resources.js.map +1 -1
- package/dist/schemas.d.ts +74 -54
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +30 -4
- package/dist/schemas.js.map +1 -1
- package/dist/thumbnail-resource.d.ts +8 -0
- package/dist/thumbnail-resource.d.ts.map +1 -0
- package/dist/thumbnail-resource.js +38 -0
- package/dist/thumbnail-resource.js.map +1 -0
- package/dist/thumbnail-schemas.d.ts +512 -0
- package/dist/thumbnail-schemas.d.ts.map +1 -0
- package/dist/thumbnail-schemas.js +95 -0
- package/dist/thumbnail-schemas.js.map +1 -0
- package/dist/tools/ask-brain.d.ts +62 -0
- package/dist/tools/ask-brain.d.ts.map +1 -0
- package/dist/tools/ask-brain.js +70 -0
- package/dist/tools/ask-brain.js.map +1 -0
- package/dist/tools/batch.d.ts +10 -10
- package/dist/tools/batch.js +3 -3
- package/dist/tools/batch.js.map +1 -1
- package/dist/tools/brain-info.d.ts +180 -0
- package/dist/tools/brain-info.d.ts.map +1 -0
- package/dist/tools/brain-info.js +108 -0
- package/dist/tools/brain-info.js.map +1 -0
- package/dist/tools/build-brain.d.ts +120 -0
- package/dist/tools/build-brain.d.ts.map +1 -0
- package/dist/tools/build-brain.js +123 -0
- package/dist/tools/build-brain.js.map +1 -0
- package/dist/tools/check-health.d.ts +2 -0
- package/dist/tools/check-health.d.ts.map +1 -1
- package/dist/tools/check-health.js +9 -0
- package/dist/tools/check-health.js.map +1 -1
- package/dist/tools/clips.d.ts +13 -45
- package/dist/tools/clips.d.ts.map +1 -1
- package/dist/tools/clips.js +52 -128
- package/dist/tools/clips.js.map +1 -1
- package/dist/tools/fetch-channel-thumbnails.d.ts +179 -0
- package/dist/tools/fetch-channel-thumbnails.d.ts.map +1 -0
- package/dist/tools/fetch-channel-thumbnails.js +123 -0
- package/dist/tools/fetch-channel-thumbnails.js.map +1 -0
- package/dist/tools/fetch-videos.d.ts +11 -8
- package/dist/tools/fetch-videos.d.ts.map +1 -1
- package/dist/tools/fetch-videos.js +3 -0
- package/dist/tools/fetch-videos.js.map +1 -1
- package/dist/tools/frames-subtitles.d.ts +44 -0
- package/dist/tools/frames-subtitles.d.ts.map +1 -0
- package/dist/tools/frames-subtitles.js +104 -0
- package/dist/tools/frames-subtitles.js.map +1 -0
- package/dist/tools/get-channel-info.d.ts +2 -0
- package/dist/tools/get-channel-info.d.ts.map +1 -1
- package/dist/tools/get-channel-info.js +8 -1
- package/dist/tools/get-channel-info.js.map +1 -1
- package/dist/tools/get-chapters.d.ts +2 -2
- package/dist/tools/get-comments.d.ts +2 -2
- package/dist/tools/get-playlist-info.d.ts.map +1 -1
- package/dist/tools/get-playlist-info.js +1 -0
- package/dist/tools/get-playlist-info.js.map +1 -1
- package/dist/tools/get-thumbnail.d.ts +38 -0
- package/dist/tools/get-thumbnail.d.ts.map +1 -0
- package/dist/tools/get-thumbnail.js +152 -0
- package/dist/tools/get-thumbnail.js.map +1 -0
- package/dist/tools/get-transcript.d.ts +2 -2
- package/dist/tools/get-transcript.d.ts.map +1 -1
- package/dist/tools/get-transcript.js +2 -14
- package/dist/tools/get-transcript.js.map +1 -1
- package/dist/tools/library.d.ts +9 -7
- package/dist/tools/library.d.ts.map +1 -1
- package/dist/tools/library.js +23 -7
- package/dist/tools/library.js.map +1 -1
- package/dist/tools/list-channel-thumbnails.d.ts +235 -0
- package/dist/tools/list-channel-thumbnails.d.ts.map +1 -0
- package/dist/tools/list-channel-thumbnails.js +79 -0
- package/dist/tools/list-channel-thumbnails.js.map +1 -0
- package/dist/tools/list-library.d.ts +4 -4
- package/dist/tools/manage-brain.d.ts +39 -0
- package/dist/tools/manage-brain.d.ts.map +1 -0
- package/dist/tools/manage-brain.js +53 -0
- package/dist/tools/manage-brain.js.map +1 -0
- package/dist/tools/save-to-library.d.ts.map +1 -1
- package/dist/tools/save-to-library.js +5 -1
- package/dist/tools/save-to-library.js.map +1 -1
- package/dist/tools/search-channels.d.ts +10 -4
- package/dist/tools/search-channels.d.ts.map +1 -1
- package/dist/tools/search-transcript.d.ts +2 -2
- package/dist/tools/search-transcript.d.ts.map +1 -1
- package/dist/tools/search-transcript.js +6 -13
- package/dist/tools/search-transcript.js.map +1 -1
- package/dist/tools/search-videos.d.ts +11 -8
- package/dist/tools/search-videos.d.ts.map +1 -1
- package/dist/utils/batches.d.ts +15 -0
- package/dist/utils/batches.d.ts.map +1 -0
- package/dist/utils/batches.js +31 -0
- package/dist/utils/batches.js.map +1 -0
- package/dist/utils/brain-build.d.ts +40 -0
- package/dist/utils/brain-build.d.ts.map +1 -0
- package/dist/utils/brain-build.js +200 -0
- package/dist/utils/brain-build.js.map +1 -0
- package/dist/utils/brain-chunks.d.ts +33 -0
- package/dist/utils/brain-chunks.d.ts.map +1 -0
- package/dist/utils/brain-chunks.js +87 -0
- package/dist/utils/brain-chunks.js.map +1 -0
- package/dist/utils/brain-index.d.ts +27 -0
- package/dist/utils/brain-index.d.ts.map +1 -0
- package/dist/utils/brain-index.js +101 -0
- package/dist/utils/brain-index.js.map +1 -0
- package/dist/utils/brain-ingest.d.ts +57 -0
- package/dist/utils/brain-ingest.d.ts.map +1 -0
- package/dist/utils/brain-ingest.js +127 -0
- package/dist/utils/brain-ingest.js.map +1 -0
- package/dist/utils/brain-lock.d.ts +4 -0
- package/dist/utils/brain-lock.d.ts.map +1 -0
- package/dist/utils/brain-lock.js +17 -0
- package/dist/utils/brain-lock.js.map +1 -0
- package/dist/utils/brain-lookup.d.ts +11 -0
- package/dist/utils/brain-lookup.d.ts.map +1 -0
- package/dist/utils/brain-lookup.js +36 -0
- package/dist/utils/brain-lookup.js.map +1 -0
- package/dist/utils/brain-paths.d.ts +19 -0
- package/dist/utils/brain-paths.d.ts.map +1 -0
- package/dist/utils/brain-paths.js +34 -0
- package/dist/utils/brain-paths.js.map +1 -0
- package/dist/utils/brain-phrases.d.ts +31 -0
- package/dist/utils/brain-phrases.d.ts.map +1 -0
- package/dist/utils/brain-phrases.js +116 -0
- package/dist/utils/brain-phrases.js.map +1 -0
- package/dist/utils/brain-stats.d.ts +25 -0
- package/dist/utils/brain-stats.d.ts.map +1 -0
- package/dist/utils/brain-stats.js +64 -0
- package/dist/utils/brain-stats.js.map +1 -0
- package/dist/utils/brain-storage.d.ts +28 -0
- package/dist/utils/brain-storage.d.ts.map +1 -0
- package/dist/utils/brain-storage.js +87 -0
- package/dist/utils/brain-storage.js.map +1 -0
- package/dist/utils/caption-probe.d.ts +7 -0
- package/dist/utils/caption-probe.d.ts.map +1 -0
- package/dist/utils/caption-probe.js +36 -0
- package/dist/utils/caption-probe.js.map +1 -0
- package/dist/utils/channel-images.d.ts +16 -0
- package/dist/utils/channel-images.d.ts.map +1 -0
- package/dist/utils/channel-images.js +35 -0
- package/dist/utils/channel-images.js.map +1 -0
- package/dist/utils/channel-lookup.d.ts +5 -0
- package/dist/utils/channel-lookup.d.ts.map +1 -0
- package/dist/utils/channel-lookup.js +37 -0
- package/dist/utils/channel-lookup.js.map +1 -0
- package/dist/utils/chapters.d.ts +11 -0
- package/dist/utils/chapters.d.ts.map +1 -0
- package/dist/utils/chapters.js +24 -0
- package/dist/utils/chapters.js.map +1 -0
- package/dist/utils/clips.d.ts.map +1 -1
- package/dist/utils/clips.js +22 -30
- package/dist/utils/clips.js.map +1 -1
- package/dist/utils/env.d.ts +26 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +72 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/errors.d.ts +1 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +20 -2
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/file-lock.d.ts +34 -0
- package/dist/utils/file-lock.d.ts.map +1 -0
- package/dist/utils/file-lock.js +91 -0
- package/dist/utils/file-lock.js.map +1 -0
- package/dist/utils/flat-listing.d.ts +89 -0
- package/dist/utils/flat-listing.d.ts.map +1 -0
- package/dist/utils/flat-listing.js +68 -0
- package/dist/utils/flat-listing.js.map +1 -0
- package/dist/utils/format.d.ts +1 -3
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +1 -5
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/guard.d.ts +21 -0
- package/dist/utils/guard.d.ts.map +1 -0
- package/dist/utils/guard.js +105 -0
- package/dist/utils/guard.js.map +1 -0
- package/dist/utils/image-dimensions.d.ts +19 -0
- package/dist/utils/image-dimensions.d.ts.map +1 -0
- package/dist/utils/image-dimensions.js +93 -0
- package/dist/utils/image-dimensions.js.map +1 -0
- package/dist/utils/image-fetch.d.ts +31 -0
- package/dist/utils/image-fetch.d.ts.map +1 -0
- package/dist/utils/image-fetch.js +141 -0
- package/dist/utils/image-fetch.js.map +1 -0
- package/dist/utils/json-file.d.ts +45 -0
- package/dist/utils/json-file.d.ts.map +1 -0
- package/dist/utils/json-file.js +60 -0
- package/dist/utils/json-file.js.map +1 -0
- package/dist/utils/paths.d.ts +19 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +27 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/pattern.d.ts +30 -0
- package/dist/utils/pattern.d.ts.map +1 -0
- package/dist/utils/pattern.js +130 -0
- package/dist/utils/pattern.js.map +1 -0
- package/dist/utils/search-index.d.ts +22 -7
- package/dist/utils/search-index.d.ts.map +1 -1
- package/dist/utils/search-index.js +26 -8
- package/dist/utils/search-index.js.map +1 -1
- package/dist/utils/storage.d.ts +14 -44
- package/dist/utils/storage.d.ts.map +1 -1
- package/dist/utils/storage.js +47 -84
- package/dist/utils/storage.js.map +1 -1
- package/dist/utils/subtitles.d.ts +7 -0
- package/dist/utils/subtitles.d.ts.map +1 -0
- package/dist/utils/subtitles.js +30 -0
- package/dist/utils/subtitles.js.map +1 -0
- package/dist/utils/thumbnail-entry.d.ts +19 -0
- package/dist/utils/thumbnail-entry.d.ts.map +1 -0
- package/dist/utils/thumbnail-entry.js +119 -0
- package/dist/utils/thumbnail-entry.js.map +1 -0
- package/dist/utils/thumbnail-fetch.d.ts +37 -0
- package/dist/utils/thumbnail-fetch.d.ts.map +1 -0
- package/dist/utils/thumbnail-fetch.js +89 -0
- package/dist/utils/thumbnail-fetch.js.map +1 -0
- package/dist/utils/thumbnail-ladder.d.ts +44 -0
- package/dist/utils/thumbnail-ladder.d.ts.map +1 -0
- package/dist/utils/thumbnail-ladder.js +68 -0
- package/dist/utils/thumbnail-ladder.js.map +1 -0
- package/dist/utils/thumbnail-listing.d.ts +16 -0
- package/dist/utils/thumbnail-listing.d.ts.map +1 -0
- package/dist/utils/thumbnail-listing.js +26 -0
- package/dist/utils/thumbnail-listing.js.map +1 -0
- package/dist/utils/thumbnail-paths.d.ts +20 -0
- package/dist/utils/thumbnail-paths.d.ts.map +1 -0
- package/dist/utils/thumbnail-paths.js +35 -0
- package/dist/utils/thumbnail-paths.js.map +1 -0
- package/dist/utils/thumbnail-store.d.ts +19 -0
- package/dist/utils/thumbnail-store.d.ts.map +1 -0
- package/dist/utils/thumbnail-store.js +125 -0
- package/dist/utils/thumbnail-store.js.map +1 -0
- package/dist/utils/transcript-cache.d.ts +20 -0
- package/dist/utils/transcript-cache.d.ts.map +1 -0
- package/dist/utils/transcript-cache.js +127 -0
- package/dist/utils/transcript-cache.js.map +1 -0
- package/dist/utils/transcript-search.d.ts +20 -0
- package/dist/utils/transcript-search.d.ts.map +1 -0
- package/dist/utils/transcript-search.js +35 -0
- package/dist/utils/transcript-search.js.map +1 -0
- package/dist/utils/transcript.d.ts +14 -34
- package/dist/utils/transcript.d.ts.map +1 -1
- package/dist/utils/transcript.js +5 -64
- package/dist/utils/transcript.js.map +1 -1
- package/dist/utils/validate-youtube.d.ts +35 -0
- package/dist/utils/validate-youtube.d.ts.map +1 -0
- package/dist/utils/validate-youtube.js +87 -0
- package/dist/utils/validate-youtube.js.map +1 -0
- package/dist/utils/validate.d.ts +11 -3
- package/dist/utils/validate.d.ts.map +1 -1
- package/dist/utils/validate.js +43 -18
- package/dist/utils/validate.js.map +1 -1
- package/dist/utils/version.d.ts +2 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +19 -0
- package/dist/utils/version.js.map +1 -0
- package/dist/utils/youtube-channel.d.ts +44 -0
- package/dist/utils/youtube-channel.d.ts.map +1 -0
- package/dist/utils/youtube-channel.js +61 -0
- package/dist/utils/youtube-channel.js.map +1 -0
- package/dist/utils/youtube-download.d.ts +27 -0
- package/dist/utils/youtube-download.d.ts.map +1 -0
- package/dist/utils/youtube-download.js +118 -0
- package/dist/utils/youtube-download.js.map +1 -0
- package/dist/utils/youtube-schemas.d.ts +394 -0
- package/dist/utils/youtube-schemas.d.ts.map +1 -0
- package/dist/utils/youtube-schemas.js +118 -0
- package/dist/utils/youtube-schemas.js.map +1 -0
- package/dist/utils/youtube-search.d.ts +14 -0
- package/dist/utils/youtube-search.d.ts.map +1 -0
- package/dist/utils/youtube-search.js +39 -0
- package/dist/utils/youtube-search.js.map +1 -0
- package/dist/utils/youtube-url.d.ts +25 -0
- package/dist/utils/youtube-url.d.ts.map +1 -0
- package/dist/utils/youtube-url.js +75 -0
- package/dist/utils/youtube-url.js.map +1 -0
- package/dist/utils/youtube-video.d.ts +47 -0
- package/dist/utils/youtube-video.d.ts.map +1 -0
- package/dist/utils/youtube-video.js +98 -0
- package/dist/utils/youtube-video.js.map +1 -0
- package/dist/utils/youtube.d.ts +13 -111
- package/dist/utils/youtube.d.ts.map +1 -1
- package/dist/utils/youtube.js +11 -480
- package/dist/utils/youtube.js.map +1 -1
- package/dist/utils/ytdlp-env.d.ts +33 -0
- package/dist/utils/ytdlp-env.d.ts.map +1 -0
- package/dist/utils/ytdlp-env.js +121 -0
- package/dist/utils/ytdlp-env.js.map +1 -0
- package/dist/utils/ytdlp-limiter.d.ts +24 -0
- package/dist/utils/ytdlp-limiter.d.ts.map +1 -0
- package/dist/utils/ytdlp-limiter.js +69 -0
- package/dist/utils/ytdlp-limiter.js.map +1 -0
- package/dist/utils/ytdlp-parse.d.ts +13 -0
- package/dist/utils/ytdlp-parse.d.ts.map +1 -0
- package/dist/utils/ytdlp-parse.js +48 -0
- package/dist/utils/ytdlp-parse.js.map +1 -0
- package/dist/utils/ytdlp.d.ts +13 -18
- package/dist/utils/ytdlp.d.ts.map +1 -1
- package/dist/utils/ytdlp.js +21 -110
- package/dist/utils/ytdlp.js.map +1 -1
- package/package.json +2 -1
package/dist/http.d.ts
CHANGED
|
@@ -1,58 +1,16 @@
|
|
|
1
|
-
import type { Request } from 'express';
|
|
2
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { type HttpConfig } from './http/config.js';
|
|
3
3
|
/**
|
|
4
4
|
* Streamable HTTP transport.
|
|
5
5
|
*
|
|
6
6
|
* Split out of index.ts because it carries all of the deployment-facing
|
|
7
7
|
* concerns — authentication, origin validation, session lifetime, rate limits —
|
|
8
|
-
* none of which apply to the stdio path.
|
|
8
|
+
* none of which apply to the stdio path. The pieces live under `src/http/`;
|
|
9
|
+
* this module wires them together and owns the process-level lifecycle.
|
|
9
10
|
*/
|
|
10
|
-
export
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
bindHost: string;
|
|
14
|
-
/** When set, every request must present this as a bearer token. */
|
|
15
|
-
authToken?: string;
|
|
16
|
-
/** Host header allowlist. Empty means "accept any", which is only safe behind a proxy. */
|
|
17
|
-
allowedHosts: string[];
|
|
18
|
-
/** Origin header allowlist for browser callers. */
|
|
19
|
-
allowedOrigins: string[];
|
|
20
|
-
rateLimit: number;
|
|
21
|
-
rateWindowMs: number;
|
|
22
|
-
/** Sessions idle longer than this are closed, so the map cannot grow forever. */
|
|
23
|
-
sessionIdleMs: number;
|
|
24
|
-
maxSessions: number;
|
|
25
|
-
}
|
|
26
|
-
export declare function readHttpConfig(): HttpConfig;
|
|
27
|
-
/** Fixed-window counter, per client. */
|
|
28
|
-
export declare class RateLimiter {
|
|
29
|
-
private readonly limit;
|
|
30
|
-
private readonly windowMs;
|
|
31
|
-
private readonly hits;
|
|
32
|
-
constructor(limit: number, windowMs: number);
|
|
33
|
-
check(key: string, now?: number): {
|
|
34
|
-
allowed: boolean;
|
|
35
|
-
remaining: number;
|
|
36
|
-
retryAfter: number;
|
|
37
|
-
};
|
|
38
|
-
sweep(now?: number): void;
|
|
39
|
-
get size(): number;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Compare a presented token against the configured one in constant time, so the
|
|
43
|
-
* endpoint does not leak the token's prefix through response timing.
|
|
44
|
-
*/
|
|
45
|
-
export declare function tokenMatches(presented: string | undefined, expected: string): boolean;
|
|
46
|
-
export declare function bearerToken(header: string | undefined): string | undefined;
|
|
47
|
-
export declare function clientKey(req: Request): string;
|
|
48
|
-
/**
|
|
49
|
-
* Node parses a repeated header into an array, so this field is genuinely
|
|
50
|
-
* `string | string[] | undefined`. Asserting it was always a string meant a
|
|
51
|
-
* request that sent `Mcp-Session-Id` twice reached `sessions.get()` holding an
|
|
52
|
-
* array, missed every session, and was reported as an invalid session ID.
|
|
53
|
-
* Ambiguous is treated as absent: two session IDs identify no session.
|
|
54
|
-
*/
|
|
55
|
-
export declare function sessionIdOf(req: Request): string | undefined;
|
|
11
|
+
export { bearerToken, clientKey, sessionIdOf, tokenMatches } from './http/auth.js';
|
|
12
|
+
export { assertSafeToStart, isLoopback, readHttpConfig, type HttpConfig } from './http/config.js';
|
|
13
|
+
export { RateLimiter } from './http/rate-limiter.js';
|
|
56
14
|
export interface HttpServerHandle {
|
|
57
15
|
close: () => Promise<void>;
|
|
58
16
|
/** Resolves once bound. Port 0 picks a free port, which tests rely on. */
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAqC,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKtF;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,0EAA0E;IAC1E,KAAK,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClC;AAED,wBAAgB,SAAS,CACvB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,EACzC,MAAM,GAAE,UAA6B,GACpC,gBAAgB,CA4ElB"}
|
package/dist/http.js
CHANGED
|
@@ -1,266 +1,52 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
1
|
+
import { buildApp } from './http/app.js';
|
|
2
|
+
import { assertSafeToStart, readHttpConfig } from './http/config.js';
|
|
3
|
+
import { RateLimiter } from './http/rate-limiter.js';
|
|
4
|
+
import { SessionStore } from './http/sessions.js';
|
|
6
5
|
import { formatPreflightReport, runPreflight } from './utils/preflight.js';
|
|
7
|
-
function envList(name) {
|
|
8
|
-
return (process.env[name] ?? '')
|
|
9
|
-
.split(',')
|
|
10
|
-
.map((value) => value.trim())
|
|
11
|
-
.filter(Boolean);
|
|
12
|
-
}
|
|
13
|
-
function envInt(name, fallback) {
|
|
14
|
-
const parsed = Number.parseInt(process.env[name] ?? '', 10);
|
|
15
|
-
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
|
|
16
|
-
}
|
|
17
|
-
export function readHttpConfig() {
|
|
18
|
-
return {
|
|
19
|
-
port: envInt('PORT', 3000),
|
|
20
|
-
bindHost: process.env.MCP_BIND_HOST ?? '0.0.0.0',
|
|
21
|
-
// An empty MCP_AUTH_TOKEN must mean "no auth", not "the empty token".
|
|
22
|
-
authToken: process.env.MCP_AUTH_TOKEN?.trim() === '' ? undefined : process.env.MCP_AUTH_TOKEN,
|
|
23
|
-
allowedHosts: envList('MCP_ALLOWED_HOSTS'),
|
|
24
|
-
allowedOrigins: envList('MCP_ALLOWED_ORIGINS'),
|
|
25
|
-
rateLimit: envInt('MCP_RATE_LIMIT', 60),
|
|
26
|
-
rateWindowMs: envInt('MCP_RATE_WINDOW_MS', 60_000),
|
|
27
|
-
sessionIdleMs: envInt('MCP_SESSION_IDLE_MS', 30 * 60_000),
|
|
28
|
-
maxSessions: envInt('MCP_MAX_SESSIONS', 1000),
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
/** Fixed-window counter, per client. */
|
|
32
|
-
export class RateLimiter {
|
|
33
|
-
limit;
|
|
34
|
-
windowMs;
|
|
35
|
-
hits = new Map();
|
|
36
|
-
constructor(limit, windowMs) {
|
|
37
|
-
this.limit = limit;
|
|
38
|
-
this.windowMs = windowMs;
|
|
39
|
-
}
|
|
40
|
-
check(key, now = Date.now()) {
|
|
41
|
-
const entry = this.hits.get(key);
|
|
42
|
-
if (!entry || now > entry.resetAt) {
|
|
43
|
-
this.hits.set(key, { count: 1, resetAt: now + this.windowMs });
|
|
44
|
-
return { allowed: true, remaining: this.limit - 1, retryAfter: 0 };
|
|
45
|
-
}
|
|
46
|
-
entry.count++;
|
|
47
|
-
const allowed = entry.count <= this.limit;
|
|
48
|
-
return {
|
|
49
|
-
allowed,
|
|
50
|
-
remaining: Math.max(0, this.limit - entry.count),
|
|
51
|
-
retryAfter: allowed ? 0 : Math.ceil((entry.resetAt - now) / 1000),
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
sweep(now = Date.now()) {
|
|
55
|
-
for (const [key, entry] of this.hits) {
|
|
56
|
-
if (now > entry.resetAt)
|
|
57
|
-
this.hits.delete(key);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
get size() {
|
|
61
|
-
return this.hits.size;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
6
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
7
|
+
* Streamable HTTP transport.
|
|
8
|
+
*
|
|
9
|
+
* Split out of index.ts because it carries all of the deployment-facing
|
|
10
|
+
* concerns — authentication, origin validation, session lifetime, rate limits —
|
|
11
|
+
* none of which apply to the stdio path. The pieces live under `src/http/`;
|
|
12
|
+
* this module wires them together and owns the process-level lifecycle.
|
|
67
13
|
*/
|
|
68
|
-
export
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const a = Buffer.from(presented);
|
|
72
|
-
const b = Buffer.from(expected);
|
|
73
|
-
// timingSafeEqual throws on length mismatch, which would itself be a leak;
|
|
74
|
-
// hash-free equalisation keeps the comparison constant-time for equal lengths
|
|
75
|
-
// and constant-result for unequal ones.
|
|
76
|
-
if (a.length !== b.length) {
|
|
77
|
-
timingSafeEqual(a, a);
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
return timingSafeEqual(a, b);
|
|
81
|
-
}
|
|
82
|
-
export function bearerToken(header) {
|
|
83
|
-
if (!header)
|
|
84
|
-
return undefined;
|
|
85
|
-
const match = /^Bearer\s+(.+)$/i.exec(header.trim());
|
|
86
|
-
return match?.[1];
|
|
87
|
-
}
|
|
88
|
-
export function clientKey(req) {
|
|
89
|
-
const forwarded = req.headers['x-forwarded-for'];
|
|
90
|
-
const first = Array.isArray(forwarded) ? forwarded[0] : forwarded;
|
|
91
|
-
return first?.split(',')[0]?.trim() ?? req.socket.remoteAddress ?? 'unknown';
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Node parses a repeated header into an array, so this field is genuinely
|
|
95
|
-
* `string | string[] | undefined`. Asserting it was always a string meant a
|
|
96
|
-
* request that sent `Mcp-Session-Id` twice reached `sessions.get()` holding an
|
|
97
|
-
* array, missed every session, and was reported as an invalid session ID.
|
|
98
|
-
* Ambiguous is treated as absent: two session IDs identify no session.
|
|
99
|
-
*/
|
|
100
|
-
export function sessionIdOf(req) {
|
|
101
|
-
const header = req.headers['mcp-session-id'];
|
|
102
|
-
return typeof header === 'string' ? header : undefined;
|
|
103
|
-
}
|
|
104
|
-
function jsonRpcError(res, status, code, message) {
|
|
105
|
-
if (res.headersSent)
|
|
106
|
-
return;
|
|
107
|
-
res.writeHead(status, { 'Content-Type': 'application/json' });
|
|
108
|
-
res.end(JSON.stringify({ jsonrpc: '2.0', error: { code, message }, id: null }));
|
|
109
|
-
}
|
|
14
|
+
export { bearerToken, clientKey, sessionIdOf, tokenMatches } from './http/auth.js';
|
|
15
|
+
export { assertSafeToStart, isLoopback, readHttpConfig } from './http/config.js';
|
|
16
|
+
export { RateLimiter } from './http/rate-limiter.js';
|
|
110
17
|
export function startHttp(createServer, config = readHttpConfig()) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
// The SDK installs Host validation as global middleware, so everything
|
|
116
|
-
// mounted on its app is behind the allowlist — including the health check,
|
|
117
|
-
// which a probe reaches over loopback with `Host: 127.0.0.1:<port>`. Setting
|
|
118
|
-
// MCP_ALLOWED_HOSTS to a public hostname would then 403 the container's own
|
|
119
|
-
// HEALTHCHECK and every platform probe, and the service would never go live.
|
|
120
|
-
// The health route is therefore mounted here, ahead of that middleware, and
|
|
121
|
-
// the MCP app handles everything else with its allowlist intact.
|
|
122
|
-
const app = express();
|
|
18
|
+
// Before anything listens: an exposed, unauthenticated server is refused,
|
|
19
|
+
// not warned about.
|
|
20
|
+
assertSafeToStart(config);
|
|
21
|
+
let boundPort = config.port;
|
|
123
22
|
const limiter = new RateLimiter(config.rateLimit, config.rateWindowMs);
|
|
124
|
-
const sessions = new
|
|
23
|
+
const sessions = new SessionStore(config.maxSessions);
|
|
24
|
+
const app = buildApp(config, {
|
|
25
|
+
createServer,
|
|
26
|
+
sessions,
|
|
27
|
+
limiter,
|
|
28
|
+
port: () => boundPort,
|
|
29
|
+
startedAt: Date.now(),
|
|
30
|
+
});
|
|
125
31
|
// Both timers are unref'd: they must never be the reason the process stays up.
|
|
126
32
|
const sweeper = setInterval(() => {
|
|
127
33
|
const now = Date.now();
|
|
128
34
|
limiter.sweep(now);
|
|
129
|
-
|
|
130
|
-
if (now - session.lastSeen > config.sessionIdleMs) {
|
|
131
|
-
sessions.delete(id);
|
|
132
|
-
void session.transport.close();
|
|
133
|
-
}
|
|
134
|
-
}
|
|
35
|
+
sessions.sweep(now, config.sessionIdleMs);
|
|
135
36
|
}, 60_000);
|
|
136
37
|
sweeper.unref();
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
return true;
|
|
141
|
-
if (!tokenMatches(bearerToken(req.headers.authorization), config.authToken)) {
|
|
142
|
-
// RFC 9728: point unauthenticated callers at the resource metadata.
|
|
143
|
-
res.setHeader('WWW-Authenticate', `Bearer realm="youtube-knowledge-mcp", resource_metadata="${resourceMetadataUrl(req)}"`);
|
|
144
|
-
jsonRpcError(res, 401, -32001, 'Unauthorized');
|
|
145
|
-
return false;
|
|
146
|
-
}
|
|
147
|
-
return true;
|
|
148
|
-
}
|
|
149
|
-
function rateLimit(req, res) {
|
|
150
|
-
const { allowed, remaining, retryAfter } = limiter.check(clientKey(req));
|
|
151
|
-
res.setHeader('RateLimit-Limit', String(config.rateLimit));
|
|
152
|
-
res.setHeader('RateLimit-Remaining', String(remaining));
|
|
153
|
-
if (!allowed) {
|
|
154
|
-
// Without Retry-After a client has no idea how long to wait.
|
|
155
|
-
res.setHeader('Retry-After', String(retryAfter));
|
|
156
|
-
jsonRpcError(res, 429, -32000, `Rate limit exceeded. Retry in ${retryAfter}s.`);
|
|
157
|
-
return false;
|
|
158
|
-
}
|
|
159
|
-
return true;
|
|
160
|
-
}
|
|
161
|
-
function resourceMetadataUrl(req) {
|
|
162
|
-
const host = req.headers.host ?? `localhost:${config.port}`;
|
|
163
|
-
const proto = req.headers['x-forwarded-proto'] ?? 'https';
|
|
164
|
-
return `${String(proto)}://${host}/.well-known/oauth-protected-resource`;
|
|
165
|
-
}
|
|
166
|
-
mcpApp.post('/mcp', async (req, res) => {
|
|
167
|
-
if (!rateLimit(req, res))
|
|
168
|
-
return;
|
|
169
|
-
if (!authorize(req, res))
|
|
170
|
-
return;
|
|
171
|
-
const sessionId = sessionIdOf(req);
|
|
172
|
-
try {
|
|
173
|
-
const existing = sessionId ? sessions.get(sessionId) : undefined;
|
|
174
|
-
if (existing) {
|
|
175
|
-
existing.lastSeen = Date.now();
|
|
176
|
-
await existing.transport.handleRequest(req, res, req.body);
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
if (!sessionId && isInitializeRequest(req.body)) {
|
|
180
|
-
if (sessions.size >= config.maxSessions) {
|
|
181
|
-
jsonRpcError(res, 503, -32000, 'Server is at capacity. Try again shortly.');
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
184
|
-
const transport = new StreamableHTTPServerTransport({
|
|
185
|
-
sessionIdGenerator: () => randomUUID(),
|
|
186
|
-
...(config.allowedHosts.length > 0 || config.allowedOrigins.length > 0
|
|
187
|
-
? {
|
|
188
|
-
enableDnsRebindingProtection: true,
|
|
189
|
-
allowedHosts: config.allowedHosts,
|
|
190
|
-
allowedOrigins: config.allowedOrigins,
|
|
191
|
-
}
|
|
192
|
-
: {}),
|
|
193
|
-
onsessioninitialized: (id) => {
|
|
194
|
-
sessions.set(id, { transport, lastSeen: Date.now() });
|
|
195
|
-
},
|
|
196
|
-
});
|
|
197
|
-
transport.onclose = () => {
|
|
198
|
-
if (transport.sessionId)
|
|
199
|
-
sessions.delete(transport.sessionId);
|
|
200
|
-
};
|
|
201
|
-
await createServer('http').connect(transport);
|
|
202
|
-
await transport.handleRequest(req, res, req.body);
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
jsonRpcError(res, 400, -32000, 'Bad Request: No valid session ID provided');
|
|
206
|
-
}
|
|
207
|
-
catch (error) {
|
|
208
|
-
console.error('Error handling MCP request:', error);
|
|
209
|
-
jsonRpcError(res, 500, -32603, 'Internal server error');
|
|
210
|
-
}
|
|
211
|
-
});
|
|
212
|
-
const bySession = async (req, res) => {
|
|
213
|
-
if (!authorize(req, res))
|
|
214
|
-
return;
|
|
215
|
-
const sessionId = sessionIdOf(req);
|
|
216
|
-
const session = sessionId ? sessions.get(sessionId) : undefined;
|
|
217
|
-
if (!session) {
|
|
218
|
-
jsonRpcError(res, 404, -32001, 'Invalid or missing session ID');
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
session.lastSeen = Date.now();
|
|
222
|
-
await session.transport.handleRequest(req, res);
|
|
223
|
-
};
|
|
224
|
-
mcpApp.get('/mcp', bySession);
|
|
225
|
-
mcpApp.delete('/mcp', bySession);
|
|
226
|
-
// RFC 9728 protected-resource metadata, so OAuth-capable clients can discover
|
|
227
|
-
// how to authenticate instead of guessing.
|
|
228
|
-
mcpApp.get('/.well-known/oauth-protected-resource', (req, res) => {
|
|
229
|
-
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
230
|
-
res.end(JSON.stringify({
|
|
231
|
-
resource: `${String(req.headers['x-forwarded-proto'] ?? 'https')}://${req.headers.host ?? ''}/mcp`,
|
|
232
|
-
bearer_methods_supported: ['header'],
|
|
233
|
-
resource_documentation: 'https://github.com/teobouancheau/youtube-knowledge-mcp#readme',
|
|
234
|
-
}));
|
|
235
|
-
});
|
|
236
|
-
// Unauthenticated on purpose: platform health probes cannot carry a token.
|
|
237
|
-
// Registered before the MCP app so it also sits ahead of that app's Host
|
|
238
|
-
// validation; it exposes binary versions and a session count, nothing a Host
|
|
239
|
-
// allowlist protects.
|
|
240
|
-
app.get('/health', (_req, res) => {
|
|
241
|
-
void runPreflight().then((report) => {
|
|
242
|
-
res.writeHead(report.ok ? 200 : 503, { 'Content-Type': 'application/json' });
|
|
243
|
-
res.end(JSON.stringify({
|
|
244
|
-
status: report.ok ? 'ok' : 'degraded',
|
|
245
|
-
ytDlp: report.ytDlp,
|
|
246
|
-
ffmpeg: report.ffmpeg,
|
|
247
|
-
sessions: sessions.size,
|
|
248
|
-
}));
|
|
249
|
-
});
|
|
250
|
-
});
|
|
251
|
-
// Everything else — /mcp and the resource metadata — is served by the SDK's
|
|
252
|
-
// app, so its Host allowlist and JSON body parsing still apply in full.
|
|
253
|
-
app.use(mcpApp);
|
|
254
|
-
let announceReady = () => undefined;
|
|
38
|
+
// A promise executor runs synchronously, so the resolver is assigned before
|
|
39
|
+
// anything can call it; the assertion states that rather than a dummy default.
|
|
40
|
+
let announceReady;
|
|
255
41
|
const ready = new Promise((resolve) => {
|
|
256
42
|
announceReady = resolve;
|
|
257
43
|
});
|
|
258
|
-
const httpServer = app.listen(config.port, () => {
|
|
44
|
+
const httpServer = app.listen(config.port, config.bindHost, () => {
|
|
259
45
|
const address = httpServer.address();
|
|
260
|
-
|
|
261
|
-
announceReady({ port });
|
|
262
|
-
console.error(`MCP Streamable HTTP server listening on ${config.bindHost}:${
|
|
263
|
-
console.error(`MCP endpoint: http://localhost:${
|
|
46
|
+
boundPort = typeof address === 'object' && address !== null ? address.port : config.port;
|
|
47
|
+
announceReady({ port: boundPort });
|
|
48
|
+
console.error(`MCP Streamable HTTP server listening on ${config.bindHost}:${boundPort}`);
|
|
49
|
+
console.error(`MCP endpoint: http://localhost:${boundPort}/mcp`);
|
|
264
50
|
console.error(config.authToken
|
|
265
51
|
? 'Authentication: bearer token required'
|
|
266
52
|
: 'Authentication: DISABLED — set MCP_AUTH_TOKEN to require a bearer token');
|
|
@@ -283,10 +69,7 @@ export function startHttp(createServer, config = readHttpConfig()) {
|
|
|
283
69
|
for (const signal of signals)
|
|
284
70
|
process.off(signal, onSignal);
|
|
285
71
|
clearInterval(sweeper);
|
|
286
|
-
|
|
287
|
-
sessions.delete(id);
|
|
288
|
-
await session.transport.close();
|
|
289
|
-
}
|
|
72
|
+
await sessions.closeAll();
|
|
290
73
|
await new Promise((resolve) => httpServer.close(() => {
|
|
291
74
|
resolve();
|
|
292
75
|
}));
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuBpE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,GAAE,OAAO,GAAG,MAAgB,GAAG,SAAS,CAWxE;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,IAAI,OAAO,GAAG,MAAM,CAKnD;AAQD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKvD;AAED,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAa1C"}
|