@lyrra/mcp-server 1.0.1 → 1.1.1
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/Dockerfile +16 -0
- package/README.md +95 -16
- package/dist/client.d.ts +7 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +5 -5
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/http-server.d.ts +8 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +466 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.js +3 -69
- package/dist/index.js.map +1 -1
- package/dist/server-factory.d.ts +8 -0
- package/dist/server-factory.d.ts.map +1 -0
- package/dist/server-factory.js +82 -0
- package/dist/server-factory.js.map +1 -0
- package/dist/tools/admin.d.ts +132 -0
- package/dist/tools/admin.d.ts.map +1 -1
- package/dist/tools/admin.js +105 -101
- package/dist/tools/admin.js.map +1 -1
- package/dist/tools/ai-designer.d.ts +148 -0
- package/dist/tools/ai-designer.d.ts.map +1 -1
- package/dist/tools/ai-designer.js +80 -76
- package/dist/tools/ai-designer.js.map +1 -1
- package/dist/tools/analytics.d.ts +47 -0
- package/dist/tools/analytics.d.ts.map +1 -1
- package/dist/tools/analytics.js +38 -34
- package/dist/tools/analytics.js.map +1 -1
- package/dist/tools/auth.d.ts +30 -0
- package/dist/tools/auth.d.ts.map +1 -1
- package/dist/tools/auth.js +31 -27
- package/dist/tools/auth.js.map +1 -1
- package/dist/tools/blocks.d.ts +200 -0
- package/dist/tools/blocks.d.ts.map +1 -1
- package/dist/tools/blocks.js +154 -150
- package/dist/tools/blocks.js.map +1 -1
- package/dist/tools/connections.d.ts +86 -0
- package/dist/tools/connections.d.ts.map +1 -1
- package/dist/tools/connections.js +70 -66
- package/dist/tools/connections.js.map +1 -1
- package/dist/tools/eduflow.d.ts +223 -0
- package/dist/tools/eduflow.d.ts.map +1 -1
- package/dist/tools/eduflow.js +114 -93
- package/dist/tools/eduflow.js.map +1 -1
- package/dist/tools/participants.d.ts +110 -0
- package/dist/tools/participants.d.ts.map +1 -1
- package/dist/tools/participants.js +62 -58
- package/dist/tools/participants.js.map +1 -1
- package/dist/tools/presentation.d.ts +116 -0
- package/dist/tools/presentation.d.ts.map +1 -1
- package/dist/tools/presentation.js +51 -47
- package/dist/tools/presentation.js.map +1 -1
- package/dist/tools/projects.d.ts +65 -0
- package/dist/tools/projects.d.ts.map +1 -1
- package/dist/tools/projects.js +48 -44
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/resources.d.ts +46 -0
- package/dist/tools/resources.d.ts.map +1 -1
- package/dist/tools/resources.js +32 -28
- package/dist/tools/resources.js.map +1 -1
- package/dist/tools/store.d.ts +62 -0
- package/dist/tools/store.d.ts.map +1 -1
- package/dist/tools/store.js +59 -55
- package/dist/tools/store.js.map +1 -1
- package/mcp-config.example.json +4 -5
- package/package.json +7 -2
- package/src/client.ts +12 -5
- package/src/config.ts +1 -0
- package/src/http-server.ts +573 -0
- package/src/index.ts +3 -94
- package/src/server-factory.ts +109 -0
- package/src/tools/admin.ts +20 -14
- package/src/tools/ai-designer.ts +16 -10
- package/src/tools/analytics.ts +13 -7
- package/src/tools/auth.ts +32 -26
- package/src/tools/blocks.ts +18 -12
- package/src/tools/connections.ts +14 -8
- package/src/tools/eduflow.ts +36 -12
- package/src/tools/participants.ts +15 -9
- package/src/tools/presentation.ts +12 -6
- package/src/tools/projects.ts +14 -8
- package/src/tools/resources.ts +12 -6
- package/src/tools/store.ts +14 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/tools/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/tools/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;+DAWkB,GAAG;;;;;;;;;;;mCAiB/B;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;6BA0B7B;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE;;EAK/C;AAGD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;+DAnD0C,GAAG;;;;;;;;;;;mCAiB/B;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;6BA0B7B;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE;;CAQS,CAAC"}
|
package/dist/tools/store.js
CHANGED
|
@@ -1,62 +1,66 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { client } from '../client.js';
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
2
|
+
import { client as defaultClient } from '../client.js';
|
|
3
|
+
export function createStoreTools(c) {
|
|
4
|
+
return {
|
|
5
|
+
store_list_audiobooks: {
|
|
6
|
+
description: 'Lister les audiobooks disponibles dans le store LYRRA. Supporte la pagination, recherche et filtres.',
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
page: z.number().optional().describe('Page (défaut: 1)'),
|
|
9
|
+
limit: z.number().optional().describe('Nombre par page (défaut: 20)'),
|
|
10
|
+
search: z.string().optional().describe('Recherche par titre/auteur'),
|
|
11
|
+
category: z.string().optional().describe('Filtrer par catégorie'),
|
|
12
|
+
featured: z.boolean().optional().describe('Uniquement les audiobooks mis en avant'),
|
|
13
|
+
}),
|
|
14
|
+
handler: async ({ page, limit, search, category, featured }) => {
|
|
15
|
+
const params = new URLSearchParams();
|
|
16
|
+
if (page)
|
|
17
|
+
params.set('page', String(page));
|
|
18
|
+
if (limit)
|
|
19
|
+
params.set('limit', String(limit));
|
|
20
|
+
if (search)
|
|
21
|
+
params.set('search', search);
|
|
22
|
+
if (category)
|
|
23
|
+
params.set('category', category);
|
|
24
|
+
if (featured)
|
|
25
|
+
params.set('featured', 'true');
|
|
26
|
+
const query = params.toString() ? `?${params}` : '';
|
|
27
|
+
return c.post(`/store/public/audiobooks${query}`, {});
|
|
28
|
+
},
|
|
27
29
|
},
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
store_get_audiobook: {
|
|
31
|
+
description: 'Détails complets d\'un audiobook : chapitres, auteur, avis, prix en crédits, statistiques.',
|
|
32
|
+
inputSchema: z.object({
|
|
33
|
+
audiobookId: z.string().describe('ID de l\'audiobook'),
|
|
34
|
+
}),
|
|
35
|
+
handler: async ({ audiobookId }) => {
|
|
36
|
+
return c.get(`/store/public/audiobooks/${audiobookId}`);
|
|
37
|
+
},
|
|
36
38
|
},
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
store_list_authors: {
|
|
40
|
+
description: 'Lister les auteurs mis en avant sur le store.',
|
|
41
|
+
inputSchema: z.object({}),
|
|
42
|
+
handler: async () => {
|
|
43
|
+
return c.get('/store/public/authors/featured');
|
|
44
|
+
},
|
|
43
45
|
},
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
store_my_library: {
|
|
47
|
+
description: 'Récupérer ma bibliothèque d\'audiobooks achetés.',
|
|
48
|
+
inputSchema: z.object({}),
|
|
49
|
+
handler: async () => {
|
|
50
|
+
return c.get('/store/my-library');
|
|
51
|
+
},
|
|
50
52
|
},
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
store_search: {
|
|
54
|
+
description: 'Rechercher des audiobooks dans le store par mot-clé.',
|
|
55
|
+
inputSchema: z.object({
|
|
56
|
+
query: z.string().describe('Terme de recherche'),
|
|
57
|
+
}),
|
|
58
|
+
handler: async ({ query }) => {
|
|
59
|
+
return c.post('/store/public/audiobooks', { search: query });
|
|
60
|
+
},
|
|
59
61
|
},
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// Backward compatibility for stdio mode
|
|
65
|
+
export const storeTools = createStoreTools(defaultClient);
|
|
62
66
|
//# sourceMappingURL=store.js.map
|
package/dist/tools/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/tools/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/tools/store.ts"],"names":[],"mappings":"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"}
|
package/mcp-config.example.json
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"mcpServers": {
|
|
3
3
|
"lyrra-studio": {
|
|
4
|
-
"command": "
|
|
5
|
-
"args": ["
|
|
6
|
-
"cwd": "<CHEMIN_ABSOLU>/backend/mcp-server",
|
|
4
|
+
"command": "npx",
|
|
5
|
+
"args": ["-y", "@lyrra/mcp-server"],
|
|
7
6
|
"env": {
|
|
8
7
|
"LYRRA_CLIENT_ID": "VOTRE_CLIENT_ID",
|
|
9
8
|
"LYRRA_CLIENT_SECRET": "rak_VOTRE_CLIENT_SECRET",
|
|
10
|
-
"LYRRA_API_URL": "
|
|
11
|
-
"LYRRA_EDUFLOW_API_URL": "
|
|
9
|
+
"LYRRA_API_URL": "https://lyrrastudio.com/api",
|
|
10
|
+
"LYRRA_EDUFLOW_API_URL": "https://lyrrastudio.com/api/eduflow"
|
|
12
11
|
}
|
|
13
12
|
}
|
|
14
13
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lyrra/mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "LYRRA Studio MCP Server - Pilotez LYRRA Studio depuis Claude AI, Cursor, etc.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -10,10 +10,15 @@
|
|
|
10
10
|
"scripts": {
|
|
11
11
|
"build": "tsc",
|
|
12
12
|
"start": "node dist/index.js",
|
|
13
|
-
"
|
|
13
|
+
"start:http": "node dist/http-server.js",
|
|
14
|
+
"dev": "tsx src/index.ts",
|
|
15
|
+
"dev:http": "tsx src/http-server.ts"
|
|
14
16
|
},
|
|
15
17
|
"dependencies": {
|
|
16
18
|
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
19
|
+
"@types/cors": "^2.8.19",
|
|
20
|
+
"@types/express": "^5.0.6",
|
|
21
|
+
"cors": "^2.8.6",
|
|
17
22
|
"zod": "^3.24.0"
|
|
18
23
|
},
|
|
19
24
|
"devDependencies": {
|
package/src/client.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { config } from './config.js';
|
|
2
2
|
|
|
3
|
+
export interface LyrraClientOptions {
|
|
4
|
+
apiUrl?: string;
|
|
5
|
+
eduflowUrl?: string;
|
|
6
|
+
clientId?: string;
|
|
7
|
+
clientSecret?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
3
10
|
export class LyrraClient {
|
|
4
11
|
private apiUrl: string;
|
|
5
12
|
private eduflowUrl: string;
|
|
@@ -7,11 +14,11 @@ export class LyrraClient {
|
|
|
7
14
|
private clientSecret: string;
|
|
8
15
|
private jwtToken: string | null = null;
|
|
9
16
|
|
|
10
|
-
constructor() {
|
|
11
|
-
this.apiUrl = config.apiUrl;
|
|
12
|
-
this.eduflowUrl = config.eduflowApiUrl;
|
|
13
|
-
this.clientId = config.clientId;
|
|
14
|
-
this.clientSecret = config.clientSecret;
|
|
17
|
+
constructor(options?: LyrraClientOptions) {
|
|
18
|
+
this.apiUrl = options?.apiUrl || config.apiUrl;
|
|
19
|
+
this.eduflowUrl = options?.eduflowUrl || config.eduflowApiUrl;
|
|
20
|
+
this.clientId = options?.clientId || config.clientId;
|
|
21
|
+
this.clientSecret = options?.clientSecret || config.clientSecret;
|
|
15
22
|
}
|
|
16
23
|
|
|
17
24
|
private get headers(): Record<string, string> {
|
package/src/config.ts
CHANGED
|
@@ -3,4 +3,5 @@ export const config = {
|
|
|
3
3
|
clientId: process.env.LYRRA_CLIENT_ID || '',
|
|
4
4
|
clientSecret: process.env.LYRRA_CLIENT_SECRET || '',
|
|
5
5
|
eduflowApiUrl: process.env.LYRRA_EDUFLOW_API_URL || 'http://localhost:3001/eduflow',
|
|
6
|
+
frontendUrl: process.env.LYRRA_FRONTEND_URL || (process.env.LYRRA_API_URL ? process.env.LYRRA_API_URL.replace(/\/api$/, '') : 'http://localhost:5173'),
|
|
6
7
|
};
|