@kajidog/connpass-mcp-server 0.1.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 (68) hide show
  1. package/LICENCE +21 -0
  2. package/README.md +190 -0
  3. package/dist/apps-sdk.d.ts +8 -0
  4. package/dist/apps-sdk.d.ts.map +1 -0
  5. package/dist/apps-sdk.js +77 -0
  6. package/dist/apps-sdk.js.map +1 -0
  7. package/dist/auth/jwt.d.ts +23 -0
  8. package/dist/auth/jwt.d.ts.map +1 -0
  9. package/dist/auth/jwt.js +143 -0
  10. package/dist/auth/jwt.js.map +1 -0
  11. package/dist/config.d.ts +5 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +60 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/index.d.ts +3 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +178 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/session.d.ts +9 -0
  20. package/dist/session.d.ts.map +1 -0
  21. package/dist/session.js +58 -0
  22. package/dist/session.js.map +1 -0
  23. package/dist/tools/events.d.ts +82 -0
  24. package/dist/tools/events.d.ts.map +1 -0
  25. package/dist/tools/events.js +390 -0
  26. package/dist/tools/events.js.map +1 -0
  27. package/dist/tools/formatting.d.ts +74 -0
  28. package/dist/tools/formatting.d.ts.map +1 -0
  29. package/dist/tools/formatting.js +211 -0
  30. package/dist/tools/formatting.js.map +1 -0
  31. package/dist/tools/groups.d.ts +48 -0
  32. package/dist/tools/groups.d.ts.map +1 -0
  33. package/dist/tools/groups.js +115 -0
  34. package/dist/tools/groups.js.map +1 -0
  35. package/dist/tools/index.d.ts +58 -0
  36. package/dist/tools/index.d.ts.map +1 -0
  37. package/dist/tools/index.js +21 -0
  38. package/dist/tools/index.js.map +1 -0
  39. package/dist/tools/shared.d.ts +24 -0
  40. package/dist/tools/shared.d.ts.map +1 -0
  41. package/dist/tools/shared.js +136 -0
  42. package/dist/tools/shared.js.map +1 -0
  43. package/dist/tools/users.d.ts +51 -0
  44. package/dist/tools/users.d.ts.map +1 -0
  45. package/dist/tools/users.js +252 -0
  46. package/dist/tools/users.js.map +1 -0
  47. package/dist/transports/http.d.ts +17 -0
  48. package/dist/transports/http.d.ts.map +1 -0
  49. package/dist/transports/http.js +166 -0
  50. package/dist/transports/http.js.map +1 -0
  51. package/dist/transports/sse.d.ts +21 -0
  52. package/dist/transports/sse.d.ts.map +1 -0
  53. package/dist/transports/sse.js +153 -0
  54. package/dist/transports/sse.js.map +1 -0
  55. package/dist/transports/stdio.d.ts +38 -0
  56. package/dist/transports/stdio.d.ts.map +1 -0
  57. package/dist/transports/stdio.js +29 -0
  58. package/dist/transports/stdio.js.map +1 -0
  59. package/dist/widgets/connpass-events.d.ts +29 -0
  60. package/dist/widgets/connpass-events.d.ts.map +1 -0
  61. package/dist/widgets/connpass-events.html +2269 -0
  62. package/dist/widgets/connpass-events.js +58 -0
  63. package/dist/widgets/connpass-events.js.map +1 -0
  64. package/dist/widgets/index.d.ts +6 -0
  65. package/dist/widgets/index.d.ts.map +1 -0
  66. package/dist/widgets/index.js +31 -0
  67. package/dist/widgets/index.js.map +1 -0
  68. package/package.json +58 -0
package/dist/index.js ADDED
@@ -0,0 +1,178 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
5
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
6
+ const connpass_api_client_1 = require("@kajidog/connpass-api-client");
7
+ const sse_js_1 = require("./transports/sse.js");
8
+ const http_js_1 = require("./transports/http.js");
9
+ const index_js_2 = require("./tools/index.js");
10
+ const apps_sdk_js_1 = require("./apps-sdk.js");
11
+ const config_js_1 = require("./config.js");
12
+ const index_js_3 = require("./widgets/index.js");
13
+ const connpassClient = new connpass_api_client_1.ConnpassClient({
14
+ apiKey: process.env.CONNPASS_API_KEY || "dummy-key",
15
+ });
16
+ function createConnpassServer() {
17
+ const appsSdkOutputEnabled = (0, config_js_1.isAppsSdkOutputEnabled)();
18
+ console.log(`[mcp-server] Apps SDK output ${appsSdkOutputEnabled ? "enabled" : "disabled"}.`);
19
+ const server = new index_js_1.Server({
20
+ name: "connpass-mcp-server",
21
+ version: "1.0.0",
22
+ }, {
23
+ capabilities: {
24
+ tools: {},
25
+ resources: {},
26
+ resourceTemplates: {},
27
+ },
28
+ });
29
+ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
30
+ return { tools: index_js_2.tools };
31
+ });
32
+ server.setRequestHandler(types_js_1.ListResourcesRequestSchema, async () => {
33
+ const resources = (0, index_js_3.listResources)();
34
+ console.log("[mcp-server] list_resources", resources);
35
+ return { resources };
36
+ });
37
+ server.setRequestHandler(types_js_1.ListResourceTemplatesRequestSchema, async () => {
38
+ const templates = (0, index_js_3.listResourceTemplates)();
39
+ console.log("[mcp-server] list_resource_templates", templates);
40
+ return { resourceTemplates: templates };
41
+ });
42
+ server.setRequestHandler(types_js_1.ReadResourceRequestSchema, async (request) => {
43
+ const content = (0, index_js_3.getResourceContent)(request.params.uri);
44
+ if (!content) {
45
+ throw new Error(`Unknown resource: ${request.params.uri}`);
46
+ }
47
+ const meta = Object.prototype.hasOwnProperty.call(content, "_meta")
48
+ ? content._meta
49
+ : undefined;
50
+ console.log("[mcp-server] read_resource", request.params.uri, meta);
51
+ return {
52
+ contents: [content],
53
+ };
54
+ });
55
+ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
56
+ try {
57
+ const { name, arguments: args } = request.params;
58
+ const result = await (0, index_js_2.handleToolCall)(name, args, connpassClient);
59
+ return (0, apps_sdk_js_1.buildCallToolResult)({
60
+ toolName: name,
61
+ result,
62
+ includeAppsSdkPayload: appsSdkOutputEnabled,
63
+ });
64
+ }
65
+ catch (error) {
66
+ return {
67
+ content: [
68
+ {
69
+ type: "text",
70
+ text: `Error: ${error instanceof Error ? error.message : String(error)}`,
71
+ },
72
+ ],
73
+ isError: true,
74
+ };
75
+ }
76
+ });
77
+ return server;
78
+ }
79
+ function parseArgs() {
80
+ const args = process.argv.slice(2);
81
+ let transport = "http"; // Default transport
82
+ let port = 3000;
83
+ for (let i = 0; i < args.length; i++) {
84
+ const arg = args[i];
85
+ if (arg === "--transport" || arg === "-t") {
86
+ const value = args[i + 1];
87
+ if (value && !value.startsWith("-")) {
88
+ transport = value.toLowerCase();
89
+ i++;
90
+ }
91
+ }
92
+ else if (arg === "--port" || arg === "-p") {
93
+ const value = args[i + 1];
94
+ if (value && !value.startsWith("-")) {
95
+ const parsed = Number.parseInt(value, 10);
96
+ if (Number.isFinite(parsed)) {
97
+ port = parsed;
98
+ }
99
+ i++;
100
+ }
101
+ }
102
+ else if (arg.startsWith("--transport=")) {
103
+ transport = arg.split("=")[1].toLowerCase();
104
+ }
105
+ else if (arg.startsWith("--port=")) {
106
+ const parsed = Number.parseInt(arg.split("=")[1], 10);
107
+ if (Number.isFinite(parsed)) {
108
+ port = parsed;
109
+ }
110
+ }
111
+ else if (arg === "--help" || arg === "-h") {
112
+ console.log(`
113
+ Connpass MCP Server
114
+
115
+ Usage: connpass-mcp-server [options]
116
+
117
+ Options:
118
+ -t, --transport <type> Transport type: http or sse (default: http)
119
+ -p, --port <number> Port number for http/sse transports (default: 3000)
120
+ -h, --help Show this help message
121
+
122
+ Examples:
123
+ connpass-mcp-server # Start with HTTP transport on port 3000
124
+ connpass-mcp-server --transport sse --port 8080 # Start with SSE transport on port 8080
125
+ connpass-mcp-server -t http -p 5000 # Start with HTTP transport on port 5000
126
+
127
+ Environment Variables:
128
+ CONNPASS_API_KEY Connpass API Key
129
+ CONNPASS_DEFAULT_USER_ID Default user ID
130
+ CONNPASS_INCLUDE_PRESENTATIONS_DEFAULT Include presentations by default
131
+ CONNPASS_ENABLE_APPS_SDK_OUTPUT Enable Apps SDK output
132
+ MCP_BASE_PATH MCP base path (for SSE transport)
133
+ `);
134
+ process.exit(0);
135
+ }
136
+ }
137
+ // Allow environment variable override for port
138
+ const envPort = Number.parseInt(process.env.PORT ?? "", 10);
139
+ if (Number.isFinite(envPort)) {
140
+ port = envPort;
141
+ }
142
+ // Allow environment variable override for transport
143
+ const envTransport = process.env.MCP_TRANSPORT?.toLowerCase();
144
+ if (envTransport) {
145
+ transport = envTransport;
146
+ }
147
+ return { transport, port };
148
+ }
149
+ async function main() {
150
+ const { transport, port } = parseArgs();
151
+ switch (transport) {
152
+ case "http": {
153
+ await (0, http_js_1.startHttpServer)({
154
+ createMcpServer: createConnpassServer,
155
+ port,
156
+ });
157
+ break;
158
+ }
159
+ case "sse": {
160
+ const basePath = (0, config_js_1.getMcpBasePath)();
161
+ const messagePath = basePath === "/" ? "/messages" : `${basePath}/messages`;
162
+ await (0, sse_js_1.startSseServer)({
163
+ createMcpServer: createConnpassServer,
164
+ ssePath: basePath,
165
+ messagePath,
166
+ port,
167
+ });
168
+ break;
169
+ }
170
+ default:
171
+ throw new Error(`Unsupported MCP transport: ${transport}. Use 'http' or 'sse'.`);
172
+ }
173
+ }
174
+ main().catch((error) => {
175
+ console.error("Server error:", error);
176
+ process.exit(1);
177
+ });
178
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { JwtPayload } from "./auth/jwt.js";
2
+ export interface SessionContext {
3
+ connpassUserId?: number;
4
+ enableAppsSdkOutput: boolean;
5
+ claims: JwtPayload;
6
+ }
7
+ export declare const anonymousSession: SessionContext;
8
+ export declare function buildSessionContextFromJwt(payload: JwtPayload): SessionContext;
9
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB,EAAE,cAI9B,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,UAAU,GAAG,cAAc,CAM9E"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.anonymousSession = void 0;
4
+ exports.buildSessionContextFromJwt = buildSessionContextFromJwt;
5
+ exports.anonymousSession = {
6
+ connpassUserId: undefined,
7
+ enableAppsSdkOutput: false,
8
+ claims: {},
9
+ };
10
+ function buildSessionContextFromJwt(payload) {
11
+ return {
12
+ connpassUserId: parseConnpassUserId(payload.connpass_user_id),
13
+ enableAppsSdkOutput: parseEnableAppsSdkOutput(payload.enable_apps_sdk_output),
14
+ claims: payload,
15
+ };
16
+ }
17
+ function parseConnpassUserId(raw) {
18
+ if (raw === undefined || raw === null) {
19
+ return undefined;
20
+ }
21
+ if (typeof raw === "number") {
22
+ if (!Number.isInteger(raw) || raw <= 0) {
23
+ return undefined;
24
+ }
25
+ return raw;
26
+ }
27
+ if (typeof raw === "string") {
28
+ const trimmed = raw.trim();
29
+ if (trimmed.length === 0) {
30
+ return undefined;
31
+ }
32
+ const numeric = Number(trimmed);
33
+ if (!Number.isInteger(numeric) || numeric <= 0) {
34
+ return undefined;
35
+ }
36
+ return numeric;
37
+ }
38
+ return undefined;
39
+ }
40
+ function parseEnableAppsSdkOutput(raw) {
41
+ if (raw === undefined || raw === null) {
42
+ return false;
43
+ }
44
+ if (typeof raw === "boolean") {
45
+ return raw;
46
+ }
47
+ if (typeof raw === "string") {
48
+ const normalized = raw.trim().toLowerCase();
49
+ if (normalized === "true" || normalized === "1" || normalized === "yes" || normalized === "on") {
50
+ return true;
51
+ }
52
+ if (normalized === "false" || normalized === "0" || normalized === "no" || normalized === "off") {
53
+ return false;
54
+ }
55
+ }
56
+ return false;
57
+ }
58
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":";;;AAcA,gEAMC;AAZY,QAAA,gBAAgB,GAAmB;IAC9C,cAAc,EAAE,SAAS;IACzB,mBAAmB,EAAE,KAAK;IAC1B,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,SAAgB,0BAA0B,CAAC,OAAmB;IAC5D,OAAO;QACL,cAAc,EAAE,mBAAmB,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC7D,mBAAmB,EAAE,wBAAwB,CAAC,OAAO,CAAC,sBAAsB,CAAC;QAC7E,MAAM,EAAE,OAAO;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAY;IACvC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YAC/C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAY;IAC5C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YAC/F,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;YAChG,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { ConnpassClient } from "@kajidog/connpass-api-client";
2
+ declare const eventHandlers: {
3
+ search_events(args: unknown, connpassClient: ConnpassClient): Promise<import("./formatting.js").FormattedEventsResponse>;
4
+ get_event_presentations(args: unknown, connpassClient: ConnpassClient): Promise<import("./formatting.js").FormattedPresentationsResponse>;
5
+ get_my_upcoming_events(args: unknown, connpassClient: ConnpassClient): Promise<{
6
+ userId: number;
7
+ today: {
8
+ date: string;
9
+ events: import("./formatting.js").FormattedEvent[];
10
+ };
11
+ upcoming: {
12
+ rangeEnd: string;
13
+ events: import("./formatting.js").FormattedEvent[];
14
+ };
15
+ metadata: {
16
+ inspected: number;
17
+ limit: number;
18
+ daysAhead: number;
19
+ includePresentations: boolean;
20
+ };
21
+ }>;
22
+ };
23
+ export type EventToolName = keyof typeof eventHandlers;
24
+ export declare const eventTools: {
25
+ [x: string]: unknown;
26
+ name: string;
27
+ inputSchema: {
28
+ [x: string]: unknown;
29
+ type: "object";
30
+ properties?: {
31
+ [x: string]: unknown;
32
+ } | undefined;
33
+ required?: string[] | undefined;
34
+ };
35
+ title?: string | undefined;
36
+ description?: string | undefined;
37
+ outputSchema?: {
38
+ [x: string]: unknown;
39
+ type: "object";
40
+ properties?: {
41
+ [x: string]: unknown;
42
+ } | undefined;
43
+ required?: string[] | undefined;
44
+ } | undefined;
45
+ annotations?: {
46
+ [x: string]: unknown;
47
+ title?: string | undefined;
48
+ readOnlyHint?: boolean | undefined;
49
+ destructiveHint?: boolean | undefined;
50
+ idempotentHint?: boolean | undefined;
51
+ openWorldHint?: boolean | undefined;
52
+ } | undefined;
53
+ _meta?: {
54
+ [x: string]: unknown;
55
+ } | undefined;
56
+ icons?: {
57
+ [x: string]: unknown;
58
+ src: string;
59
+ mimeType?: string | undefined;
60
+ sizes?: string[] | undefined;
61
+ }[] | undefined;
62
+ }[];
63
+ export declare function isEventTool(name: string): name is EventToolName;
64
+ export declare function handleEventTool(name: EventToolName, args: unknown, connpassClient: ConnpassClient): Promise<import("./formatting.js").FormattedEventsResponse | import("./formatting.js").FormattedPresentationsResponse | {
65
+ userId: number;
66
+ today: {
67
+ date: string;
68
+ events: import("./formatting.js").FormattedEvent[];
69
+ };
70
+ upcoming: {
71
+ rangeEnd: string;
72
+ events: import("./formatting.js").FormattedEvent[];
73
+ };
74
+ metadata: {
75
+ inspected: number;
76
+ limit: number;
77
+ daysAhead: number;
78
+ includePresentations: boolean;
79
+ };
80
+ }>;
81
+ export {};
82
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AA2V9D,QAAA,MAAM,aAAa;wBACS,OAAO,kBAAkB,cAAc;kCAM7B,OAAO,kBAAkB,cAAc;iCAKxC,OAAO,kBAAkB,cAAc;;;;;;;;;;;;;;;;;CAyF3E,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,aAAa,CAAC;AAEvD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAqB,CAAC;AAE7C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,aAAa,CAE/D;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,OAAO,EACb,cAAc,EAAE,cAAc;;;;;;;;;;;;;;;;GAG/B"}