yarooms-mcp 1.0.2 → 1.0.3
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/client.d.ts +3 -1
- package/dist/client.js +6 -4
- package/dist/client.js.map +1 -1
- package/dist/http.js +112 -16
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/package.json +5 -4
package/dist/client.d.ts
CHANGED
|
@@ -3,10 +3,12 @@ export declare class YaroomsApiError extends Error {
|
|
|
3
3
|
statusCode?: number | undefined;
|
|
4
4
|
constructor(message: string, statusCode?: number | undefined);
|
|
5
5
|
}
|
|
6
|
+
export type AuthMode = 'x-token' | 'bearer';
|
|
6
7
|
export declare class YaroomsClient {
|
|
7
8
|
private baseUrl;
|
|
8
9
|
private apiToken;
|
|
9
|
-
|
|
10
|
+
private authMode;
|
|
11
|
+
constructor(baseUrl: string, apiToken: string, authMode?: AuthMode);
|
|
10
12
|
private request;
|
|
11
13
|
get(path: string): Promise<unknown>;
|
|
12
14
|
post(path: string, body?: URLSearchParams): Promise<unknown>;
|
package/dist/client.js
CHANGED
|
@@ -9,17 +9,19 @@ export class YaroomsApiError extends Error {
|
|
|
9
9
|
export class YaroomsClient {
|
|
10
10
|
baseUrl;
|
|
11
11
|
apiToken;
|
|
12
|
-
|
|
12
|
+
authMode;
|
|
13
|
+
constructor(baseUrl, apiToken, authMode = 'x-token') {
|
|
13
14
|
this.baseUrl = baseUrl;
|
|
14
15
|
this.apiToken = apiToken;
|
|
15
16
|
// Strip trailing slash for consistent URL building
|
|
16
17
|
this.baseUrl = baseUrl.replace(/\/+$/, '');
|
|
18
|
+
this.authMode = authMode;
|
|
17
19
|
}
|
|
18
20
|
async request(method, path, body) {
|
|
19
21
|
const url = `${this.baseUrl}${path}`;
|
|
20
|
-
const headers =
|
|
21
|
-
'
|
|
22
|
-
|
|
22
|
+
const headers = this.authMode === 'bearer'
|
|
23
|
+
? { 'Authorization': `Bearer ${this.apiToken}` }
|
|
24
|
+
: { 'X-Token': this.apiToken };
|
|
23
25
|
let fetchBody;
|
|
24
26
|
if (body) {
|
|
25
27
|
headers['Content-Type'] = 'application/x-www-form-urlencoded';
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAG/B;IAFT,YACE,OAAe,EACR,UAAmB;QAE1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,eAAU,GAAV,UAAU,CAAS;QAG1B,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/http.js
CHANGED
|
@@ -1,26 +1,111 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
3
|
import express from 'express';
|
|
4
|
+
import * as jose from 'jose';
|
|
4
5
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
5
6
|
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { requireBearerAuth } from '@modelcontextprotocol/sdk/server/auth/middleware/bearerAuth.js';
|
|
6
8
|
import createServer from './index.js';
|
|
7
9
|
const apiToken = process.env.YAROOMS_API_TOKEN;
|
|
8
10
|
const baseUrl = process.env.YAROOMS_BASE_URL;
|
|
11
|
+
const oauthUrl = process.env.YAROOMS_OAUTH_URL || 'https://id.yarooms.com';
|
|
9
12
|
const port = parseInt(process.env.PORT || '3000', 10);
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
if (!baseUrl)
|
|
15
|
-
console.error(' YAROOMS_BASE_URL - API base URL (e.g. https://your-tenant.yarooms.com/api)');
|
|
13
|
+
// Determine mode: env vars = legacy (X-Token), no token = OAuth (Bearer wrapper JWT)
|
|
14
|
+
const oauthMode = !apiToken;
|
|
15
|
+
if (!oauthMode && !baseUrl) {
|
|
16
|
+
console.error('Missing YAROOMS_BASE_URL environment variable.');
|
|
16
17
|
process.exit(1);
|
|
17
18
|
}
|
|
18
19
|
const app = express();
|
|
19
20
|
app.use(express.json());
|
|
20
21
|
// Session management
|
|
21
22
|
const transports = {};
|
|
22
|
-
//
|
|
23
|
-
|
|
23
|
+
// --- JWKS for verifying wrapper tokens from id.yarooms.com ---
|
|
24
|
+
let jwks = null;
|
|
25
|
+
function getJWKS() {
|
|
26
|
+
if (!jwks) {
|
|
27
|
+
jwks = jose.createRemoteJWKSet(new URL(`${oauthUrl}/.well-known/jwks.json`));
|
|
28
|
+
}
|
|
29
|
+
return jwks;
|
|
30
|
+
}
|
|
31
|
+
// --- OAuth: protected resource metadata + bearer auth middleware ---
|
|
32
|
+
let authMiddleware = null;
|
|
33
|
+
if (oauthMode) {
|
|
34
|
+
// Serve protected resource metadata (both root and path-aware per RFC 9728)
|
|
35
|
+
const metadataHandler = (req, res) => {
|
|
36
|
+
const proto = req.headers['x-forwarded-proto'] || req.protocol;
|
|
37
|
+
const host = req.headers['x-forwarded-host'] || req.headers.host;
|
|
38
|
+
res.set('Cache-Control', 'public, max-age=86400');
|
|
39
|
+
res.json({
|
|
40
|
+
resource: `${proto}://${host}/mcp`,
|
|
41
|
+
authorization_servers: [oauthUrl],
|
|
42
|
+
scopes_supported: ['mcp:tools'],
|
|
43
|
+
resource_name: 'YAROOMS',
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
app.get('/.well-known/oauth-protected-resource', metadataHandler);
|
|
47
|
+
app.get('/.well-known/oauth-protected-resource/mcp', metadataHandler);
|
|
48
|
+
// Token verifier that validates wrapper JWTs from id.yarooms.com
|
|
49
|
+
const tokenVerifier = {
|
|
50
|
+
verifyAccessToken: async (token) => {
|
|
51
|
+
// Accept both "id.yarooms.com" and "https://id.yarooms.com" as issuer
|
|
52
|
+
const issuerHost = new URL(oauthUrl).host;
|
|
53
|
+
const { payload } = await jose.jwtVerify(token, getJWKS(), {
|
|
54
|
+
issuer: [oauthUrl, issuerHost],
|
|
55
|
+
});
|
|
56
|
+
const base_url = payload.base_url;
|
|
57
|
+
const infra_token = payload.infra_token;
|
|
58
|
+
if (!base_url || !infra_token) {
|
|
59
|
+
throw new Error('Invalid wrapper token: missing base_url or infra_token claims');
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
token,
|
|
63
|
+
clientId: payload.sub || 'unknown',
|
|
64
|
+
scopes: ['mcp:tools'],
|
|
65
|
+
expiresAt: payload.exp,
|
|
66
|
+
extra: { base_url, infra_token },
|
|
67
|
+
};
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
// Build absolute resource metadata URL for WWW-Authenticate header
|
|
71
|
+
const mcpPublicUrl = process.env.RAILWAY_PUBLIC_DOMAIN
|
|
72
|
+
? `https://${process.env.RAILWAY_PUBLIC_DOMAIN}`
|
|
73
|
+
: `http://localhost:${port}`;
|
|
74
|
+
const resourceMetadataUrl = `${mcpPublicUrl}/.well-known/oauth-protected-resource`;
|
|
75
|
+
const rawBearerAuth = requireBearerAuth({
|
|
76
|
+
verifier: tokenVerifier,
|
|
77
|
+
requiredScopes: [],
|
|
78
|
+
resourceMetadataUrl,
|
|
79
|
+
});
|
|
80
|
+
// Skip auth for requests with an existing session — the session already has credentials
|
|
81
|
+
authMiddleware = (req, res, next) => {
|
|
82
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
83
|
+
if (sessionId && transports[sessionId]) {
|
|
84
|
+
return next();
|
|
85
|
+
}
|
|
86
|
+
rawBearerAuth(req, res, next);
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
// --- Helpers ---
|
|
90
|
+
async function createSessionServer(req) {
|
|
91
|
+
if (oauthMode) {
|
|
92
|
+
// OAuth mode: token already verified by middleware, credentials in req.auth.extra
|
|
93
|
+
const auth = req.auth;
|
|
94
|
+
let base_url = auth.extra?.base_url;
|
|
95
|
+
const infra_token = auth.extra?.infra_token;
|
|
96
|
+
// Ensure base_url includes /api path
|
|
97
|
+
if (!base_url.endsWith('/api')) {
|
|
98
|
+
base_url = base_url.replace(/\/+$/, '') + '/api';
|
|
99
|
+
}
|
|
100
|
+
// Auto-detect token type: JWTs have dots, API keys don't
|
|
101
|
+
const tokenIsJwt = infra_token.includes('.');
|
|
102
|
+
return createServer({ config: { apiToken: infra_token, baseUrl: base_url }, authMode: tokenIsJwt ? 'bearer' : 'x-token' });
|
|
103
|
+
}
|
|
104
|
+
// Legacy mode: use env var credentials
|
|
105
|
+
return createServer({ config: { apiToken: apiToken, baseUrl: baseUrl } });
|
|
106
|
+
}
|
|
107
|
+
// --- MCP endpoints ---
|
|
108
|
+
const mcpPostHandler = async (req, res) => {
|
|
24
109
|
const sessionId = req.headers['mcp-session-id'];
|
|
25
110
|
try {
|
|
26
111
|
if (sessionId && transports[sessionId]) {
|
|
@@ -39,7 +124,7 @@ app.post('/mcp', async (req, res) => {
|
|
|
39
124
|
if (id)
|
|
40
125
|
delete transports[id];
|
|
41
126
|
};
|
|
42
|
-
const server = await
|
|
127
|
+
const server = await createSessionServer(req);
|
|
43
128
|
await server.connect(transport);
|
|
44
129
|
await transport.handleRequest(req, res, req.body);
|
|
45
130
|
return;
|
|
@@ -60,8 +145,8 @@ app.post('/mcp', async (req, res) => {
|
|
|
60
145
|
});
|
|
61
146
|
}
|
|
62
147
|
}
|
|
63
|
-
}
|
|
64
|
-
|
|
148
|
+
};
|
|
149
|
+
const mcpGetHandler = async (req, res) => {
|
|
65
150
|
const sessionId = req.headers['mcp-session-id'];
|
|
66
151
|
if (!sessionId || !transports[sessionId]) {
|
|
67
152
|
res.status(400).send('Invalid or missing session ID');
|
|
@@ -80,8 +165,8 @@ app.get('/mcp', async (req, res) => {
|
|
|
80
165
|
});
|
|
81
166
|
}
|
|
82
167
|
}
|
|
83
|
-
}
|
|
84
|
-
|
|
168
|
+
};
|
|
169
|
+
const mcpDeleteHandler = async (req, res) => {
|
|
85
170
|
const sessionId = req.headers['mcp-session-id'];
|
|
86
171
|
if (!sessionId || !transports[sessionId]) {
|
|
87
172
|
res.status(400).send('Invalid or missing session ID');
|
|
@@ -100,13 +185,24 @@ app.delete('/mcp', async (req, res) => {
|
|
|
100
185
|
});
|
|
101
186
|
}
|
|
102
187
|
}
|
|
103
|
-
}
|
|
188
|
+
};
|
|
189
|
+
// Wire up routes — with auth middleware in OAuth mode
|
|
190
|
+
if (authMiddleware) {
|
|
191
|
+
app.post('/mcp', authMiddleware, mcpPostHandler);
|
|
192
|
+
app.get('/mcp', authMiddleware, mcpGetHandler);
|
|
193
|
+
app.delete('/mcp', authMiddleware, mcpDeleteHandler);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
app.post('/mcp', mcpPostHandler);
|
|
197
|
+
app.get('/mcp', mcpGetHandler);
|
|
198
|
+
app.delete('/mcp', mcpDeleteHandler);
|
|
199
|
+
}
|
|
104
200
|
// Health check
|
|
105
201
|
app.get('/health', (_req, res) => {
|
|
106
|
-
res.json({ status: 'ok' });
|
|
202
|
+
res.json({ status: 'ok', mode: oauthMode ? 'oauth' : 'legacy' });
|
|
107
203
|
});
|
|
108
204
|
app.listen(port, () => {
|
|
109
|
-
console.log(`YAROOMS MCP server running on http://localhost:${port}/mcp`);
|
|
205
|
+
console.log(`YAROOMS MCP server running on http://localhost:${port}/mcp (${oauthMode ? 'OAuth' : 'legacy'} mode)`);
|
|
110
206
|
});
|
|
111
207
|
// Graceful shutdown
|
|
112
208
|
async function shutdown() {
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,YAAY,MAAM,YAAY,CAAC;AAEtC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;AAEtD,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { type AuthMode } from './client.js';
|
|
2
3
|
export declare const configSchema: z.ZodObject<{
|
|
3
4
|
apiToken: z.ZodString;
|
|
4
5
|
baseUrl: z.ZodString;
|
|
5
6
|
}, z.core.$strip>;
|
|
6
7
|
type Config = z.infer<typeof configSchema>;
|
|
7
|
-
|
|
8
|
+
interface ServerOptions {
|
|
8
9
|
config: Config;
|
|
9
|
-
|
|
10
|
+
authMode?: AuthMode;
|
|
11
|
+
}
|
|
12
|
+
export default function createServer({ config, authMode }: ServerOptions): Promise<import("@modelcontextprotocol/sdk/server").Server<{
|
|
10
13
|
method: string;
|
|
11
14
|
params?: {
|
|
12
15
|
[x: string]: unknown;
|
package/dist/index.js
CHANGED
|
@@ -12,8 +12,8 @@ export const configSchema = z.object({
|
|
|
12
12
|
apiToken: z.string().describe('YAROOMS API token (X-Token)'),
|
|
13
13
|
baseUrl: z.string().url().refine(u => u.startsWith('https://'), { message: 'baseUrl must use HTTPS to protect the API token' }).describe('YAROOMS API base URL (e.g. https://your-tenant.yarooms.com/api)'),
|
|
14
14
|
});
|
|
15
|
-
export default async function createServer({ config }) {
|
|
16
|
-
const client = new YaroomsClient(config.baseUrl, config.apiToken);
|
|
15
|
+
export default async function createServer({ config, authMode = 'x-token' }) {
|
|
16
|
+
const client = new YaroomsClient(config.baseUrl, config.apiToken, authMode);
|
|
17
17
|
// Validate token and get account context
|
|
18
18
|
let account;
|
|
19
19
|
try {
|
|
@@ -23,7 +23,7 @@ export default async function createServer({ config }) {
|
|
|
23
23
|
throw new Error(`YAROOMS MCP: Cannot connect to ${config.baseUrl} — ${err instanceof Error ? err.message : String(err)}. Check YAROOMS_API_TOKEN and YAROOMS_BASE_URL.`);
|
|
24
24
|
}
|
|
25
25
|
const server = new McpServer({
|
|
26
|
-
name: '
|
|
26
|
+
name: 'YAROOMS',
|
|
27
27
|
version: '1.0.0',
|
|
28
28
|
}, {
|
|
29
29
|
instructions: `YAROOMS workplace management MCP server. Connected as account #${account.account_id}${account.company ? ` (${account.company})` : ''}.
|
|
@@ -63,7 +63,7 @@ Other tips:
|
|
|
63
63
|
export function createSandboxServer() {
|
|
64
64
|
const client = new YaroomsClient('https://sandbox.yarooms.com/api', 'sandbox-token');
|
|
65
65
|
const server = new McpServer({
|
|
66
|
-
name: '
|
|
66
|
+
name: 'YAROOMS',
|
|
67
67
|
version: '1.0.0',
|
|
68
68
|
});
|
|
69
69
|
registerBookingTools(server, client, 0, 'https://sandbox.yarooms.com/api');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAiB,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC5D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC,CAAC,QAAQ,CAAC,iEAAiE,CAAC;CAC5M,CAAC,CAAC;AASH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,SAAS,EAAiB;IACxF,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE5E,yCAAyC;IACzC,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,kCAAkC,MAAM,CAAC,OAAO,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,iDAAiD,CACxJ,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;KACjB,EAAE;QACD,YAAY,EAAE,kEAAkE,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;mDAsBpG;KAChD,CAAC,CAAC;IAEH,mCAAmC;IACnC,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzE,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5D,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACxE,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,iCAAiC,EAAE,eAAe,CAAC,CAAC;IAErF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,iCAAiC,CAAC,CAAC;IAC3E,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3C,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,iCAAiC,CAAC,CAAC;IAC1E,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yarooms-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "MCP server for YAROOMS workplace management platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "./src/index.ts",
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
],
|
|
15
15
|
"scripts": {
|
|
16
16
|
"dev": "npx @smithery/cli dev",
|
|
17
|
-
"build": "
|
|
18
|
-
"build:
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"build:smithery": "npx @smithery/cli build",
|
|
19
19
|
"prepublishOnly": "tsc",
|
|
20
|
-
"start": "node
|
|
20
|
+
"start": "node dist/http.js",
|
|
21
21
|
"test": "vitest run",
|
|
22
22
|
"test:watch": "vitest",
|
|
23
23
|
"stdio": "tsx src/stdio.ts",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
28
28
|
"@smithery/sdk": "^4.3.0",
|
|
29
29
|
"express": "^5.2.1",
|
|
30
|
+
"jose": "^6.2.2",
|
|
30
31
|
"zod": "^4.0.0"
|
|
31
32
|
},
|
|
32
33
|
"devDependencies": {
|