stresszero-mcp 1.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Emmanuel Gomes Soares — StressZero Entrepreneur
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,157 @@
1
+ # StressZero MCP Server
2
+
3
+ MCP server for the [StressZero Intelligence API](https://stresszeroentrepreneur.fr/intelligence-api) — Score burnout risk across 3 dimensions with AI agents.
4
+
5
+ The **only** burnout scoring MCP server available. Enable Claude, Cursor, Windsurf, n8n, and any MCP-compatible client to assess burnout risk in real-time conversations.
6
+
7
+ ## Tools
8
+
9
+ | Tool | Description |
10
+ |------|-------------|
11
+ | `analyze_burnout` | Score burnout risk across physical, emotional, and effectiveness dimensions. Returns score, risk level, factors, and recommendations. |
12
+ | `generate_burnout_report` | Generate a detailed burnout assessment report with action plans. Requires Starter+ tier. |
13
+ | `quick_burnout_check` | Simplified 3-score burnout screening for chatbots and triage. |
14
+ | `get_stresszero_api_key` | Create a free API key (500 calls/month) for a user. |
15
+
16
+ ## Resources
17
+
18
+ | Resource | Description |
19
+ |----------|-------------|
20
+ | `stresszero://openapi` | Complete OpenAPI 3.1 specification |
21
+
22
+ ## Prompts
23
+
24
+ | Prompt | Description |
25
+ |--------|-------------|
26
+ | `burnout_assessment` | Guided burnout assessment questionnaire template (FR/EN) |
27
+
28
+ ## Quick Start
29
+
30
+ ### 1. Get your free API key
31
+
32
+ Visit [stresszeroentrepreneur.fr/intelligence-api](https://stresszeroentrepreneur.fr/intelligence-api) and sign up. Free tier: **500 calls/month**, no credit card required.
33
+
34
+ ### 2. Configure your MCP client
35
+
36
+ #### Claude Desktop
37
+
38
+ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
39
+
40
+ ```json
41
+ {
42
+ "mcpServers": {
43
+ "stresszero": {
44
+ "command": "npx",
45
+ "args": ["-y", "stresszero-mcp"],
46
+ "env": {
47
+ "STRESSZERO_API_KEY": "sz_live_your_key_here"
48
+ }
49
+ }
50
+ }
51
+ }
52
+ ```
53
+
54
+ #### Claude Code
55
+
56
+ Add to `.mcp.json` at your project root or `~/.claude/mcp.json`:
57
+
58
+ ```json
59
+ {
60
+ "mcpServers": {
61
+ "stresszero": {
62
+ "command": "npx",
63
+ "args": ["-y", "stresszero-mcp"],
64
+ "env": {
65
+ "STRESSZERO_API_KEY": "sz_live_your_key_here"
66
+ }
67
+ }
68
+ }
69
+ }
70
+ ```
71
+
72
+ #### Cursor
73
+
74
+ Add to `.cursor/mcp.json`:
75
+
76
+ ```json
77
+ {
78
+ "mcpServers": {
79
+ "stresszero": {
80
+ "command": "npx",
81
+ "args": ["-y", "stresszero-mcp"],
82
+ "env": {
83
+ "STRESSZERO_API_KEY": "sz_live_your_key_here"
84
+ }
85
+ }
86
+ }
87
+ }
88
+ ```
89
+
90
+ #### Windsurf
91
+
92
+ Add to `~/.codeium/windsurf/mcp_config.json`:
93
+
94
+ ```json
95
+ {
96
+ "mcpServers": {
97
+ "stresszero": {
98
+ "command": "npx",
99
+ "args": ["-y", "stresszero-mcp"],
100
+ "env": {
101
+ "STRESSZERO_API_KEY": "sz_live_your_key_here"
102
+ }
103
+ }
104
+ }
105
+ }
106
+ ```
107
+
108
+ ### 3. Use it
109
+
110
+ Ask Claude: *"Check my burnout risk. My sleep quality is 40/100, motivation is 55/100, and productivity is 35/100. I work 60 hours/week as an entrepreneur."*
111
+
112
+ Claude will automatically call `quick_burnout_check` and return your score with recommendations.
113
+
114
+ ## Use Cases
115
+
116
+ - **AI coaching assistant** — Score burnout in real-time during conversations
117
+ - **HR AI agent** — Detect team burnout risk in employee check-ins
118
+ - **Wellness chatbot** — Triage users based on burnout severity
119
+ - **n8n automation** — Trigger alerts when burnout score exceeds threshold
120
+ - **Productivity tool** — Monitor user wellbeing and suggest breaks
121
+
122
+ ## API Tiers
123
+
124
+ | Tier | Price | Calls/month | Rate limit |
125
+ |------|-------|-------------|------------|
126
+ | Free | 0€ | 500 | 10/min |
127
+ | Starter | 29€/mo | 5,000 | 30/min |
128
+ | Pro | 99€/mo | 25,000 | 60/min |
129
+ | Enterprise | 299€/mo | 100,000 | 120/min |
130
+
131
+ [Get your API key](https://stresszeroentrepreneur.fr/intelligence-api)
132
+
133
+ ## Environment Variables
134
+
135
+ | Variable | Required | Description |
136
+ |----------|----------|-------------|
137
+ | `STRESSZERO_API_KEY` | Yes | Your API key (starts with `sz_live_`) |
138
+ | `STRESSZERO_API_URL` | No | Custom API base URL (default: `https://stresszeroentrepreneur.fr`) |
139
+
140
+ ## Development
141
+
142
+ ```bash
143
+ git clone https://github.com/stresszero/stresszero-mcp.git
144
+ cd stresszero-mcp
145
+ npm install
146
+ npm run build
147
+ STRESSZERO_API_KEY=sz_live_xxx node build/index.js
148
+ ```
149
+
150
+ Debug with the MCP Inspector:
151
+ ```bash
152
+ npx @modelcontextprotocol/inspector node build/index.js
153
+ ```
154
+
155
+ ## License
156
+
157
+ MIT — Emmanuel Gomes Soares, [StressZero Entrepreneur](https://stresszeroentrepreneur.fr)
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * StressZero MCP Server
4
+ *
5
+ * Exposes the StressZero Intelligence API as MCP tools for AI agents.
6
+ * Enables Claude, Cursor, Windsurf, n8n, and any MCP-compatible client
7
+ * to score burnout risk, generate reports, and manage API keys.
8
+ *
9
+ * @author Emmanuel Gomes Soares <hello@stresszeroentrepreneur.fr>
10
+ * @see https://stresszeroentrepreneur.fr/intelligence-api
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG"}
package/build/index.js ADDED
@@ -0,0 +1,454 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * StressZero MCP Server
4
+ *
5
+ * Exposes the StressZero Intelligence API as MCP tools for AI agents.
6
+ * Enables Claude, Cursor, Windsurf, n8n, and any MCP-compatible client
7
+ * to score burnout risk, generate reports, and manage API keys.
8
+ *
9
+ * @author Emmanuel Gomes Soares <hello@stresszeroentrepreneur.fr>
10
+ * @see https://stresszeroentrepreneur.fr/intelligence-api
11
+ */
12
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
13
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
14
+ import { z } from "zod";
15
+ // ============================================================
16
+ // CONFIGURATION
17
+ // ============================================================
18
+ const STRESSZERO_API_KEY = process.env.STRESSZERO_API_KEY;
19
+ if (!STRESSZERO_API_KEY) {
20
+ console.error("Error: STRESSZERO_API_KEY environment variable is required.\n\n" +
21
+ "Get your free API key (500 calls/month) at:\n" +
22
+ " https://stresszeroentrepreneur.fr/intelligence-api\n\n" +
23
+ "Then configure it in your MCP client:\n\n" +
24
+ " Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json\n" +
25
+ " Claude Code: .mcp.json or ~/.claude/mcp.json\n" +
26
+ " Cursor: .cursor/mcp.json\n" +
27
+ " Windsurf: ~/.codeium/windsurf/mcp_config.json\n\n" +
28
+ ' "env": { "STRESSZERO_API_KEY": "sz_live_your_key_here" }\n');
29
+ process.exit(1);
30
+ }
31
+ const API_BASE_URL = process.env.STRESSZERO_API_URL || "https://stresszeroentrepreneur.fr";
32
+ const REQUEST_TIMEOUT_MS = 30_000;
33
+ async function apiRequest(endpoint, options = {}) {
34
+ const url = `${API_BASE_URL}${endpoint}`;
35
+ const controller = new AbortController();
36
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
37
+ try {
38
+ const response = await fetch(url, {
39
+ ...options,
40
+ signal: controller.signal,
41
+ headers: {
42
+ Authorization: `Bearer ${STRESSZERO_API_KEY}`,
43
+ "Content-Type": "application/json",
44
+ "User-Agent": "stresszero-mcp/1.0.0",
45
+ ...options.headers,
46
+ },
47
+ });
48
+ const data = (await response.json());
49
+ if (!response.ok) {
50
+ return {
51
+ success: false,
52
+ error: {
53
+ message: data.error?.message || `HTTP ${response.status}: ${response.statusText}`,
54
+ status: response.status,
55
+ },
56
+ };
57
+ }
58
+ return data;
59
+ }
60
+ catch (error) {
61
+ if (error instanceof Error && error.name === "AbortError") {
62
+ return { success: false, error: { message: "Request timed out after 30s" } };
63
+ }
64
+ return {
65
+ success: false,
66
+ error: { message: error instanceof Error ? error.message : "Unknown network error" },
67
+ };
68
+ }
69
+ finally {
70
+ clearTimeout(timeout);
71
+ }
72
+ }
73
+ // ============================================================
74
+ // SHARED SCHEMAS
75
+ // ============================================================
76
+ const ResponseItemSchema = z.object({
77
+ dimension: z.enum(["physical", "emotional", "effectiveness"]).describe("Burnout dimension to score: physical (sleep, energy, health), emotional (motivation, stress, mood), effectiveness (productivity, focus, achievement)"),
78
+ question_id: z.string().min(1).describe("Identifier for the specific question (e.g., 'sleep', 'motivation', 'productivity')"),
79
+ value: z.number().min(0).max(100).describe("Score from 0 (worst) to 100 (best) for this question"),
80
+ weight: z.number().min(1).max(3).default(1).optional().describe("Importance weight: 1 (normal), 2 (important), 3 (critical). Default: 1"),
81
+ });
82
+ const ContextSchema = z.object({
83
+ profession: z.string().max(100).optional().describe("Professional title or role"),
84
+ hours_per_week: z.number().min(0).max(120).optional().describe("Weekly working hours"),
85
+ team_size: z.number().min(0).max(1000).optional().describe("Team size"),
86
+ years_experience: z.number().min(0).max(50).optional().describe("Years of professional experience"),
87
+ }).optional().describe("Optional context for more personalized analysis");
88
+ // ============================================================
89
+ // MCP SERVER
90
+ // ============================================================
91
+ const server = new McpServer({
92
+ name: "stresszero-mcp",
93
+ version: "1.0.0",
94
+ }, {
95
+ capabilities: { logging: {} },
96
+ });
97
+ // ============================================================
98
+ // TOOL 1: analyze_burnout
99
+ // ============================================================
100
+ server.registerTool("analyze_burnout", {
101
+ title: "Analyze Burnout Risk",
102
+ description: "Score burnout risk across 3 dimensions (physical, emotional, effectiveness). " +
103
+ "Returns a 0-100 total score, risk level (low/moderate/high/critical), " +
104
+ "risk factors, urgency rating, and personalized recommendations. " +
105
+ "Requires 3-20 response items covering at least the 3 dimensions. " +
106
+ "Free tier: 500 calls/month. All tiers have access.",
107
+ inputSchema: {
108
+ responses: z.array(ResponseItemSchema).min(3).max(20).describe("Array of 3-20 scored responses across the 3 burnout dimensions. " +
109
+ "Must include at least one item per dimension (physical, emotional, effectiveness)."),
110
+ context: ContextSchema,
111
+ language: z.enum(["fr", "en"]).default("fr").optional().describe("Response language: 'fr' (French, default) or 'en' (English)"),
112
+ include_recommendations: z.boolean().default(true).optional().describe("Include personalized recommendations in the response. Default: true"),
113
+ },
114
+ annotations: {
115
+ readOnlyHint: true,
116
+ openWorldHint: true,
117
+ },
118
+ }, async ({ responses, context, language, include_recommendations }) => {
119
+ const result = await apiRequest("/api/v1/analyze-burnout", {
120
+ method: "POST",
121
+ body: JSON.stringify({
122
+ responses,
123
+ context,
124
+ options: {
125
+ include_recommendations: include_recommendations ?? true,
126
+ include_dimensions: true,
127
+ language: language ?? "fr",
128
+ },
129
+ }),
130
+ });
131
+ if (!result.success) {
132
+ return {
133
+ isError: true,
134
+ content: [
135
+ {
136
+ type: "text",
137
+ text: `Burnout analysis failed: ${result.error?.message || "Unknown error"}`,
138
+ },
139
+ ],
140
+ };
141
+ }
142
+ const quotaInfo = result.meta
143
+ ? `\n\nAPI Quota: ${result.meta.quota.used}/${result.meta.quota.limit} (${result.meta.quota.tier} tier)`
144
+ : "";
145
+ return {
146
+ content: [
147
+ {
148
+ type: "text",
149
+ text: JSON.stringify(result.data, null, 2) + quotaInfo,
150
+ },
151
+ ],
152
+ };
153
+ });
154
+ // ============================================================
155
+ // TOOL 2: generate_burnout_report
156
+ // ============================================================
157
+ server.registerTool("generate_burnout_report", {
158
+ title: "Generate Detailed Burnout Report",
159
+ description: "Generate a comprehensive burnout assessment report with dimension-by-dimension analysis, " +
160
+ "action plans (immediate/short-term/long-term), and resource recommendations. " +
161
+ "REQUIRES Starter tier or above (29€/month). Free tier will receive a 403 error. " +
162
+ "More detailed than analyze_burnout — includes interpretations, status per dimension, " +
163
+ "and a structured action plan.",
164
+ inputSchema: {
165
+ responses: z.array(ResponseItemSchema).min(3).max(20).describe("Array of 3-20 scored responses across the 3 burnout dimensions."),
166
+ context: z.object({
167
+ profession: z.string().max(100).optional().describe("Professional title"),
168
+ hours_per_week: z.number().min(0).max(120).optional().describe("Weekly hours"),
169
+ team_size: z.number().min(0).max(1000).optional().describe("Team size"),
170
+ years_experience: z.number().min(0).max(50).optional().describe("Years experience"),
171
+ company_name: z.string().max(200).optional().describe("Company name (for report header)"),
172
+ employee_name: z.string().max(200).optional().describe("Subject name (for report header)"),
173
+ }).optional().describe("Context for personalized report generation"),
174
+ language: z.enum(["fr", "en"]).default("fr").optional().describe("Report language: 'fr' (French) or 'en' (English)"),
175
+ format: z.enum(["json", "html"]).default("json").optional().describe("Output format: 'json' (structured data) or 'html' (rendered report)"),
176
+ },
177
+ annotations: {
178
+ readOnlyHint: true,
179
+ openWorldHint: true,
180
+ },
181
+ }, async ({ responses, context, language, format }) => {
182
+ const result = await apiRequest("/api/v1/generate-report", {
183
+ method: "POST",
184
+ body: JSON.stringify({
185
+ responses,
186
+ context,
187
+ language: language ?? "fr",
188
+ format: format ?? "json",
189
+ }),
190
+ });
191
+ if (!result.success) {
192
+ const errMsg = result.error?.message || "Unknown error";
193
+ const hint = result.error?.status === 403
194
+ ? "\n\nHint: This endpoint requires a Starter tier or above (29€/month). " +
195
+ "Upgrade at: https://stresszeroentrepreneur.fr/intelligence-api#pricing"
196
+ : "";
197
+ return {
198
+ isError: true,
199
+ content: [
200
+ {
201
+ type: "text",
202
+ text: `Report generation failed: ${errMsg}${hint}`,
203
+ },
204
+ ],
205
+ };
206
+ }
207
+ const quotaInfo = result.meta
208
+ ? `\n\nAPI Quota: ${result.meta.quota.used}/${result.meta.quota.limit} (${result.meta.quota.tier} tier)`
209
+ : "";
210
+ return {
211
+ content: [
212
+ {
213
+ type: "text",
214
+ text: JSON.stringify(result.data, null, 2) + quotaInfo,
215
+ },
216
+ ],
217
+ };
218
+ });
219
+ // ============================================================
220
+ // TOOL 3: quick_burnout_check
221
+ // ============================================================
222
+ server.registerTool("quick_burnout_check", {
223
+ title: "Quick Burnout Check",
224
+ description: "Simplified burnout screening with just 3 scores (one per dimension). " +
225
+ "Perfect for quick assessments in conversations, chatbots, or triage. " +
226
+ "Internally calls analyze_burnout with sensible defaults.",
227
+ inputSchema: {
228
+ physical_score: z.number().min(0).max(100).describe("Physical wellbeing score 0-100 (sleep quality, energy, health). Low = burnout risk."),
229
+ emotional_score: z.number().min(0).max(100).describe("Emotional wellbeing score 0-100 (motivation, stress, mood). Low = burnout risk."),
230
+ effectiveness_score: z.number().min(0).max(100).describe("Professional effectiveness score 0-100 (productivity, focus, achievement). Low = burnout risk."),
231
+ profession: z.string().max(100).optional().describe("Professional role (e.g., 'entrepreneur', 'developer', 'manager')"),
232
+ hours_per_week: z.number().min(0).max(120).optional().describe("Weekly working hours (triggers overwork alert if > 50)"),
233
+ language: z.enum(["fr", "en"]).default("fr").optional().describe("Response language: 'fr' or 'en'"),
234
+ },
235
+ annotations: {
236
+ readOnlyHint: true,
237
+ openWorldHint: true,
238
+ },
239
+ }, async ({ physical_score, emotional_score, effectiveness_score, profession, hours_per_week, language }) => {
240
+ const result = await apiRequest("/api/v1/analyze-burnout", {
241
+ method: "POST",
242
+ body: JSON.stringify({
243
+ responses: [
244
+ { dimension: "physical", question_id: "overall_physical", value: physical_score, weight: 2 },
245
+ { dimension: "emotional", question_id: "overall_emotional", value: emotional_score, weight: 2 },
246
+ { dimension: "effectiveness", question_id: "overall_effectiveness", value: effectiveness_score, weight: 2 },
247
+ ],
248
+ context: {
249
+ ...(profession && { profession }),
250
+ ...(hours_per_week && { hours_per_week }),
251
+ },
252
+ options: {
253
+ include_recommendations: true,
254
+ include_dimensions: true,
255
+ language: language ?? "fr",
256
+ },
257
+ }),
258
+ });
259
+ if (!result.success) {
260
+ return {
261
+ isError: true,
262
+ content: [
263
+ {
264
+ type: "text",
265
+ text: `Quick burnout check failed: ${result.error?.message || "Unknown error"}`,
266
+ },
267
+ ],
268
+ };
269
+ }
270
+ const data = result.data;
271
+ const score = data?.score;
272
+ const risk = data?.risk;
273
+ const recommendations = data?.recommendations;
274
+ const summary = [
275
+ `Burnout Score: ${score?.total ?? "N/A"}/100`,
276
+ `Risk Level: ${risk?.level ?? "N/A"} (urgency: ${risk?.urgency ?? "N/A"}/10)`,
277
+ `Dimensions: Physical ${score?.dimensions?.physical ?? "N/A"} | Emotional ${score?.dimensions?.emotional ?? "N/A"} | Effectiveness ${score?.dimensions?.effectiveness ?? "N/A"}`,
278
+ "",
279
+ ...(risk?.factors ? [`Risk Factors: ${risk.factors.join(", ")}`] : []),
280
+ "",
281
+ ...(recommendations?.length ? ["Recommendations:", ...recommendations.map((r) => ` - ${r}`)] : []),
282
+ ].join("\n");
283
+ const quotaInfo = result.meta
284
+ ? `\n\nAPI Quota: ${result.meta.quota.used}/${result.meta.quota.limit} (${result.meta.quota.tier} tier)`
285
+ : "";
286
+ return {
287
+ content: [
288
+ {
289
+ type: "text",
290
+ text: summary + quotaInfo,
291
+ },
292
+ ],
293
+ };
294
+ });
295
+ // ============================================================
296
+ // TOOL 4: get_api_key
297
+ // ============================================================
298
+ server.registerTool("get_stresszero_api_key", {
299
+ title: "Get Free API Key",
300
+ description: "Create a free StressZero API key (500 calls/month). " +
301
+ "Use this to help users get started with the API. " +
302
+ "The key is returned once and cannot be retrieved later. " +
303
+ "Requires a valid email address.",
304
+ inputSchema: {
305
+ email: z.string().email().describe("User's email address for the API key"),
306
+ project_name: z.string().min(1).max(100).default("MCP Integration").optional().describe("Name of the project using the API key"),
307
+ },
308
+ annotations: {
309
+ readOnlyHint: false,
310
+ destructiveHint: false,
311
+ idempotentHint: false,
312
+ },
313
+ }, async ({ email, project_name }) => {
314
+ const result = await apiRequest("/api/v1/keys", {
315
+ method: "POST",
316
+ body: JSON.stringify({
317
+ email,
318
+ name: project_name ?? "MCP Integration",
319
+ }),
320
+ });
321
+ if (!result.success) {
322
+ const errMsg = result.error?.message || "Unknown error";
323
+ const hint = result.error?.status === 409
324
+ ? "\nAn active API key already exists for this email."
325
+ : "";
326
+ return {
327
+ isError: true,
328
+ content: [
329
+ {
330
+ type: "text",
331
+ text: `API key creation failed: ${errMsg}${hint}`,
332
+ },
333
+ ],
334
+ };
335
+ }
336
+ const data = result.data;
337
+ return {
338
+ content: [
339
+ {
340
+ type: "text",
341
+ text: [
342
+ "API Key created successfully!",
343
+ "",
344
+ `Key: ${data?.api_key ?? "N/A"}`,
345
+ `Tier: Free (500 calls/month)`,
346
+ "",
347
+ "IMPORTANT: Save this key now — it will NOT be shown again.",
348
+ "",
349
+ `Documentation: ${data?.docs_url ?? "https://stresszeroentrepreneur.fr/intelligence-api"}`,
350
+ ].join("\n"),
351
+ },
352
+ ],
353
+ };
354
+ });
355
+ // ============================================================
356
+ // RESOURCE: OpenAPI Specification
357
+ // ============================================================
358
+ server.registerResource("openapi-spec", "stresszero://openapi", {
359
+ title: "StressZero API OpenAPI Specification",
360
+ description: "Complete OpenAPI 3.1 specification for the StressZero Intelligence API",
361
+ mimeType: "application/json",
362
+ }, async (uri) => {
363
+ const result = await apiRequest("/api/v1/openapi");
364
+ return {
365
+ contents: [
366
+ {
367
+ uri: uri.href,
368
+ text: result.success
369
+ ? JSON.stringify(result.data ?? result, null, 2)
370
+ : JSON.stringify({ error: "Failed to fetch OpenAPI spec" }),
371
+ },
372
+ ],
373
+ };
374
+ });
375
+ // ============================================================
376
+ // PROMPT: Burnout Assessment Template
377
+ // ============================================================
378
+ server.registerPrompt("burnout_assessment", {
379
+ title: "Burnout Assessment",
380
+ description: "Guided burnout assessment prompt. Ask the user questions about their physical, " +
381
+ "emotional, and professional effectiveness to generate a burnout score.",
382
+ argsSchema: {
383
+ language: z.enum(["fr", "en"]).default("fr").describe("Assessment language"),
384
+ context: z.string().optional().describe("Additional context about the person being assessed"),
385
+ },
386
+ }, ({ language, context }) => {
387
+ const isFr = language === "fr";
388
+ const intro = isFr
389
+ ? "Je vais vous guider dans une évaluation rapide du risque de burnout en 3 dimensions."
390
+ : "I'll guide you through a quick burnout risk assessment across 3 dimensions.";
391
+ const questions = isFr
392
+ ? [
393
+ "**Dimension Physique** (sommeil, énergie, santé)",
394
+ "- Sur une échelle de 0 à 100, comment évaluez-vous votre qualité de sommeil ?",
395
+ "- Votre niveau d'énergie au quotidien ?",
396
+ "- Votre santé physique générale ?",
397
+ "",
398
+ "**Dimension Émotionnelle** (motivation, stress, humeur)",
399
+ "- Votre niveau de motivation au travail ?",
400
+ "- Votre gestion du stress ?",
401
+ "- Votre humeur générale ?",
402
+ "",
403
+ "**Dimension Efficacité** (productivité, concentration, accomplissement)",
404
+ "- Votre productivité actuelle ?",
405
+ "- Votre capacité de concentration ?",
406
+ "- Votre sentiment d'accomplissement professionnel ?",
407
+ ]
408
+ : [
409
+ "**Physical Dimension** (sleep, energy, health)",
410
+ "- On a scale of 0-100, how would you rate your sleep quality?",
411
+ "- Your daily energy level?",
412
+ "- Your overall physical health?",
413
+ "",
414
+ "**Emotional Dimension** (motivation, stress, mood)",
415
+ "- Your work motivation level?",
416
+ "- Your stress management?",
417
+ "- Your general mood?",
418
+ "",
419
+ "**Effectiveness Dimension** (productivity, focus, achievement)",
420
+ "- Your current productivity?",
421
+ "- Your ability to concentrate?",
422
+ "- Your sense of professional achievement?",
423
+ ];
424
+ const instruction = isFr
425
+ ? "Après les réponses, utilisez l'outil `analyze_burnout` pour calculer le score et fournir des recommandations."
426
+ : "After the responses, use the `analyze_burnout` tool to calculate the score and provide recommendations.";
427
+ const contextNote = context ? `\nContext: ${context}` : "";
428
+ return {
429
+ messages: [
430
+ {
431
+ role: "user",
432
+ content: {
433
+ type: "text",
434
+ text: [intro, contextNote, "", ...questions, "", instruction].join("\n"),
435
+ },
436
+ },
437
+ ],
438
+ };
439
+ });
440
+ // ============================================================
441
+ // TRANSPORT & START
442
+ // ============================================================
443
+ async function main() {
444
+ const transport = new StdioServerTransport();
445
+ await server.connect(transport);
446
+ console.error("StressZero MCP server running on stdio");
447
+ console.error(`API: ${API_BASE_URL}`);
448
+ console.error("Tools: analyze_burnout, generate_burnout_report, quick_burnout_check, get_stresszero_api_key");
449
+ }
450
+ main().catch((error) => {
451
+ console.error("Fatal error:", error);
452
+ process.exit(1);
453
+ });
454
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "stresszero-mcp",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for StressZero Intelligence API — Burnout risk scoring for AI agents, coaches, and HR platforms",
5
+ "type": "module",
6
+ "bin": {
7
+ "stresszero-mcp": "./build/index.js"
8
+ },
9
+ "main": "./build/index.js",
10
+ "files": [
11
+ "build",
12
+ "README.md",
13
+ "LICENSE",
14
+ "smithery.yaml"
15
+ ],
16
+ "scripts": {
17
+ "build": "tsc && node -e \"const fs=require('fs'); const f='build/index.js'; const c=fs.readFileSync(f,'utf8'); if(!c.startsWith('#!')) fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c);\"",
18
+ "dev": "tsc --watch",
19
+ "start": "node build/index.js",
20
+ "prepublishOnly": "npm run build",
21
+ "inspect": "npx @modelcontextprotocol/inspector node build/index.js"
22
+ },
23
+ "keywords": [
24
+ "mcp",
25
+ "mcp-server",
26
+ "model-context-protocol",
27
+ "burnout",
28
+ "mental-health",
29
+ "wellness",
30
+ "hr",
31
+ "scoring",
32
+ "ai",
33
+ "llm",
34
+ "claude",
35
+ "anthropic",
36
+ "coaching",
37
+ "qvct",
38
+ "stresszero",
39
+ "api"
40
+ ],
41
+ "author": {
42
+ "name": "Emmanuel Gomes Soares",
43
+ "email": "hello@stresszeroentrepreneur.fr",
44
+ "url": "https://stresszeroentrepreneur.fr"
45
+ },
46
+ "license": "MIT",
47
+ "dependencies": {
48
+ "@modelcontextprotocol/sdk": "^1.27.1",
49
+ "zod": "^3.23.0"
50
+ },
51
+ "devDependencies": {
52
+ "@types/node": "^22.0.0",
53
+ "typescript": "^5.7.0"
54
+ },
55
+ "engines": {
56
+ "node": ">=18.0.0"
57
+ },
58
+ "repository": {
59
+ "type": "git",
60
+ "url": "https://github.com/stresszero/stresszero-mcp"
61
+ },
62
+ "homepage": "https://stresszeroentrepreneur.fr/intelligence-api",
63
+ "bugs": {
64
+ "url": "https://github.com/stresszero/stresszero-mcp/issues"
65
+ }
66
+ }
package/smithery.yaml ADDED
@@ -0,0 +1,20 @@
1
+ name: stresszero-mcp
2
+ description: "MCP server for StressZero Intelligence API — Score burnout risk across 3 dimensions (physical, emotional, effectiveness) with AI agents"
3
+ startCommand:
4
+ type: stdio
5
+ configSchema:
6
+ type: object
7
+ properties:
8
+ apiKey:
9
+ type: string
10
+ description: "Your StressZero API key (get free at stresszeroentrepreneur.fr/intelligence-api)"
11
+ required:
12
+ - apiKey
13
+ commandFunction: |-
14
+ (config) => ({
15
+ command: "npx",
16
+ args: ["-y", "stresszero-mcp"],
17
+ env: {
18
+ STRESSZERO_API_KEY: config.apiKey
19
+ }
20
+ })