reportflow-mcp 1.1.3 → 1.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/dist/auth-context.d.ts +10 -0
- package/dist/auth-context.d.ts.map +1 -0
- package/dist/auth-context.js +10 -0
- package/dist/auth-context.js.map +1 -0
- package/dist/auth.d.ts +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +27 -3
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts +43 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +30 -4
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +23 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +62 -0
- package/dist/config.js.map +1 -0
- package/dist/http-server.d.ts +16 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +267 -0
- package/dist/http-server.js.map +1 -0
- package/dist/http.d.ts +14 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +15 -1
- package/dist/http.js.map +1 -1
- package/dist/index-http.d.ts +2 -0
- package/dist/index-http.d.ts.map +1 -0
- package/dist/index-http.js +14 -0
- package/dist/index-http.js.map +1 -0
- package/dist/server.d.ts +41 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +110 -53
- package/dist/server.js.map +1 -1
- package/dist/telemetry/client.d.ts +30 -0
- package/dist/telemetry/client.d.ts.map +1 -0
- package/dist/telemetry/client.js +85 -0
- package/dist/telemetry/client.js.map +1 -0
- package/dist/telemetry/index.d.ts +4 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +11 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/interceptor.d.ts +9 -0
- package/dist/telemetry/interceptor.d.ts.map +1 -0
- package/dist/telemetry/interceptor.js +72 -0
- package/dist/telemetry/interceptor.js.map +1 -0
- package/dist/tools/generate-pdf-sync.d.ts +32 -8
- package/dist/tools/generate-pdf-sync.d.ts.map +1 -1
- package/dist/tools/generate-pdf-sync.js +118 -10
- package/dist/tools/generate-pdf-sync.js.map +1 -1
- package/package.json +10 -1
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.startHttpServer = exports.buildHttpApp = void 0;
|
|
7
|
+
const express_1 = __importDefault(require("express"));
|
|
8
|
+
const cors_1 = __importDefault(require("cors"));
|
|
9
|
+
const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
|
|
10
|
+
const auth_context_js_1 = require("./auth-context.js");
|
|
11
|
+
const config_js_1 = require("./config.js");
|
|
12
|
+
const server_js_1 = require("./server.js");
|
|
13
|
+
const DEFAULT_PORT = 3000;
|
|
14
|
+
const PROTECTED_METHODS = new Set([
|
|
15
|
+
'tools/call',
|
|
16
|
+
'resources/read',
|
|
17
|
+
'resources/list',
|
|
18
|
+
'prompts/get',
|
|
19
|
+
]);
|
|
20
|
+
const wwwAuthenticateHeader = () => `Bearer realm="reportflow-mcp", resource_metadata="${config_js_1.MCP_RESOURCE_URL}/.well-known/oauth-protected-resource"`;
|
|
21
|
+
const respondUnauthorized = (res, description, errorCode = 'invalid_token') => {
|
|
22
|
+
res
|
|
23
|
+
.status(401)
|
|
24
|
+
.set('WWW-Authenticate', wwwAuthenticateHeader())
|
|
25
|
+
.json({ error: errorCode, error_description: description });
|
|
26
|
+
};
|
|
27
|
+
const extractBearer = (req) => {
|
|
28
|
+
const header = req.headers.authorization;
|
|
29
|
+
if (!header || typeof header !== 'string')
|
|
30
|
+
return null;
|
|
31
|
+
if (!header.startsWith('Bearer '))
|
|
32
|
+
return null;
|
|
33
|
+
const token = header.slice('Bearer '.length).trim();
|
|
34
|
+
return token.length > 0 ? token : null;
|
|
35
|
+
};
|
|
36
|
+
const requestNeedsAuth = (body) => {
|
|
37
|
+
const messages = Array.isArray(body) ? body : [body];
|
|
38
|
+
return messages.some((msg) => {
|
|
39
|
+
if (!msg || typeof msg !== 'object')
|
|
40
|
+
return false;
|
|
41
|
+
const method = msg.method;
|
|
42
|
+
return typeof method === 'string' && PROTECTED_METHODS.has(method);
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Express アプリケーションを構築して返す。listen は呼ばない。
|
|
47
|
+
* テストや埋め込み利用を想定。
|
|
48
|
+
*/
|
|
49
|
+
const buildHttpApp = () => {
|
|
50
|
+
const app = (0, express_1.default)();
|
|
51
|
+
app.use((0, cors_1.default)({
|
|
52
|
+
origin: true,
|
|
53
|
+
credentials: false,
|
|
54
|
+
exposedHeaders: ['Mcp-Session-Id', 'Mcp-Protocol-Version'],
|
|
55
|
+
allowedHeaders: [
|
|
56
|
+
'Content-Type',
|
|
57
|
+
'Authorization',
|
|
58
|
+
'Mcp-Session-Id',
|
|
59
|
+
'Mcp-Protocol-Version',
|
|
60
|
+
'Last-Event-ID',
|
|
61
|
+
],
|
|
62
|
+
}));
|
|
63
|
+
app.use(express_1.default.json({ limit: '4mb' }));
|
|
64
|
+
app.get('/healthz', (_req, res) => {
|
|
65
|
+
res.json({ status: 'ok' });
|
|
66
|
+
});
|
|
67
|
+
// RFC 9728 Protected Resource Metadata
|
|
68
|
+
app.get('/.well-known/oauth-protected-resource', (_req, res) => {
|
|
69
|
+
res
|
|
70
|
+
.set('Cache-Control', 'no-cache')
|
|
71
|
+
.json((0, config_js_1.buildProtectedResourceMetadata)());
|
|
72
|
+
});
|
|
73
|
+
// ─── OAuth Proxy ──────────────────────────────────────────────────────────
|
|
74
|
+
// claude.ai 等の MCP クライアントは AS Discovery を経由せず、MCP server URL に
|
|
75
|
+
// 直接 OAuth エンドポイントを叩いてくる実装が多い。このため MCP server で
|
|
76
|
+
// 上流 reposts-api の OAuth endpoints を proxy / redirect する。
|
|
77
|
+
//
|
|
78
|
+
// 認可フロー: AuthorizationCode + PKCE
|
|
79
|
+
// - GET /.well-known/oauth-authorization-server → AS metadata を返す
|
|
80
|
+
// - GET /authorize → 上流 /oauth/authorize へ 302 リダイレクト
|
|
81
|
+
// - POST /token → 上流 /oauth/token へ proxy (form / json 両対応、JSON に変換して転送)
|
|
82
|
+
// - POST /register → 上流 /oauth/register (DCR) へ proxy
|
|
83
|
+
// RFC 8414 Authorization Server Metadata
|
|
84
|
+
app.get('/.well-known/oauth-authorization-server', (_req, res) => {
|
|
85
|
+
res.set('Cache-Control', 'no-cache').json({
|
|
86
|
+
issuer: config_js_1.MCP_RESOURCE_URL,
|
|
87
|
+
authorization_endpoint: `${config_js_1.MCP_RESOURCE_URL}/authorize`,
|
|
88
|
+
token_endpoint: `${config_js_1.MCP_RESOURCE_URL}/token`,
|
|
89
|
+
registration_endpoint: `${config_js_1.MCP_RESOURCE_URL}/register`,
|
|
90
|
+
scopes_supported: [...config_js_1.SUPPORTED_SCOPES],
|
|
91
|
+
response_types_supported: ['code'],
|
|
92
|
+
grant_types_supported: ['authorization_code', 'refresh_token'],
|
|
93
|
+
code_challenge_methods_supported: ['S256'],
|
|
94
|
+
token_endpoint_auth_methods_supported: ['none'],
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
// /authorize: GET クエリをそのまま上流 /oauth/authorize に 302
|
|
98
|
+
// NOTE: REPORTFLOW_OAUTH_ISSUER_URL が path prefix (/api/v1) を含むため、
|
|
99
|
+
// new URL('/oauth/authorize', issuer) では leading slash で base path が
|
|
100
|
+
// リセットされてしまう。明示的に文字列結合してから URL を作る。
|
|
101
|
+
app.get('/authorize', (req, res) => {
|
|
102
|
+
const upstream = new URL(`${config_js_1.REPORTFLOW_OAUTH_ISSUER_URL}/oauth/authorize`);
|
|
103
|
+
Object.entries(req.query).forEach(([key, value]) => {
|
|
104
|
+
if (typeof value === 'string')
|
|
105
|
+
upstream.searchParams.set(key, value);
|
|
106
|
+
else if (Array.isArray(value)) {
|
|
107
|
+
for (const v of value) {
|
|
108
|
+
if (typeof v === 'string')
|
|
109
|
+
upstream.searchParams.append(key, v);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
res.redirect(302, upstream.toString());
|
|
114
|
+
});
|
|
115
|
+
// /token: POST body を上流 /oauth/token に proxy
|
|
116
|
+
// claude.ai は form-encoded で送ってくるが、reposts-api (Fastify) は JSON のみ受け付けるため
|
|
117
|
+
// 常に JSON に変換して転送する。RFC 8707 で resource は repeated key になり得るので
|
|
118
|
+
// 配列は単一要素の場合はスカラーに戻す(reposts-api は string を期待)。
|
|
119
|
+
app.post('/token', express_1.default.urlencoded({ extended: true }), (req, res) => {
|
|
120
|
+
const upstream = new URL(`${config_js_1.REPORTFLOW_OAUTH_ISSUER_URL}/oauth/token`);
|
|
121
|
+
const contentType = req.get('Content-Type') ?? 'application/json';
|
|
122
|
+
const isForm = contentType.includes('application/x-www-form-urlencoded');
|
|
123
|
+
let jsonBody;
|
|
124
|
+
if (isForm) {
|
|
125
|
+
jsonBody = {};
|
|
126
|
+
for (const [key, value] of Object.entries(req.body)) {
|
|
127
|
+
if (Array.isArray(value)) {
|
|
128
|
+
const strs = value.filter((v) => typeof v === 'string');
|
|
129
|
+
jsonBody[key] = strs.length === 1 ? strs[0] : strs;
|
|
130
|
+
}
|
|
131
|
+
else if (typeof value === 'string') {
|
|
132
|
+
jsonBody[key] = value;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
jsonBody = req.body ?? {};
|
|
138
|
+
}
|
|
139
|
+
const authorization = req.get('Authorization');
|
|
140
|
+
const handle = async () => {
|
|
141
|
+
const upstreamRes = await fetch(upstream.toString(), {
|
|
142
|
+
method: 'POST',
|
|
143
|
+
headers: {
|
|
144
|
+
'Content-Type': 'application/json',
|
|
145
|
+
...(authorization ? { Authorization: authorization } : {}),
|
|
146
|
+
},
|
|
147
|
+
body: JSON.stringify(jsonBody),
|
|
148
|
+
});
|
|
149
|
+
const text = await upstreamRes.text();
|
|
150
|
+
res
|
|
151
|
+
.status(upstreamRes.status)
|
|
152
|
+
.set('Content-Type', upstreamRes.headers.get('content-type') ?? 'application/json')
|
|
153
|
+
.send(text);
|
|
154
|
+
};
|
|
155
|
+
handle().catch((err) => {
|
|
156
|
+
console.error('OAuth token proxy failed:', err);
|
|
157
|
+
if (!res.headersSent) {
|
|
158
|
+
res.status(502).json({
|
|
159
|
+
error: 'server_error',
|
|
160
|
+
error_description: 'OAuth token proxy failed',
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
// /register: POST body を上流 /oauth/register (RFC 7591 DCR) に proxy
|
|
166
|
+
// MCP issuer と同一ドメインに registration_endpoint を置くことで
|
|
167
|
+
// クライアントのドメインチェックに対応する。
|
|
168
|
+
app.post('/register', (req, res) => {
|
|
169
|
+
const upstream = new URL(`${config_js_1.REPORTFLOW_OAUTH_ISSUER_URL}/oauth/register`);
|
|
170
|
+
const handle = async () => {
|
|
171
|
+
const upstreamRes = await fetch(upstream.toString(), {
|
|
172
|
+
method: 'POST',
|
|
173
|
+
headers: { 'Content-Type': 'application/json' },
|
|
174
|
+
body: JSON.stringify(req.body ?? {}),
|
|
175
|
+
});
|
|
176
|
+
const text = await upstreamRes.text();
|
|
177
|
+
res
|
|
178
|
+
.status(upstreamRes.status)
|
|
179
|
+
.set('Content-Type', upstreamRes.headers.get('content-type') ?? 'application/json')
|
|
180
|
+
.set('Cache-Control', 'no-cache')
|
|
181
|
+
.send(text);
|
|
182
|
+
};
|
|
183
|
+
handle().catch((err) => {
|
|
184
|
+
console.error('OAuth register proxy failed:', err);
|
|
185
|
+
if (!res.headersSent) {
|
|
186
|
+
res.status(502).json({
|
|
187
|
+
error: 'server_error',
|
|
188
|
+
error_description: 'OAuth register proxy failed',
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
app.all('/mcp', (req, res) => {
|
|
194
|
+
const token = extractBearer(req);
|
|
195
|
+
const needsAuth = requestNeedsAuth(req.body);
|
|
196
|
+
if (needsAuth && !token) {
|
|
197
|
+
respondUnauthorized(res, '保護対象メソッドの呼び出しには Bearer トークンが必要です');
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
// Stateless: per-request server + transport (claude.ai / API connector も stateless モードを推奨)
|
|
201
|
+
const server = (0, server_js_1.createMcpServer)({ mode: 'http' });
|
|
202
|
+
const transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
|
|
203
|
+
sessionIdGenerator: undefined,
|
|
204
|
+
});
|
|
205
|
+
res.on('close', () => {
|
|
206
|
+
transport.close().catch(() => { });
|
|
207
|
+
server.close().catch(() => { });
|
|
208
|
+
});
|
|
209
|
+
const handle = async () => {
|
|
210
|
+
await server.connect(transport);
|
|
211
|
+
await transport.handleRequest(req, res, req.body);
|
|
212
|
+
};
|
|
213
|
+
const dispatched = token
|
|
214
|
+
? (0, auth_context_js_1.runWithHttpAuth)({ accessToken: token }, handle)
|
|
215
|
+
: handle();
|
|
216
|
+
dispatched.catch((err) => {
|
|
217
|
+
console.error('MCP request handling failed:', err);
|
|
218
|
+
if (!res.headersSent) {
|
|
219
|
+
res.status(500).json({
|
|
220
|
+
jsonrpc: '2.0',
|
|
221
|
+
error: { code: -32603, message: 'Internal server error' },
|
|
222
|
+
id: null,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
// 404 for any other path
|
|
228
|
+
app.use((_req, res) => {
|
|
229
|
+
res.status(404).json({ error: 'not_found' });
|
|
230
|
+
});
|
|
231
|
+
return app;
|
|
232
|
+
};
|
|
233
|
+
exports.buildHttpApp = buildHttpApp;
|
|
234
|
+
/**
|
|
235
|
+
* HTTP サーバーモードのエントリポイント
|
|
236
|
+
* `listen` 成功 (listening イベント) または bind エラー (EADDRINUSE 等) で
|
|
237
|
+
* Promise が settle する。呼び出し側でエラーハンドリング可能。
|
|
238
|
+
*/
|
|
239
|
+
const startHttpServer = (opts = {}) => {
|
|
240
|
+
const port = opts.port ?? DEFAULT_PORT;
|
|
241
|
+
const app = (0, exports.buildHttpApp)();
|
|
242
|
+
return new Promise((resolve, reject) => {
|
|
243
|
+
const httpServer = app.listen(port);
|
|
244
|
+
let settled = false;
|
|
245
|
+
httpServer.once('listening', () => {
|
|
246
|
+
if (settled)
|
|
247
|
+
return;
|
|
248
|
+
settled = true;
|
|
249
|
+
console.log(`[reportflow-mcp] Streamable HTTP server listening on :${port} (resource=${config_js_1.MCP_RESOURCE_URL})`);
|
|
250
|
+
const shutdown = (signal) => {
|
|
251
|
+
console.log(`[reportflow-mcp] received ${signal}, shutting down`);
|
|
252
|
+
httpServer.close(() => process.exit(0));
|
|
253
|
+
};
|
|
254
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
255
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
256
|
+
resolve();
|
|
257
|
+
});
|
|
258
|
+
httpServer.once('error', (err) => {
|
|
259
|
+
if (settled)
|
|
260
|
+
return;
|
|
261
|
+
settled = true;
|
|
262
|
+
reject(err);
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
};
|
|
266
|
+
exports.startHttpServer = startHttpServer;
|
|
267
|
+
//# sourceMappingURL=http-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
CHANGED
|
@@ -8,4 +8,18 @@ export declare function fetchJson<T>(url: string, init?: RequestInit & {
|
|
|
8
8
|
export declare function fetchBinary(url: string, init?: RequestInit & {
|
|
9
9
|
timeoutMs?: number;
|
|
10
10
|
}): Promise<ArrayBuffer>;
|
|
11
|
+
/**
|
|
12
|
+
* fetchBinary の拡張版。レスポンスヘッダーも返す。
|
|
13
|
+
* content-service の sync エンドポイントが返す
|
|
14
|
+
* `File-URL` / `Request-Id` / `X-File-Mapping` 等を読むために使う。
|
|
15
|
+
*
|
|
16
|
+
* 参照: developer-docs/openapi/content-service.yaml
|
|
17
|
+
* /v1/file/sync/single → 200 with headers (File-URL, Request-Id, X-File-Mapping)
|
|
18
|
+
*/
|
|
19
|
+
export declare function fetchBinaryWithHeaders(url: string, init?: RequestInit & {
|
|
20
|
+
timeoutMs?: number;
|
|
21
|
+
}): Promise<{
|
|
22
|
+
data: ArrayBuffer;
|
|
23
|
+
headers: Headers;
|
|
24
|
+
}>;
|
|
11
25
|
//# sourceMappingURL=http.d.ts.map
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAEA,qBAAa,SAAU,SAAQ,KAAK;aAEhB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM;CAKlB;AAwCD,wBAAsB,SAAS,CAAC,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,WAAW,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9C,OAAO,CAAC,CAAC,CAAC,CAaZ;AAED,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,WAAW,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9C,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAEA,qBAAa,SAAU,SAAQ,KAAK;aAEhB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM;CAKlB;AAwCD,wBAAsB,SAAS,CAAC,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,WAAW,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9C,OAAO,CAAC,CAAC,CAAC,CAaZ;AAED,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,WAAW,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9C,OAAO,CAAC,WAAW,CAAC,CAGtB;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,WAAW,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9C,OAAO,CAAC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAclD"}
|
package/dist/http.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.HttpError = void 0;
|
|
4
4
|
exports.fetchJson = fetchJson;
|
|
5
5
|
exports.fetchBinary = fetchBinary;
|
|
6
|
+
exports.fetchBinaryWithHeaders = fetchBinaryWithHeaders;
|
|
6
7
|
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
7
8
|
class HttpError extends Error {
|
|
8
9
|
status;
|
|
@@ -56,6 +57,18 @@ async function fetchJson(url, init = {}) {
|
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
59
|
async function fetchBinary(url, init = {}) {
|
|
60
|
+
const { data } = await fetchBinaryWithHeaders(url, init);
|
|
61
|
+
return data;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* fetchBinary の拡張版。レスポンスヘッダーも返す。
|
|
65
|
+
* content-service の sync エンドポイントが返す
|
|
66
|
+
* `File-URL` / `Request-Id` / `X-File-Mapping` 等を読むために使う。
|
|
67
|
+
*
|
|
68
|
+
* 参照: developer-docs/openapi/content-service.yaml
|
|
69
|
+
* /v1/file/sync/single → 200 with headers (File-URL, Request-Id, X-File-Mapping)
|
|
70
|
+
*/
|
|
71
|
+
async function fetchBinaryWithHeaders(url, init = {}) {
|
|
59
72
|
const { timeoutMs = DEFAULT_TIMEOUT_MS, signal, ...rest } = init;
|
|
60
73
|
const [timeoutSignal, clearTimer] = withTimeout(signal, timeoutMs);
|
|
61
74
|
try {
|
|
@@ -64,7 +77,8 @@ async function fetchBinary(url, init = {}) {
|
|
|
64
77
|
const msg = await parseErrorMessage(res);
|
|
65
78
|
throw new HttpError(res.status, `[${res.status}] ${msg}`);
|
|
66
79
|
}
|
|
67
|
-
|
|
80
|
+
const data = await res.arrayBuffer();
|
|
81
|
+
return { data, headers: res.headers };
|
|
68
82
|
}
|
|
69
83
|
finally {
|
|
70
84
|
clearTimer();
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":";;;AAkDA,8BAgBC;AAED,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-http.d.ts","sourceRoot":"","sources":["../src/index-http.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const http_server_js_1 = require("./http-server.js");
|
|
4
|
+
const portStr = process.env['PORT'];
|
|
5
|
+
const port = portStr ? parseInt(portStr, 10) : undefined;
|
|
6
|
+
if (port !== undefined && (Number.isNaN(port) || port <= 0)) {
|
|
7
|
+
console.error(`PORT must be a positive integer (got ${portStr})`);
|
|
8
|
+
process.exit(1);
|
|
9
|
+
}
|
|
10
|
+
(0, http_server_js_1.startHttpServer)({ port }).catch((err) => {
|
|
11
|
+
console.error('[reportflow-mcp] Failed to start HTTP server:', err);
|
|
12
|
+
process.exit(1);
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=index-http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-http.js","sourceRoot":"","sources":["../src/index-http.ts"],"names":[],"mappings":";;AAAA,qDAAmD;AAEnD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACpC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;IAC5D,OAAO,CAAC,KAAK,CAAC,wCAAwC,OAAO,GAAG,CAAC,CAAC;IAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAA,gCAAe,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC/C,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,GAAG,CAAC,CAAC;IACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,2 +1,43 @@
|
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { type TelemetryClient } from './telemetry/index.js';
|
|
4
|
+
export declare const contentDtoSchema: z.ZodObject<{
|
|
5
|
+
fileName: z.ZodString;
|
|
6
|
+
shareType: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<"01">, z.ZodLiteral<"02">, z.ZodLiteral<"03">]>>;
|
|
7
|
+
passcodeEnabled: z.ZodOptional<z.ZodBoolean>;
|
|
8
|
+
params: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
params: Record<string, unknown>;
|
|
11
|
+
fileName: string;
|
|
12
|
+
shareType: "01" | "02" | "03";
|
|
13
|
+
passcodeEnabled?: boolean | undefined;
|
|
14
|
+
}, {
|
|
15
|
+
params: Record<string, unknown>;
|
|
16
|
+
fileName: string;
|
|
17
|
+
shareType?: "01" | "02" | "03" | undefined;
|
|
18
|
+
passcodeEnabled?: boolean | undefined;
|
|
19
|
+
}>;
|
|
20
|
+
export type CreateMcpServerOptions = {
|
|
21
|
+
/**
|
|
22
|
+
* stdio: ローカル CLI として動作。authenticate ツール (ブラウザ起動 + OS keychain 保存) を提供する。
|
|
23
|
+
* http: リモート HTTP サーバー。claude.ai 等の外部クライアントが OAuth を担うため、
|
|
24
|
+
* authenticate ツールは登録しない (誤呼び出しで stdio 専用処理を走らせない)。
|
|
25
|
+
*/
|
|
26
|
+
mode?: 'stdio' | 'http';
|
|
27
|
+
/**
|
|
28
|
+
* Telemetry client used to emit `integration.mcp.invoked` events. Defaults
|
|
29
|
+
* to a no-op when `TELEMETRY_ENDPOINT_URL` is unset. Override in tests.
|
|
30
|
+
*/
|
|
31
|
+
telemetry?: TelemetryClient;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* 全ツール / Prompts / Resources を登録した McpServer を生成して返す。
|
|
35
|
+
* Transport への接続は呼び出し側で行う(stdio: index.ts、HTTP: http-server.ts)。
|
|
36
|
+
*/
|
|
37
|
+
export declare const createMcpServer: (opts?: CreateMcpServerOptions) => McpServer;
|
|
38
|
+
/**
|
|
39
|
+
* stdio エントリ用の従来 API。createMcpServer() で生成したインスタンスを
|
|
40
|
+
* StdioServerTransport に connect する。HTTP モードはこの関数を使わない。
|
|
41
|
+
*/
|
|
1
42
|
export declare const startServer: () => Promise<void>;
|
|
2
43
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmCxB,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAU9B,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;EA4B3B,CAAC;AAmDH,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAM,sBAA2B,KAChC,SAyLF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAIhD,CAAC"}
|