@florentleveque/mural-mcp-serveur 0.5.2

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mural-client.js","sourceRoot":"","sources":["../src/mural-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { OAuthTokens } from './types.js';
2
+ export declare class MuralOAuth {
3
+ private clientId;
4
+ private clientSecret?;
5
+ private redirectUri;
6
+ private scopes;
7
+ private authenticationPromise;
8
+ constructor(clientId: string, clientSecret?: string, redirectUri?: string, scopes?: string[]);
9
+ private generatePKCEChallenge;
10
+ private generateAuthorizationUrl;
11
+ private exchangeCodeForTokens;
12
+ private refreshAccessToken;
13
+ private saveTokens;
14
+ private loadTokens;
15
+ private startCallbackServer;
16
+ authenticate(): Promise<OAuthTokens>;
17
+ private performAuthentication;
18
+ getValidAccessToken(): Promise<string>;
19
+ getStoredTokens(): Promise<OAuthTokens | null>;
20
+ clearTokens(): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAKV,WAAW,EAEZ,MAAM,YAAY,CAAC;AAKpB,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,qBAAqB,CAAqC;gBAGhE,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,SAAmC,EAC9C,MAAM,WASL;IAQH,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,wBAAwB;YAmBlB,qBAAqB;YAqCrB,kBAAkB;YAgClB,UAAU;YASV,UAAU;YASV,mBAAmB;IAiF3B,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC;YAkB5B,qBAAqB;IAyD7B,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKtC,eAAe,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAI9C,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAQnC"}
package/build/oauth.js ADDED
@@ -0,0 +1,278 @@
1
+ import { randomBytes, createHash } from 'crypto';
2
+ import { URL, URLSearchParams } from 'url';
3
+ import http from 'http';
4
+ import fs from 'fs/promises';
5
+ import path from 'path';
6
+ import os from 'os';
7
+ const MURAL_OAUTH_BASE = 'https://app.mural.co/api/public/v1/authorization/oauth2';
8
+ const TOKEN_FILE_PATH = path.join(os.homedir(), '.mural-mcp-tokens.json');
9
+ export class MuralOAuth {
10
+ clientId;
11
+ clientSecret;
12
+ redirectUri;
13
+ scopes;
14
+ authenticationPromise = null;
15
+ constructor(clientId, clientSecret, redirectUri = 'http://localhost:3000/callback', scopes = [
16
+ 'workspaces:read',
17
+ 'rooms:read',
18
+ 'rooms:write',
19
+ 'murals:read',
20
+ 'murals:write',
21
+ 'templates:read',
22
+ 'templates:write',
23
+ 'identity:read'
24
+ ]) {
25
+ this.clientId = clientId;
26
+ this.clientSecret = clientSecret;
27
+ this.redirectUri = redirectUri;
28
+ this.scopes = scopes;
29
+ }
30
+ generatePKCEChallenge() {
31
+ const codeVerifier = randomBytes(32).toString('base64url');
32
+ const codeChallenge = createHash('sha256')
33
+ .update(codeVerifier)
34
+ .digest('base64url');
35
+ return {
36
+ codeVerifier,
37
+ codeChallenge,
38
+ codeChallengeMethod: 'S256'
39
+ };
40
+ }
41
+ generateAuthorizationUrl(pkce, state) {
42
+ const params = {
43
+ client_id: this.clientId,
44
+ redirect_uri: this.redirectUri,
45
+ scope: this.scopes.join(' '),
46
+ response_type: 'code',
47
+ code_challenge: pkce.codeChallenge,
48
+ code_challenge_method: pkce.codeChallengeMethod,
49
+ ...(state && { state })
50
+ };
51
+ const url = new URL(MURAL_OAUTH_BASE);
52
+ Object.entries(params).forEach(([key, value]) => {
53
+ url.searchParams.append(key, value);
54
+ });
55
+ return url.toString();
56
+ }
57
+ async exchangeCodeForTokens(code, codeVerifier) {
58
+ const params = {
59
+ client_id: this.clientId,
60
+ ...(this.clientSecret && { client_secret: this.clientSecret }),
61
+ code,
62
+ code_verifier: codeVerifier,
63
+ grant_type: 'authorization_code',
64
+ redirect_uri: this.redirectUri
65
+ };
66
+ const response = await fetch(`${MURAL_OAUTH_BASE}/token`, {
67
+ method: 'POST',
68
+ headers: {
69
+ 'Content-Type': 'application/x-www-form-urlencoded',
70
+ 'Accept': 'application/json'
71
+ },
72
+ body: new URLSearchParams(Object.fromEntries(Object.entries(params).filter(([, value]) => value !== undefined)))
73
+ });
74
+ const data = await response.json();
75
+ if (!response.ok) {
76
+ const error = data;
77
+ throw new Error(`OAuth token exchange failed: ${error.error} - ${error.error_description || 'Unknown error'}`);
78
+ }
79
+ const tokens = data;
80
+ tokens.expires_at = Date.now() + (tokens.expires_in * 1000);
81
+ return tokens;
82
+ }
83
+ async refreshAccessToken(refreshToken) {
84
+ const params = {
85
+ client_id: this.clientId,
86
+ ...(this.clientSecret && { client_secret: this.clientSecret }),
87
+ refresh_token: refreshToken,
88
+ grant_type: 'refresh_token'
89
+ };
90
+ const response = await fetch(`${MURAL_OAUTH_BASE}/token`, {
91
+ method: 'POST',
92
+ headers: {
93
+ 'Content-Type': 'application/x-www-form-urlencoded',
94
+ 'Accept': 'application/json'
95
+ },
96
+ body: new URLSearchParams(Object.fromEntries(Object.entries(params).filter(([, value]) => value !== undefined)))
97
+ });
98
+ const data = await response.json();
99
+ if (!response.ok) {
100
+ const error = data;
101
+ throw new Error(`OAuth token refresh failed: ${error.error} - ${error.error_description || 'Unknown error'}`);
102
+ }
103
+ const tokens = data;
104
+ tokens.expires_at = Date.now() + (tokens.expires_in * 1000);
105
+ return tokens;
106
+ }
107
+ async saveTokens(tokens) {
108
+ try {
109
+ await fs.writeFile(TOKEN_FILE_PATH, JSON.stringify(tokens, null, 2));
110
+ }
111
+ catch (error) {
112
+ console.error('Failed to save tokens:', error);
113
+ throw new Error('Failed to save authentication tokens');
114
+ }
115
+ }
116
+ async loadTokens() {
117
+ try {
118
+ const data = await fs.readFile(TOKEN_FILE_PATH, 'utf-8');
119
+ return JSON.parse(data);
120
+ }
121
+ catch (error) {
122
+ return null;
123
+ }
124
+ }
125
+ async startCallbackServer(expectedState) {
126
+ return new Promise((resolve, reject) => {
127
+ let resolved = false;
128
+ const server = http.createServer((req, res) => {
129
+ if (req.url?.startsWith('/callback')) {
130
+ // Prevent multiple resolutions
131
+ if (resolved) {
132
+ res.writeHead(200, { 'Content-Type': 'text/html' });
133
+ res.end('<h1>Already processed</h1><p>Authentication already handled. You can close this window.</p>');
134
+ return;
135
+ }
136
+ const url = new URL(req.url, `http://localhost:3000`);
137
+ const code = url.searchParams.get('code');
138
+ const state = url.searchParams.get('state');
139
+ const error = url.searchParams.get('error');
140
+ console.log(`Callback received - Code: ${code ? 'present' : 'missing'}, State: ${state}, Expected: ${expectedState}`);
141
+ if (error) {
142
+ res.writeHead(400, { 'Content-Type': 'text/html' });
143
+ res.end(`<h1>Authentication Error</h1><p>${error}</p>`);
144
+ resolved = true;
145
+ server.close();
146
+ reject(new Error(`OAuth error: ${error}`));
147
+ return;
148
+ }
149
+ if (!code) {
150
+ res.writeHead(400, { 'Content-Type': 'text/html' });
151
+ res.end('<h1>Error</h1><p>No authorization code received</p>');
152
+ resolved = true;
153
+ server.close();
154
+ reject(new Error('No authorization code received'));
155
+ return;
156
+ }
157
+ if (expectedState && state !== expectedState) {
158
+ console.error(`State mismatch - Expected: "${expectedState}", Received: "${state}"`);
159
+ res.writeHead(400, { 'Content-Type': 'text/html' });
160
+ res.end(`<h1>Error</h1><p>Invalid state parameter. Expected: ${expectedState}, Got: ${state}</p>`);
161
+ resolved = true;
162
+ server.close();
163
+ reject(new Error(`Invalid state parameter. Expected: ${expectedState}, Got: ${state}`));
164
+ return;
165
+ }
166
+ res.writeHead(200, { 'Content-Type': 'text/html' });
167
+ res.end('<h1>Success!</h1><p>Authentication successful. You can close this window.</p>');
168
+ resolved = true;
169
+ server.close();
170
+ resolve({ code, state: state || undefined });
171
+ }
172
+ else {
173
+ res.writeHead(404, { 'Content-Type': 'text/html' });
174
+ res.end('<h1>Not Found</h1>');
175
+ }
176
+ });
177
+ server.listen(3000, () => {
178
+ console.log('OAuth callback server started on http://localhost:3000');
179
+ });
180
+ server.on('error', (error) => {
181
+ if (!resolved) {
182
+ resolved = true;
183
+ reject(error);
184
+ }
185
+ });
186
+ // Add timeout to prevent hanging
187
+ setTimeout(() => {
188
+ if (!resolved) {
189
+ resolved = true;
190
+ server.close();
191
+ reject(new Error('Authentication timeout after 5 minutes'));
192
+ }
193
+ }, 5 * 60 * 1000);
194
+ });
195
+ }
196
+ async authenticate() {
197
+ // If authentication is already in progress, return the existing promise
198
+ if (this.authenticationPromise) {
199
+ return this.authenticationPromise;
200
+ }
201
+ // Start new authentication and store the promise
202
+ this.authenticationPromise = this.performAuthentication();
203
+ try {
204
+ const tokens = await this.authenticationPromise;
205
+ return tokens;
206
+ }
207
+ finally {
208
+ // Clear the promise when done (success or failure)
209
+ this.authenticationPromise = null;
210
+ }
211
+ }
212
+ async performAuthentication() {
213
+ // Check for existing valid tokens
214
+ const existingTokens = await this.loadTokens();
215
+ if (existingTokens && existingTokens.expires_at && existingTokens.expires_at > Date.now()) {
216
+ return existingTokens;
217
+ }
218
+ // Try to refresh if we have a refresh token
219
+ if (existingTokens?.refresh_token) {
220
+ try {
221
+ const refreshedTokens = await this.refreshAccessToken(existingTokens.refresh_token);
222
+ await this.saveTokens(refreshedTokens);
223
+ return refreshedTokens;
224
+ }
225
+ catch (error) {
226
+ console.warn('Token refresh failed, starting new authentication flow');
227
+ }
228
+ }
229
+ // Start new authentication flow
230
+ const pkce = this.generatePKCEChallenge();
231
+ const state = randomBytes(16).toString('hex');
232
+ const authUrl = this.generateAuthorizationUrl(pkce, state);
233
+ console.log('Please open the following URL in your browser to authenticate:');
234
+ console.log(authUrl);
235
+ console.log('\nWaiting for authentication callback...');
236
+ // Start callback server and wait for response
237
+ const callbackPromise = this.startCallbackServer(state);
238
+ // Open browser automatically if possible
239
+ const { spawn } = await import('child_process');
240
+ const platform = process.platform;
241
+ const command = platform === 'darwin' ? 'open' : platform === 'win32' ? 'start' : 'xdg-open';
242
+ try {
243
+ const browserProcess = spawn(command, [authUrl], { stdio: 'ignore', detached: true });
244
+ // spawn() reports failures (e.g. xdg-open missing on WSL/Linux) via an async
245
+ // 'error' event, not a thrown exception — handle it so the server doesn't crash.
246
+ browserProcess.on('error', () => {
247
+ // Browser couldn't be opened automatically; the user opens the URL manually.
248
+ });
249
+ browserProcess.unref();
250
+ }
251
+ catch (error) {
252
+ // Browser opening failed, user will need to open manually
253
+ }
254
+ const { code } = await callbackPromise;
255
+ // Exchange code for tokens
256
+ const tokens = await this.exchangeCodeForTokens(code, pkce.codeVerifier);
257
+ await this.saveTokens(tokens);
258
+ console.log('Authentication successful!');
259
+ return tokens;
260
+ }
261
+ async getValidAccessToken() {
262
+ const tokens = await this.authenticate();
263
+ return tokens.access_token;
264
+ }
265
+ async getStoredTokens() {
266
+ return await this.loadTokens();
267
+ }
268
+ async clearTokens() {
269
+ try {
270
+ await fs.unlink(TOKEN_FILE_PATH);
271
+ console.log('Authentication tokens cleared');
272
+ }
273
+ catch (error) {
274
+ // File doesn't exist, which is fine
275
+ }
276
+ }
277
+ }
278
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { RateLimitStatus, RateLimitConfig } from './types.js';
2
+ export declare class MuralRateLimiter {
3
+ private config;
4
+ private state;
5
+ constructor(config?: Partial<RateLimitConfig>);
6
+ private createBucket;
7
+ private loadState;
8
+ private saveState;
9
+ private refillBucket;
10
+ private canConsume;
11
+ private consume;
12
+ private getWaitTime;
13
+ canMakeRequest(): Promise<{
14
+ allowed: boolean;
15
+ waitTimeMs?: number;
16
+ reason?: string;
17
+ }>;
18
+ consumeRequest(): Promise<boolean>;
19
+ getRateLimitStatus(): Promise<RateLimitStatus>;
20
+ waitForAvailability(maxWaitMs?: number): Promise<boolean>;
21
+ reset(): Promise<void>;
22
+ }
23
+ //# sourceMappingURL=rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../src/rate-limiter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAmC,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIpG,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,KAAK,CAAiB;gBAElB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAe7C,OAAO,CAAC,YAAY;YAUN,SAAS;YAgBT,SAAS;IAUvB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,WAAW;IAWb,cAAc,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA0BrF,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAelC,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC;IAuB9C,mBAAmB,CAAC,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAehE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAe7B"}
@@ -0,0 +1,163 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ import os from 'os';
4
+ const RATE_LIMIT_FILE_PATH = path.join(os.homedir(), '.mural-mcp-rate-limit.json');
5
+ export class MuralRateLimiter {
6
+ config;
7
+ state;
8
+ constructor(config) {
9
+ this.config = {
10
+ userRequestsPerSecond: config?.userRequestsPerSecond ?? 25,
11
+ appRequestsPerMinute: config?.appRequestsPerMinute ?? 10000,
12
+ persistState: config?.persistState ?? true,
13
+ ...config
14
+ };
15
+ this.state = {
16
+ userBucket: this.createBucket(this.config.userRequestsPerSecond, 1000), // 1 second window
17
+ appBucket: this.createBucket(this.config.appRequestsPerMinute, 60000), // 60 second window
18
+ lastUpdated: Date.now()
19
+ };
20
+ }
21
+ createBucket(capacity, refillIntervalMs) {
22
+ return {
23
+ capacity,
24
+ tokens: capacity,
25
+ refillRate: capacity / (refillIntervalMs / 1000), // tokens per second
26
+ lastRefill: Date.now(),
27
+ refillIntervalMs
28
+ };
29
+ }
30
+ async loadState() {
31
+ if (!this.config.persistState)
32
+ return;
33
+ try {
34
+ const data = await fs.readFile(RATE_LIMIT_FILE_PATH, 'utf-8');
35
+ const savedState = JSON.parse(data);
36
+ // Only use saved state if it's recent (within 5 minutes)
37
+ if (Date.now() - savedState.lastUpdated < 300000) {
38
+ this.state = savedState;
39
+ }
40
+ }
41
+ catch (error) {
42
+ // File doesn't exist or is invalid, use default state
43
+ }
44
+ }
45
+ async saveState() {
46
+ if (!this.config.persistState)
47
+ return;
48
+ try {
49
+ await fs.writeFile(RATE_LIMIT_FILE_PATH, JSON.stringify(this.state, null, 2));
50
+ }
51
+ catch (error) {
52
+ console.warn('Failed to save rate limit state:', error);
53
+ }
54
+ }
55
+ refillBucket(bucket) {
56
+ const now = Date.now();
57
+ const timePassed = now - bucket.lastRefill;
58
+ if (timePassed > 0) {
59
+ const tokensToAdd = Math.floor((timePassed / 1000) * bucket.refillRate);
60
+ bucket.tokens = Math.min(bucket.capacity, bucket.tokens + tokensToAdd);
61
+ bucket.lastRefill = now;
62
+ }
63
+ }
64
+ canConsume(bucket, tokens = 1) {
65
+ this.refillBucket(bucket);
66
+ return bucket.tokens >= tokens;
67
+ }
68
+ consume(bucket, tokens = 1) {
69
+ if (!this.canConsume(bucket, tokens)) {
70
+ return false;
71
+ }
72
+ bucket.tokens -= tokens;
73
+ return true;
74
+ }
75
+ getWaitTime(bucket, tokens = 1) {
76
+ this.refillBucket(bucket);
77
+ if (bucket.tokens >= tokens) {
78
+ return 0;
79
+ }
80
+ const tokensNeeded = tokens - bucket.tokens;
81
+ return Math.ceil((tokensNeeded / bucket.refillRate) * 1000);
82
+ }
83
+ async canMakeRequest() {
84
+ await this.loadState();
85
+ // Check user bucket first (stricter limit)
86
+ if (!this.canConsume(this.state.userBucket, 1)) {
87
+ const waitTime = this.getWaitTime(this.state.userBucket, 1);
88
+ return {
89
+ allowed: false,
90
+ waitTimeMs: waitTime,
91
+ reason: `User rate limit exceeded (${this.config.userRequestsPerSecond} requests/second)`
92
+ };
93
+ }
94
+ // Check app bucket
95
+ if (!this.canConsume(this.state.appBucket, 1)) {
96
+ const waitTime = this.getWaitTime(this.state.appBucket, 1);
97
+ return {
98
+ allowed: false,
99
+ waitTimeMs: waitTime,
100
+ reason: `Application rate limit exceeded (${this.config.appRequestsPerMinute} requests/minute)`
101
+ };
102
+ }
103
+ return { allowed: true };
104
+ }
105
+ async consumeRequest() {
106
+ await this.loadState();
107
+ const userConsumed = this.consume(this.state.userBucket, 1);
108
+ const appConsumed = this.consume(this.state.appBucket, 1);
109
+ if (userConsumed && appConsumed) {
110
+ this.state.lastUpdated = Date.now();
111
+ await this.saveState();
112
+ return true;
113
+ }
114
+ return false;
115
+ }
116
+ async getRateLimitStatus() {
117
+ await this.loadState();
118
+ this.refillBucket(this.state.userBucket);
119
+ this.refillBucket(this.state.appBucket);
120
+ return {
121
+ user: {
122
+ tokensRemaining: this.state.userBucket.tokens,
123
+ capacity: this.state.userBucket.capacity,
124
+ refillRate: this.state.userBucket.refillRate,
125
+ nextRefillIn: Math.max(0, this.state.userBucket.refillIntervalMs - (Date.now() - this.state.userBucket.lastRefill))
126
+ },
127
+ app: {
128
+ tokensRemaining: this.state.appBucket.tokens,
129
+ capacity: this.state.appBucket.capacity,
130
+ refillRate: this.state.appBucket.refillRate,
131
+ nextRefillIn: Math.max(0, this.state.appBucket.refillIntervalMs - (Date.now() - this.state.appBucket.lastRefill))
132
+ },
133
+ lastUpdated: this.state.lastUpdated
134
+ };
135
+ }
136
+ async waitForAvailability(maxWaitMs = 30000) {
137
+ const checkResult = await this.canMakeRequest();
138
+ if (checkResult.allowed) {
139
+ return true;
140
+ }
141
+ if (!checkResult.waitTimeMs || checkResult.waitTimeMs > maxWaitMs) {
142
+ return false;
143
+ }
144
+ await new Promise(resolve => setTimeout(resolve, checkResult.waitTimeMs));
145
+ return true;
146
+ }
147
+ async reset() {
148
+ this.state = {
149
+ userBucket: this.createBucket(this.config.userRequestsPerSecond, 1000),
150
+ appBucket: this.createBucket(this.config.appRequestsPerMinute, 60000),
151
+ lastUpdated: Date.now()
152
+ };
153
+ if (this.config.persistState) {
154
+ try {
155
+ await fs.unlink(RATE_LIMIT_FILE_PATH);
156
+ }
157
+ catch (error) {
158
+ // File doesn't exist, which is fine
159
+ }
160
+ }
161
+ }
162
+ }
163
+ //# sourceMappingURL=rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../src/rate-limiter.ts"],"names":[],"mappings":"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"}