youtube-knowledge-mcp 1.1.1 → 2.0.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 +221 -177
- package/dist/http.d.ts +64 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +283 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +19 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +342 -164
- package/dist/index.js.map +1 -1
- package/dist/prompts.d.ts +3 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +167 -0
- package/dist/prompts.js.map +1 -0
- package/dist/resources.d.ts +10 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +72 -0
- package/dist/resources.js.map +1 -0
- package/dist/schemas.d.ts +326 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +128 -0
- package/dist/schemas.js.map +1 -0
- package/dist/tools/batch.d.ts +111 -0
- package/dist/tools/batch.d.ts.map +1 -0
- package/dist/tools/batch.js +187 -0
- package/dist/tools/batch.js.map +1 -0
- package/dist/tools/check-health.d.ts +59 -0
- package/dist/tools/check-health.d.ts.map +1 -0
- package/dist/tools/check-health.js +38 -0
- package/dist/tools/check-health.js.map +1 -0
- package/dist/tools/clips.d.ts +158 -0
- package/dist/tools/clips.d.ts.map +1 -0
- package/dist/tools/clips.js +279 -0
- package/dist/tools/clips.js.map +1 -0
- package/dist/tools/download-video.d.ts +43 -12
- package/dist/tools/download-video.d.ts.map +1 -1
- package/dist/tools/download-video.js +32 -3
- package/dist/tools/download-video.js.map +1 -1
- package/dist/tools/fetch-videos.d.ts +39 -7
- package/dist/tools/fetch-videos.d.ts.map +1 -1
- package/dist/tools/fetch-videos.js +20 -3
- package/dist/tools/fetch-videos.js.map +1 -1
- package/dist/tools/get-channel-info.d.ts +11 -7
- package/dist/tools/get-channel-info.d.ts.map +1 -1
- package/dist/tools/get-channel-info.js +5 -3
- package/dist/tools/get-channel-info.js.map +1 -1
- package/dist/tools/get-chapters.d.ts +28 -6
- package/dist/tools/get-chapters.d.ts.map +1 -1
- package/dist/tools/get-chapters.js +24 -4
- package/dist/tools/get-chapters.js.map +1 -1
- package/dist/tools/get-comments.d.ts +26 -7
- package/dist/tools/get-comments.d.ts.map +1 -1
- package/dist/tools/get-comments.js +10 -4
- package/dist/tools/get-comments.js.map +1 -1
- package/dist/tools/get-playlist-info.d.ts +13 -6
- package/dist/tools/get-playlist-info.d.ts.map +1 -1
- package/dist/tools/get-playlist-info.js +4 -2
- package/dist/tools/get-playlist-info.js.map +1 -1
- package/dist/tools/get-transcript.d.ts +42 -7
- package/dist/tools/get-transcript.d.ts.map +1 -1
- package/dist/tools/get-transcript.js +139 -10
- package/dist/tools/get-transcript.js.map +1 -1
- package/dist/tools/get-video-info.d.ts +17 -6
- package/dist/tools/get-video-info.d.ts.map +1 -1
- package/dist/tools/get-video-info.js +5 -2
- package/dist/tools/get-video-info.js.map +1 -1
- package/dist/tools/library.d.ts +127 -0
- package/dist/tools/library.d.ts.map +1 -0
- package/dist/tools/library.js +118 -0
- package/dist/tools/library.js.map +1 -0
- package/dist/tools/list-library.d.ts +40 -6
- package/dist/tools/list-library.d.ts.map +1 -1
- package/dist/tools/list-library.js +8 -2
- package/dist/tools/list-library.js.map +1 -1
- package/dist/tools/save-to-library.d.ts +9 -6
- package/dist/tools/save-to-library.d.ts.map +1 -1
- package/dist/tools/save-to-library.js +9 -2
- package/dist/tools/save-to-library.js.map +1 -1
- package/dist/tools/search-channels.d.ts +33 -7
- package/dist/tools/search-channels.d.ts.map +1 -1
- package/dist/tools/search-channels.js +11 -4
- package/dist/tools/search-channels.js.map +1 -1
- package/dist/tools/search-transcript.d.ts +52 -0
- package/dist/tools/search-transcript.d.ts.map +1 -0
- package/dist/tools/search-transcript.js +103 -0
- package/dist/tools/search-transcript.js.map +1 -0
- package/dist/tools/search-videos.d.ts +39 -7
- package/dist/tools/search-videos.d.ts.map +1 -1
- package/dist/tools/search-videos.js +21 -3
- package/dist/tools/search-videos.js.map +1 -1
- package/dist/utils/clips.d.ts +69 -0
- package/dist/utils/clips.d.ts.map +1 -0
- package/dist/utils/clips.js +202 -0
- package/dist/utils/clips.js.map +1 -0
- package/dist/utils/context.d.ts +24 -0
- package/dist/utils/context.d.ts.map +1 -0
- package/dist/utils/context.js +19 -0
- package/dist/utils/context.js.map +1 -0
- package/dist/utils/errors.d.ts +58 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +152 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/format.d.ts +34 -5
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +45 -0
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/preflight.d.ts +30 -0
- package/dist/utils/preflight.d.ts.map +1 -0
- package/dist/utils/preflight.js +79 -0
- package/dist/utils/preflight.js.map +1 -0
- package/dist/utils/search-index.d.ts +58 -0
- package/dist/utils/search-index.d.ts.map +1 -0
- package/dist/utils/search-index.js +192 -0
- package/dist/utils/search-index.js.map +1 -0
- package/dist/utils/storage.d.ts +83 -6
- package/dist/utils/storage.d.ts.map +1 -1
- package/dist/utils/storage.js +204 -21
- package/dist/utils/storage.js.map +1 -1
- package/dist/utils/transcript.d.ts +142 -0
- package/dist/utils/transcript.d.ts.map +1 -0
- package/dist/utils/transcript.js +216 -0
- package/dist/utils/transcript.js.map +1 -0
- package/dist/utils/validate.d.ts +16 -0
- package/dist/utils/validate.d.ts.map +1 -0
- package/dist/utils/validate.js +64 -0
- package/dist/utils/validate.js.map +1 -0
- package/dist/utils/youtube.d.ts +15 -1
- package/dist/utils/youtube.d.ts.map +1 -1
- package/dist/utils/youtube.js +231 -174
- package/dist/utils/youtube.js.map +1 -1
- package/dist/utils/ytdlp.d.ts +51 -0
- package/dist/utils/ytdlp.d.ts.map +1 -0
- package/dist/utils/ytdlp.js +191 -0
- package/dist/utils/ytdlp.js.map +1 -0
- package/package.json +20 -15
package/dist/http.js
ADDED
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import { randomUUID, timingSafeEqual } from 'node:crypto';
|
|
2
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
3
|
+
import { createMcpExpressApp } from '@modelcontextprotocol/sdk/server/express.js';
|
|
4
|
+
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
5
|
+
import { formatPreflightReport, runPreflight } from './utils/preflight.js';
|
|
6
|
+
function envList(name) {
|
|
7
|
+
return (process.env[name] ?? '')
|
|
8
|
+
.split(',')
|
|
9
|
+
.map((value) => value.trim())
|
|
10
|
+
.filter(Boolean);
|
|
11
|
+
}
|
|
12
|
+
function envInt(name, fallback) {
|
|
13
|
+
const parsed = Number.parseInt(process.env[name] ?? '', 10);
|
|
14
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
|
|
15
|
+
}
|
|
16
|
+
export function readHttpConfig() {
|
|
17
|
+
return {
|
|
18
|
+
port: envInt('PORT', 3000),
|
|
19
|
+
bindHost: process.env.MCP_BIND_HOST ?? '0.0.0.0',
|
|
20
|
+
// An empty MCP_AUTH_TOKEN must mean "no auth", not "the empty token".
|
|
21
|
+
authToken: process.env.MCP_AUTH_TOKEN?.trim() === '' ? undefined : process.env.MCP_AUTH_TOKEN,
|
|
22
|
+
allowedHosts: envList('MCP_ALLOWED_HOSTS'),
|
|
23
|
+
allowedOrigins: envList('MCP_ALLOWED_ORIGINS'),
|
|
24
|
+
rateLimit: envInt('MCP_RATE_LIMIT', 60),
|
|
25
|
+
rateWindowMs: envInt('MCP_RATE_WINDOW_MS', 60_000),
|
|
26
|
+
sessionIdleMs: envInt('MCP_SESSION_IDLE_MS', 30 * 60_000),
|
|
27
|
+
maxSessions: envInt('MCP_MAX_SESSIONS', 1000),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/** Fixed-window counter, per client. */
|
|
31
|
+
export class RateLimiter {
|
|
32
|
+
limit;
|
|
33
|
+
windowMs;
|
|
34
|
+
hits = new Map();
|
|
35
|
+
constructor(limit, windowMs) {
|
|
36
|
+
this.limit = limit;
|
|
37
|
+
this.windowMs = windowMs;
|
|
38
|
+
}
|
|
39
|
+
check(key, now = Date.now()) {
|
|
40
|
+
const entry = this.hits.get(key);
|
|
41
|
+
if (!entry || now > entry.resetAt) {
|
|
42
|
+
this.hits.set(key, { count: 1, resetAt: now + this.windowMs });
|
|
43
|
+
return { allowed: true, remaining: this.limit - 1, retryAfter: 0 };
|
|
44
|
+
}
|
|
45
|
+
entry.count++;
|
|
46
|
+
const allowed = entry.count <= this.limit;
|
|
47
|
+
return {
|
|
48
|
+
allowed,
|
|
49
|
+
remaining: Math.max(0, this.limit - entry.count),
|
|
50
|
+
retryAfter: allowed ? 0 : Math.ceil((entry.resetAt - now) / 1000),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
sweep(now = Date.now()) {
|
|
54
|
+
for (const [key, entry] of this.hits) {
|
|
55
|
+
if (now > entry.resetAt)
|
|
56
|
+
this.hits.delete(key);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
get size() {
|
|
60
|
+
return this.hits.size;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Compare a presented token against the configured one in constant time, so the
|
|
65
|
+
* endpoint does not leak the token's prefix through response timing.
|
|
66
|
+
*/
|
|
67
|
+
export function tokenMatches(presented, expected) {
|
|
68
|
+
if (presented === undefined)
|
|
69
|
+
return false;
|
|
70
|
+
const a = Buffer.from(presented);
|
|
71
|
+
const b = Buffer.from(expected);
|
|
72
|
+
// timingSafeEqual throws on length mismatch, which would itself be a leak;
|
|
73
|
+
// hash-free equalisation keeps the comparison constant-time for equal lengths
|
|
74
|
+
// and constant-result for unequal ones.
|
|
75
|
+
if (a.length !== b.length) {
|
|
76
|
+
timingSafeEqual(a, a);
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
return timingSafeEqual(a, b);
|
|
80
|
+
}
|
|
81
|
+
export function bearerToken(header) {
|
|
82
|
+
if (!header)
|
|
83
|
+
return undefined;
|
|
84
|
+
const match = /^Bearer\s+(.+)$/i.exec(header.trim());
|
|
85
|
+
return match?.[1];
|
|
86
|
+
}
|
|
87
|
+
export function clientKey(req) {
|
|
88
|
+
const forwarded = req.headers['x-forwarded-for'];
|
|
89
|
+
const first = Array.isArray(forwarded) ? forwarded[0] : forwarded;
|
|
90
|
+
return first?.split(',')[0]?.trim() ?? req.socket.remoteAddress ?? 'unknown';
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Node parses a repeated header into an array, so this field is genuinely
|
|
94
|
+
* `string | string[] | undefined`. Asserting it was always a string meant a
|
|
95
|
+
* request that sent `Mcp-Session-Id` twice reached `sessions.get()` holding an
|
|
96
|
+
* array, missed every session, and was reported as an invalid session ID.
|
|
97
|
+
* Ambiguous is treated as absent: two session IDs identify no session.
|
|
98
|
+
*/
|
|
99
|
+
export function sessionIdOf(req) {
|
|
100
|
+
const header = req.headers['mcp-session-id'];
|
|
101
|
+
return typeof header === 'string' ? header : undefined;
|
|
102
|
+
}
|
|
103
|
+
function jsonRpcError(res, status, code, message) {
|
|
104
|
+
if (res.headersSent)
|
|
105
|
+
return;
|
|
106
|
+
res.writeHead(status, { 'Content-Type': 'application/json' });
|
|
107
|
+
res.end(JSON.stringify({ jsonrpc: '2.0', error: { code, message }, id: null }));
|
|
108
|
+
}
|
|
109
|
+
export function startHttp(createServer, config = readHttpConfig()) {
|
|
110
|
+
const app = createMcpExpressApp({
|
|
111
|
+
host: config.bindHost,
|
|
112
|
+
...(config.allowedHosts.length > 0 ? { allowedHosts: config.allowedHosts } : {}),
|
|
113
|
+
});
|
|
114
|
+
const limiter = new RateLimiter(config.rateLimit, config.rateWindowMs);
|
|
115
|
+
const sessions = new Map();
|
|
116
|
+
// Both timers are unref'd: they must never be the reason the process stays up.
|
|
117
|
+
const sweeper = setInterval(() => {
|
|
118
|
+
const now = Date.now();
|
|
119
|
+
limiter.sweep(now);
|
|
120
|
+
for (const [id, session] of sessions) {
|
|
121
|
+
if (now - session.lastSeen > config.sessionIdleMs) {
|
|
122
|
+
sessions.delete(id);
|
|
123
|
+
void session.transport.close();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}, 60_000);
|
|
127
|
+
sweeper.unref();
|
|
128
|
+
/** Returns true when the request may proceed; otherwise it has been answered. */
|
|
129
|
+
function authorize(req, res) {
|
|
130
|
+
if (!config.authToken)
|
|
131
|
+
return true;
|
|
132
|
+
if (!tokenMatches(bearerToken(req.headers.authorization), config.authToken)) {
|
|
133
|
+
// RFC 9728: point unauthenticated callers at the resource metadata.
|
|
134
|
+
res.setHeader('WWW-Authenticate', `Bearer realm="youtube-knowledge-mcp", resource_metadata="${resourceMetadataUrl(req)}"`);
|
|
135
|
+
jsonRpcError(res, 401, -32001, 'Unauthorized');
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
function rateLimit(req, res) {
|
|
141
|
+
const { allowed, remaining, retryAfter } = limiter.check(clientKey(req));
|
|
142
|
+
res.setHeader('RateLimit-Limit', String(config.rateLimit));
|
|
143
|
+
res.setHeader('RateLimit-Remaining', String(remaining));
|
|
144
|
+
if (!allowed) {
|
|
145
|
+
// Without Retry-After a client has no idea how long to wait.
|
|
146
|
+
res.setHeader('Retry-After', String(retryAfter));
|
|
147
|
+
jsonRpcError(res, 429, -32000, `Rate limit exceeded. Retry in ${retryAfter}s.`);
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
function resourceMetadataUrl(req) {
|
|
153
|
+
const host = req.headers.host ?? `localhost:${config.port}`;
|
|
154
|
+
const proto = req.headers['x-forwarded-proto'] ?? 'https';
|
|
155
|
+
return `${String(proto)}://${host}/.well-known/oauth-protected-resource`;
|
|
156
|
+
}
|
|
157
|
+
app.post('/mcp', async (req, res) => {
|
|
158
|
+
if (!rateLimit(req, res))
|
|
159
|
+
return;
|
|
160
|
+
if (!authorize(req, res))
|
|
161
|
+
return;
|
|
162
|
+
const sessionId = sessionIdOf(req);
|
|
163
|
+
try {
|
|
164
|
+
const existing = sessionId ? sessions.get(sessionId) : undefined;
|
|
165
|
+
if (existing) {
|
|
166
|
+
existing.lastSeen = Date.now();
|
|
167
|
+
await existing.transport.handleRequest(req, res, req.body);
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (!sessionId && isInitializeRequest(req.body)) {
|
|
171
|
+
if (sessions.size >= config.maxSessions) {
|
|
172
|
+
jsonRpcError(res, 503, -32000, 'Server is at capacity. Try again shortly.');
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
const transport = new StreamableHTTPServerTransport({
|
|
176
|
+
sessionIdGenerator: () => randomUUID(),
|
|
177
|
+
...(config.allowedHosts.length > 0 || config.allowedOrigins.length > 0
|
|
178
|
+
? {
|
|
179
|
+
enableDnsRebindingProtection: true,
|
|
180
|
+
allowedHosts: config.allowedHosts,
|
|
181
|
+
allowedOrigins: config.allowedOrigins,
|
|
182
|
+
}
|
|
183
|
+
: {}),
|
|
184
|
+
onsessioninitialized: (id) => {
|
|
185
|
+
sessions.set(id, { transport, lastSeen: Date.now() });
|
|
186
|
+
},
|
|
187
|
+
});
|
|
188
|
+
transport.onclose = () => {
|
|
189
|
+
if (transport.sessionId)
|
|
190
|
+
sessions.delete(transport.sessionId);
|
|
191
|
+
};
|
|
192
|
+
await createServer('http').connect(transport);
|
|
193
|
+
await transport.handleRequest(req, res, req.body);
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
jsonRpcError(res, 400, -32000, 'Bad Request: No valid session ID provided');
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
console.error('Error handling MCP request:', error);
|
|
200
|
+
jsonRpcError(res, 500, -32603, 'Internal server error');
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
const bySession = async (req, res) => {
|
|
204
|
+
if (!authorize(req, res))
|
|
205
|
+
return;
|
|
206
|
+
const sessionId = sessionIdOf(req);
|
|
207
|
+
const session = sessionId ? sessions.get(sessionId) : undefined;
|
|
208
|
+
if (!session) {
|
|
209
|
+
jsonRpcError(res, 404, -32001, 'Invalid or missing session ID');
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
session.lastSeen = Date.now();
|
|
213
|
+
await session.transport.handleRequest(req, res);
|
|
214
|
+
};
|
|
215
|
+
app.get('/mcp', bySession);
|
|
216
|
+
app.delete('/mcp', bySession);
|
|
217
|
+
// RFC 9728 protected-resource metadata, so OAuth-capable clients can discover
|
|
218
|
+
// how to authenticate instead of guessing.
|
|
219
|
+
app.get('/.well-known/oauth-protected-resource', (req, res) => {
|
|
220
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
221
|
+
res.end(JSON.stringify({
|
|
222
|
+
resource: `${String(req.headers['x-forwarded-proto'] ?? 'https')}://${req.headers.host ?? ''}/mcp`,
|
|
223
|
+
bearer_methods_supported: ['header'],
|
|
224
|
+
resource_documentation: 'https://github.com/teobouancheau/youtube-knowledge-mcp#readme',
|
|
225
|
+
}));
|
|
226
|
+
});
|
|
227
|
+
// Unauthenticated on purpose: platform health probes cannot carry a token.
|
|
228
|
+
app.get('/health', (_req, res) => {
|
|
229
|
+
void runPreflight().then((report) => {
|
|
230
|
+
res.writeHead(report.ok ? 200 : 503, { 'Content-Type': 'application/json' });
|
|
231
|
+
res.end(JSON.stringify({
|
|
232
|
+
status: report.ok ? 'ok' : 'degraded',
|
|
233
|
+
ytDlp: report.ytDlp,
|
|
234
|
+
ffmpeg: report.ffmpeg,
|
|
235
|
+
sessions: sessions.size,
|
|
236
|
+
}));
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
let announceReady = () => undefined;
|
|
240
|
+
const ready = new Promise((resolve) => {
|
|
241
|
+
announceReady = resolve;
|
|
242
|
+
});
|
|
243
|
+
const httpServer = app.listen(config.port, () => {
|
|
244
|
+
const address = httpServer.address();
|
|
245
|
+
const port = typeof address === 'object' && address !== null ? address.port : config.port;
|
|
246
|
+
announceReady({ port });
|
|
247
|
+
console.error(`MCP Streamable HTTP server listening on ${config.bindHost}:${port}`);
|
|
248
|
+
console.error(`MCP endpoint: http://localhost:${port}/mcp`);
|
|
249
|
+
console.error(config.authToken
|
|
250
|
+
? 'Authentication: bearer token required'
|
|
251
|
+
: 'Authentication: DISABLED — set MCP_AUTH_TOKEN to require a bearer token');
|
|
252
|
+
if (config.allowedHosts.length === 0 && config.allowedOrigins.length === 0) {
|
|
253
|
+
console.error('DNS rebinding protection: DISABLED — set MCP_ALLOWED_HOSTS and/or MCP_ALLOWED_ORIGINS to enable');
|
|
254
|
+
}
|
|
255
|
+
void runPreflight().then((report) => {
|
|
256
|
+
if (!report.ok)
|
|
257
|
+
console.error(formatPreflightReport(report));
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
// SIGTERM is what container platforms actually send; only SIGINT was handled.
|
|
261
|
+
const signals = ['SIGINT', 'SIGTERM'];
|
|
262
|
+
const onSignal = () => {
|
|
263
|
+
void close().then(() => process.exit(0));
|
|
264
|
+
};
|
|
265
|
+
const close = async () => {
|
|
266
|
+
// Detach first: a handle that has been closed must not keep the process
|
|
267
|
+
// alive through a listener, and repeated boots must not accumulate them.
|
|
268
|
+
for (const signal of signals)
|
|
269
|
+
process.off(signal, onSignal);
|
|
270
|
+
clearInterval(sweeper);
|
|
271
|
+
for (const [id, session] of sessions) {
|
|
272
|
+
sessions.delete(id);
|
|
273
|
+
await session.transport.close();
|
|
274
|
+
}
|
|
275
|
+
await new Promise((resolve) => httpServer.close(() => {
|
|
276
|
+
resolve();
|
|
277
|
+
}));
|
|
278
|
+
};
|
|
279
|
+
for (const signal of signals)
|
|
280
|
+
process.once(signal, onSignal);
|
|
281
|
+
return { close, ready };
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
+
/**
|
|
4
|
+
* Build a fully configured server.
|
|
5
|
+
*
|
|
6
|
+
* Exported so the test suite can drive it over an in-memory transport as a real
|
|
7
|
+
* MCP client, rather than only testing handlers in isolation.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createServer(mode?: 'stdio' | 'http'): McpServer;
|
|
10
|
+
/** An explicit flag wins over the environment, so a launcher can always override. */
|
|
11
|
+
export declare function getTransportMode(): 'stdio' | 'http';
|
|
12
|
+
/**
|
|
13
|
+
* Report missing or stale external binaries at boot.
|
|
14
|
+
*
|
|
15
|
+
* Deliberately non-fatal: the server still starts and still lists its tools, so
|
|
16
|
+
* a client can call check_health and be told exactly what to install. Exiting
|
|
17
|
+
* here would surface as an opaque "server failed to start" in the client.
|
|
18
|
+
*/
|
|
19
|
+
export declare function announcePreflight(): Promise<void>;
|
|
20
|
+
export declare function main(): Promise<void>;
|
|
3
21
|
//# sourceMappingURL=index.d.ts.map
|
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":";AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4NpE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,GAAE,OAAO,GAAG,MAAgB,GAAG,SAAS,CA2fxE;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,CAS1C"}
|