@kajidog/connpass-mcp-server 0.2.0 → 0.4.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.
Files changed (59) hide show
  1. package/README.md +72 -149
  2. package/dist/index.d.ts +0 -2
  3. package/dist/index.js +4729 -162
  4. package/dist/index.js.map +1 -1
  5. package/dist/mcp-app.html +139 -0
  6. package/dist/stdio.d.ts +1 -0
  7. package/dist/stdio.js +2120 -0
  8. package/dist/stdio.js.map +1 -0
  9. package/package.json +21 -20
  10. package/dist/apps-sdk.d.ts +0 -8
  11. package/dist/apps-sdk.d.ts.map +0 -1
  12. package/dist/apps-sdk.js +0 -79
  13. package/dist/apps-sdk.js.map +0 -1
  14. package/dist/config.d.ts +0 -7
  15. package/dist/config.d.ts.map +0 -1
  16. package/dist/config.js +0 -82
  17. package/dist/config.js.map +0 -1
  18. package/dist/index.d.ts.map +0 -1
  19. package/dist/tools/events.d.ts +0 -82
  20. package/dist/tools/events.d.ts.map +0 -1
  21. package/dist/tools/events.js +0 -385
  22. package/dist/tools/events.js.map +0 -1
  23. package/dist/tools/formatting.d.ts +0 -74
  24. package/dist/tools/formatting.d.ts.map +0 -1
  25. package/dist/tools/formatting.js +0 -211
  26. package/dist/tools/formatting.js.map +0 -1
  27. package/dist/tools/groups.d.ts +0 -48
  28. package/dist/tools/groups.d.ts.map +0 -1
  29. package/dist/tools/groups.js +0 -106
  30. package/dist/tools/groups.js.map +0 -1
  31. package/dist/tools/index.d.ts +0 -58
  32. package/dist/tools/index.d.ts.map +0 -1
  33. package/dist/tools/index.js +0 -21
  34. package/dist/tools/index.js.map +0 -1
  35. package/dist/tools/shared.d.ts +0 -24
  36. package/dist/tools/shared.d.ts.map +0 -1
  37. package/dist/tools/shared.js +0 -113
  38. package/dist/tools/shared.js.map +0 -1
  39. package/dist/tools/users.d.ts +0 -51
  40. package/dist/tools/users.d.ts.map +0 -1
  41. package/dist/tools/users.js +0 -239
  42. package/dist/tools/users.js.map +0 -1
  43. package/dist/transports/http.d.ts +0 -17
  44. package/dist/transports/http.d.ts.map +0 -1
  45. package/dist/transports/http.js +0 -185
  46. package/dist/transports/http.js.map +0 -1
  47. package/dist/transports/sse.d.ts +0 -21
  48. package/dist/transports/sse.d.ts.map +0 -1
  49. package/dist/transports/sse.js +0 -161
  50. package/dist/transports/sse.js.map +0 -1
  51. package/dist/widgets/connpass-events.d.ts +0 -29
  52. package/dist/widgets/connpass-events.d.ts.map +0 -1
  53. package/dist/widgets/connpass-events.html +0 -2269
  54. package/dist/widgets/connpass-events.js +0 -58
  55. package/dist/widgets/connpass-events.js.map +0 -1
  56. package/dist/widgets/index.d.ts +0 -6
  57. package/dist/widgets/index.d.ts.map +0 -1
  58. package/dist/widgets/index.js +0 -34
  59. package/dist/widgets/index.js.map +0 -1
@@ -1,161 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.startSseServer = startSseServer;
4
- const node_http_1 = require("node:http");
5
- const node_url_1 = require("node:url");
6
- const sse_js_1 = require("@modelcontextprotocol/sdk/server/sse.js");
7
- const defaultLogger = {
8
- info: (...args) => console.error(...args),
9
- error: (...args) => console.error(...args),
10
- };
11
- function setCorsHeaders(res) {
12
- res.setHeader("Access-Control-Allow-Origin", "*");
13
- res.setHeader("Access-Control-Allow-Headers", "content-type");
14
- }
15
- async function startSseServer(options) {
16
- const { createMcpServer, port, ssePath = "/mcp", messagePath = "/mcp/messages", logger, enableCors = true, } = options;
17
- const log = {
18
- ...defaultLogger,
19
- ...(logger ?? {}),
20
- };
21
- const sessions = new Map();
22
- const handleSseRequest = async (res) => {
23
- if (enableCors) {
24
- setCorsHeaders(res);
25
- }
26
- const server = createMcpServer();
27
- const transport = new sse_js_1.SSEServerTransport(messagePath, res);
28
- const sessionId = transport.sessionId;
29
- sessions.set(sessionId, { server, transport });
30
- transport.onclose = async () => {
31
- sessions.delete(sessionId);
32
- try {
33
- // Prevent recursive close loops triggered by server.close() calling transport.close()
34
- transport.onclose = undefined;
35
- await server.close();
36
- }
37
- catch (error) {
38
- log.error("Failed to close MCP server:", error);
39
- }
40
- };
41
- transport.onerror = (error) => {
42
- log.error("SSE transport error:", error);
43
- };
44
- try {
45
- await server.connect(transport);
46
- }
47
- catch (error) {
48
- sessions.delete(sessionId);
49
- log.error("Failed to establish SSE connection:", error);
50
- if (!res.headersSent) {
51
- res.writeHead(500).end("Failed to establish SSE connection");
52
- }
53
- }
54
- };
55
- const handleMessagePost = async (req, res, url) => {
56
- if (enableCors) {
57
- setCorsHeaders(res);
58
- }
59
- const sessionId = url.searchParams.get("sessionId");
60
- if (!sessionId) {
61
- res.writeHead(400).end("Missing sessionId parameter");
62
- return;
63
- }
64
- const session = sessions.get(sessionId);
65
- if (!session) {
66
- res.writeHead(404).end("Unknown session");
67
- return;
68
- }
69
- try {
70
- await session.transport.handlePostMessage(req, res);
71
- }
72
- catch (error) {
73
- log.error("Failed to process message:", error);
74
- if (!res.headersSent) {
75
- res.writeHead(500).end("Failed to process message");
76
- }
77
- }
78
- };
79
- const httpServer = (0, node_http_1.createServer)(async (req, res) => {
80
- if (!req.url) {
81
- res.writeHead(400).end("Invalid request");
82
- return;
83
- }
84
- const origin = req.headers.host
85
- ? `http://${req.headers.host}`
86
- : "http://localhost";
87
- const url = new node_url_1.URL(req.url, origin);
88
- const normalizedPath = normalizePath(url.pathname);
89
- if (req.method === "GET" && normalizedPath === "/healthz") {
90
- res.writeHead(200, { "Content-Type": "application/json" });
91
- res.end(JSON.stringify({
92
- status: "ok",
93
- transport: "sse",
94
- }));
95
- return;
96
- }
97
- if (req.method === "OPTIONS" &&
98
- (normalizedPath === ssePath || normalizedPath === messagePath)) {
99
- if (enableCors) {
100
- setCorsHeaders(res);
101
- }
102
- res.writeHead(204, {
103
- "Access-Control-Allow-Methods": "GET, POST, OPTIONS",
104
- });
105
- res.end();
106
- return;
107
- }
108
- if (req.method === "GET" && normalizedPath === ssePath) {
109
- await handleSseRequest(res);
110
- return;
111
- }
112
- if (req.method === "POST" && normalizedPath === messagePath) {
113
- await handleMessagePost(req, res, url);
114
- return;
115
- }
116
- res.writeHead(404).end("Not found");
117
- });
118
- httpServer.on("clientError", (error, socket) => {
119
- log.error("HTTP client error:", error);
120
- socket.end("HTTP/1.1 400 Bad Request\r\n\r\n");
121
- });
122
- await new Promise((resolve) => {
123
- httpServer.listen(port, () => {
124
- log.info(`Connpass MCP Server listening on http://localhost:${port} (SSE transport)`);
125
- log.info(` SSE stream: GET http://localhost:${port}${ssePath}`);
126
- log.info(` Message endpoint: POST http://localhost:${port}${messagePath}?sessionId=...`);
127
- resolve();
128
- });
129
- });
130
- return {
131
- httpServer,
132
- close: async () => {
133
- await Promise.all(Array.from(sessions.values(), async ({ server, transport }) => {
134
- sessions.delete(transport.sessionId);
135
- await transport.close();
136
- await server.close();
137
- })).catch((error) => {
138
- log.error("Failed to shut down sessions:", error);
139
- });
140
- await new Promise((resolve, reject) => {
141
- httpServer.close((error) => {
142
- if (error) {
143
- reject(error);
144
- }
145
- else {
146
- resolve();
147
- }
148
- });
149
- });
150
- },
151
- ssePath,
152
- messagePath,
153
- };
154
- }
155
- function normalizePath(pathname) {
156
- if (pathname === "/") {
157
- return pathname;
158
- }
159
- return pathname.replace(/\/+$/, "") || "/";
160
- }
161
- //# sourceMappingURL=sse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/transports/sse.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- import type { ResourceContents } from "@modelcontextprotocol/sdk/types.js";
2
- export declare const CONNPASS_EVENTS_WIDGET_URI = "ui://connpass/widgets/events-carousel.html";
3
- export declare const connpassEventsWidget: {
4
- uri: string;
5
- resource: {
6
- uri: string;
7
- name: string;
8
- description: string;
9
- mimeType: string;
10
- _meta: {
11
- readonly "openai/outputTemplate": "ui://connpass/widgets/events-carousel.html";
12
- readonly "openai/widgetAccessible": true;
13
- readonly "openai/resultCanProduceWidget": true;
14
- };
15
- };
16
- resourceTemplate: {
17
- uriTemplate: string;
18
- name: string;
19
- description: string;
20
- mimeType: string;
21
- _meta: {
22
- readonly "openai/outputTemplate": "ui://connpass/widgets/events-carousel.html";
23
- readonly "openai/widgetAccessible": true;
24
- readonly "openai/resultCanProduceWidget": true;
25
- };
26
- };
27
- content(): ResourceContents[number];
28
- };
29
- //# sourceMappingURL=connpass-events.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connpass-events.d.ts","sourceRoot":"","sources":["../../src/widgets/connpass-events.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,gBAAgB,EAEjB,MAAM,oCAAoC,CAAC;AAE5C,eAAO,MAAM,0BAA0B,+CACO,CAAC;AA+B/C,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;eAkBpB,gBAAgB,CAAC,MAAM,CAAC;CAWpC,CAAC"}