@epic-web/workshop-mcp 6.20.6 → 6.22.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/esm/index.js CHANGED
@@ -1,9 +1,22 @@
1
1
  #!/usr/bin/env node
2
+ import { getEnv } from '@epic-web/workshop-utils/init-env';
2
3
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
4
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
5
+ import * as Sentry from '@sentry/node';
4
6
  import { initPrompts } from './prompts.js';
5
7
  import { initResources } from './resources.js';
6
8
  import { initPromptTools, initResourceTools, initTools } from './tools.js';
9
+ // Get environment variables
10
+ const env = getEnv();
11
+ // Initialize Sentry if published and DSN is available
12
+ if (env.EPICSHOP_IS_PUBLISHED && env.SENTRY_DSN) {
13
+ Sentry.init({
14
+ dsn: env.SENTRY_DSN,
15
+ sendDefaultPii: true,
16
+ environment: env.EPICSHOP_IS_PUBLISHED ? 'production' : 'development',
17
+ tracesSampleRate: 1.0,
18
+ });
19
+ }
7
20
  // Create server instance
8
21
  const server = new McpServer({
9
22
  name: 'epicshop',
@@ -21,14 +34,18 @@ The user's work in progress is in the \`playground\` directory. Any changes they
21
34
  ask you to make should be in this directory.
22
35
  `.trim(),
23
36
  });
24
- initTools(server);
25
- initResourceTools(server);
26
- initResources(server);
27
- initPrompts(server);
28
- initPromptTools(server);
37
+ // Wrap with Sentry if enabled
38
+ const monitoredServer = env.EPICSHOP_IS_PUBLISHED && env.SENTRY_DSN
39
+ ? Sentry.wrapMcpServerWithSentry(server)
40
+ : server;
41
+ initTools(monitoredServer);
42
+ initResourceTools(monitoredServer);
43
+ initResources(monitoredServer);
44
+ initPrompts(monitoredServer);
45
+ initPromptTools(monitoredServer);
29
46
  async function main() {
30
47
  const transport = new StdioServerTransport();
31
- await server.connect(transport);
48
+ await monitoredServer.connect(transport);
32
49
  console.error('epicshop MCP Server running on stdio');
33
50
  }
34
51
  main().catch((error) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE1E,yBAAyB;AACzB,MAAM,MAAM,GAAG,IAAI,SAAS,CAC3B;IACC,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,OAAO;IAChB,YAAY,EAAE;QACb,KAAK,EAAE,EAAE;KACT;CACD,EACD;IACC,YAAY,EAAE;;;;;;;GAOb,CAAC,IAAI,EAAE;CACR,CACD,CAAA;AAED,SAAS,CAAC,MAAM,CAAC,CAAA;AACjB,iBAAiB,CAAC,MAAM,CAAC,CAAA;AACzB,aAAa,CAAC,MAAM,CAAC,CAAA;AACrB,WAAW,CAAC,MAAM,CAAC,CAAA;AACnB,eAAe,CAAC,MAAM,CAAC,CAAA;AAEvB,KAAK,UAAU,IAAI;IAClB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/B,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;AACtD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAA;IAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAChB,CAAC,CAAC,CAAA","sourcesContent":["#!/usr/bin/env node\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport { initPrompts } from './prompts.js'\nimport { initResources } from './resources.js'\nimport { initPromptTools, initResourceTools, initTools } from './tools.js'\n\n// Create server instance\nconst server = new McpServer(\n\t{\n\t\tname: 'epicshop',\n\t\tversion: '1.0.0',\n\t\tcapabilities: {\n\t\t\ttools: {},\n\t\t},\n\t},\n\t{\n\t\tinstructions: `\nThis is intended to be used within a workshop using the Epic Workshop App\n(@epic-web/workshop-app) to help learners in the process of completing the\nworkshop exercises and understanding the learning outcomes.\n\nThe user's work in progress is in the \\`playground\\` directory. Any changes they\nask you to make should be in this directory.\n\t\t`.trim(),\n\t},\n)\n\ninitTools(server)\ninitResourceTools(server)\ninitResources(server)\ninitPrompts(server)\ninitPromptTools(server)\n\nasync function main() {\n\tconst transport = new StdioServerTransport()\n\tawait server.connect(transport)\n\tconsole.error('epicshop MCP Server running on stdio')\n}\n\nmain().catch((error) => {\n\tconsole.error('Fatal error in main():', error)\n\tprocess.exit(1)\n})\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE1E,4BAA4B;AAC5B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAA;AAEpB,sDAAsD;AACtD,IAAI,GAAG,CAAC,qBAAqB,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;IACjD,MAAM,CAAC,IAAI,CAAC;QACX,GAAG,EAAE,GAAG,CAAC,UAAU;QACnB,cAAc,EAAE,IAAI;QACpB,WAAW,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa;QACrE,gBAAgB,EAAE,GAAG;KACrB,CAAC,CAAA;AACH,CAAC;AAED,yBAAyB;AACzB,MAAM,MAAM,GAAG,IAAI,SAAS,CAC3B;IACC,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,OAAO;IAChB,YAAY,EAAE;QACb,KAAK,EAAE,EAAE;KACT;CACD,EACD;IACC,YAAY,EAAE;;;;;;;GAOb,CAAC,IAAI,EAAE;CACR,CACD,CAAA;AAED,8BAA8B;AAC9B,MAAM,eAAe,GACpB,GAAG,CAAC,qBAAqB,IAAI,GAAG,CAAC,UAAU;IAC1C,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC;IACxC,CAAC,CAAC,MAAM,CAAA;AAEV,SAAS,CAAC,eAAe,CAAC,CAAA;AAC1B,iBAAiB,CAAC,eAAe,CAAC,CAAA;AAClC,aAAa,CAAC,eAAe,CAAC,CAAA;AAC9B,WAAW,CAAC,eAAe,CAAC,CAAA;AAC5B,eAAe,CAAC,eAAe,CAAC,CAAA;AAEhC,KAAK,UAAU,IAAI;IAClB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC5C,MAAM,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACxC,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;AACtD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAA;IAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAChB,CAAC,CAAC,CAAA","sourcesContent":["#!/usr/bin/env node\n\nimport { getEnv } from '@epic-web/workshop-utils/init-env'\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport * as Sentry from '@sentry/node'\nimport { initPrompts } from './prompts.js'\nimport { initResources } from './resources.js'\nimport { initPromptTools, initResourceTools, initTools } from './tools.js'\n\n// Get environment variables\nconst env = getEnv()\n\n// Initialize Sentry if published and DSN is available\nif (env.EPICSHOP_IS_PUBLISHED && env.SENTRY_DSN) {\n\tSentry.init({\n\t\tdsn: env.SENTRY_DSN,\n\t\tsendDefaultPii: true,\n\t\tenvironment: env.EPICSHOP_IS_PUBLISHED ? 'production' : 'development',\n\t\ttracesSampleRate: 1.0,\n\t})\n}\n\n// Create server instance\nconst server = new McpServer(\n\t{\n\t\tname: 'epicshop',\n\t\tversion: '1.0.0',\n\t\tcapabilities: {\n\t\t\ttools: {},\n\t\t},\n\t},\n\t{\n\t\tinstructions: `\nThis is intended to be used within a workshop using the Epic Workshop App\n(@epic-web/workshop-app) to help learners in the process of completing the\nworkshop exercises and understanding the learning outcomes.\n\nThe user's work in progress is in the \\`playground\\` directory. Any changes they\nask you to make should be in this directory.\n\t\t`.trim(),\n\t},\n)\n\n// Wrap with Sentry if enabled\nconst monitoredServer =\n\tenv.EPICSHOP_IS_PUBLISHED && env.SENTRY_DSN\n\t\t? Sentry.wrapMcpServerWithSentry(server)\n\t\t: server\n\ninitTools(monitoredServer)\ninitResourceTools(monitoredServer)\ninitResources(monitoredServer)\ninitPrompts(monitoredServer)\ninitPromptTools(monitoredServer)\n\nasync function main() {\n\tconst transport = new StdioServerTransport()\n\tawait monitoredServer.connect(transport)\n\tconsole.error('epicshop MCP Server running on stdio')\n}\n\nmain().catch((error) => {\n\tconsole.error('Fatal error in main():', error)\n\tprocess.exit(1)\n})\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epic-web/workshop-mcp",
3
- "version": "6.20.6",
3
+ "version": "6.22.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -24,7 +24,8 @@
24
24
  "dist"
25
25
  ],
26
26
  "scripts": {
27
- "test": "vitest",
27
+ "test": "vitest run",
28
+ "test:watch": "vitest",
28
29
  "dev": "tsx src/index.ts",
29
30
  "typecheck": "tsc --noEmit",
30
31
  "build": "tshy",
@@ -33,8 +34,9 @@
33
34
  },
34
35
  "dependencies": {
35
36
  "@epic-web/invariant": "^1.0.0",
36
- "@epic-web/workshop-utils": "6.20.6",
37
+ "@epic-web/workshop-utils": "6.22.0",
37
38
  "@modelcontextprotocol/sdk": "^1.14.0",
39
+ "@sentry/node": "^10.5.0",
38
40
  "openid-client": "^6.6.2",
39
41
  "zod": "^3.25.71"
40
42
  },