@kajidog/connpass-mcp-server 0.3.0 → 0.4.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.
Files changed (62) hide show
  1. package/README.md +72 -149
  2. package/dist/index.d.ts +0 -2
  3. package/dist/index.js +4749 -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 +2140 -0
  8. package/dist/stdio.js.map +1 -0
  9. package/package.json +18 -18
  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 -93
  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 -74
  20. package/dist/tools/events.d.ts.map +0 -1
  21. package/dist/tools/events.js +0 -413
  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 -222
  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 -54
  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 -41
  52. package/dist/widgets/connpass-events.d.ts.map +0 -1
  53. package/dist/widgets/connpass-events.js +0 -68
  54. package/dist/widgets/connpass-events.js.map +0 -1
  55. package/dist/widgets/connpass-schedule.d.ts +0 -41
  56. package/dist/widgets/connpass-schedule.d.ts.map +0 -1
  57. package/dist/widgets/connpass-schedule.js +0 -68
  58. package/dist/widgets/connpass-schedule.js.map +0 -1
  59. package/dist/widgets/index.d.ts +0 -6
  60. package/dist/widgets/index.d.ts.map +0 -1
  61. package/dist/widgets/index.js +0 -39
  62. package/dist/widgets/index.js.map +0 -1
@@ -1,113 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.USER_SORT_MAP = exports.USER_SORT_KEYS = exports.GROUP_SORT_MAP = exports.GROUP_SORT_KEYS = exports.EVENT_SORT_MAP = exports.EVENT_SORT_KEYS = exports.DEFAULT_PAGE_SIZE = void 0;
4
- exports.parseDateInput = parseDateInput;
5
- exports.toYmdArray = toYmdArray;
6
- exports.parseHyphenatedDate = parseHyphenatedDate;
7
- exports.normalizeStringArray = normalizeStringArray;
8
- exports.applyPagination = applyPagination;
9
- exports.DEFAULT_PAGE_SIZE = 20;
10
- exports.EVENT_SORT_KEYS = [
11
- "start-date-asc",
12
- "start-date-desc",
13
- "newly-added",
14
- ];
15
- exports.EVENT_SORT_MAP = {
16
- "start-date-asc": 1,
17
- "start-date-desc": 2,
18
- "newly-added": 3,
19
- };
20
- exports.GROUP_SORT_KEYS = [
21
- "most-events",
22
- "most-members",
23
- "newly-added",
24
- ];
25
- exports.GROUP_SORT_MAP = {
26
- "most-events": 1,
27
- "most-members": 2,
28
- "newly-added": 3,
29
- };
30
- exports.USER_SORT_KEYS = [
31
- "most-events",
32
- "most-followers",
33
- "newly-added",
34
- ];
35
- exports.USER_SORT_MAP = {
36
- "most-events": 1,
37
- "most-followers": 2,
38
- "newly-added": 3,
39
- };
40
- function formatAsCompactYmd(date) {
41
- const year = date.getFullYear();
42
- const month = String(date.getMonth() + 1).padStart(2, "0");
43
- const day = String(date.getDate()).padStart(2, "0");
44
- return `${year}${month}${day}`;
45
- }
46
- function formatAsHyphenatedYmd(date) {
47
- const year = date.getFullYear();
48
- const month = String(date.getMonth() + 1).padStart(2, "0");
49
- const day = String(date.getDate()).padStart(2, "0");
50
- return `${year}-${month}-${day}`;
51
- }
52
- function parseDateInput(input, options) {
53
- const normalized = input.trim();
54
- // Remove separators (-, /, .) for parsing
55
- const hyphenFree = normalized.replace(/[-/.]/g, "");
56
- // Check for YYYYMMDD format (8 digits)
57
- if (/^\d{8}$/.test(hyphenFree)) {
58
- const year = Number(hyphenFree.slice(0, 4));
59
- const month = Number(hyphenFree.slice(4, 6)) - 1;
60
- const day = Number(hyphenFree.slice(6, 8));
61
- const candidate = new Date(Date.UTC(year, month, day));
62
- if (!Number.isNaN(candidate.getTime())) {
63
- return options?.style === "hyphenated"
64
- ? formatAsHyphenatedYmd(candidate)
65
- : formatAsCompactYmd(candidate);
66
- }
67
- }
68
- throw new Error(`Invalid date format: ${input}. Expected YYYY-MM-DD or YYYYMMDD format.`);
69
- }
70
- function toYmdArray(value) {
71
- if (!value) {
72
- return undefined;
73
- }
74
- const inputs = Array.isArray(value) ? value : [value];
75
- return inputs.map((item) => parseDateInput(item));
76
- }
77
- function parseHyphenatedDate(input) {
78
- const parsed = parseDateInput(input, { style: "hyphenated" });
79
- if (/^\d{4}-\d{2}-\d{2}$/.test(parsed)) {
80
- return parsed;
81
- }
82
- const digitsOnly = parsed.replace(/[^0-9]/g, "");
83
- if (digitsOnly.length === 8) {
84
- const year = digitsOnly.slice(0, 4);
85
- const month = digitsOnly.slice(4, 6);
86
- const day = digitsOnly.slice(6, 8);
87
- return `${year}-${month}-${day}`;
88
- }
89
- throw new Error(`Could not convert date input to YYYY-MM-DD: ${input}`);
90
- }
91
- function normalizeStringArray(value) {
92
- if (!value) {
93
- return undefined;
94
- }
95
- return Array.isArray(value) ? value : [value];
96
- }
97
- function applyPagination(page, pageSize, options) {
98
- const includePagination = options?.includePagination ?? true;
99
- if (!includePagination) {
100
- return {};
101
- }
102
- const effectivePageSize = pageSize ?? exports.DEFAULT_PAGE_SIZE;
103
- const pagination = {};
104
- if (page) {
105
- pagination.start = 1 + (page - 1) * effectivePageSize;
106
- pagination.count = effectivePageSize;
107
- }
108
- else if (pageSize) {
109
- pagination.count = effectivePageSize;
110
- }
111
- return pagination;
112
- }
113
- //# sourceMappingURL=shared.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":";;;AAoDA,wCAyBC;AAED,gCAMC;AAED,kDAeC;AAED,oDAOC;AAID,0CAqBC;AAxIY,QAAA,iBAAiB,GAAG,EAAE,CAAC;AAEvB,QAAA,eAAe,GAAG;IAC7B,gBAAgB;IAChB,iBAAiB;IACjB,aAAa;CACL,CAAC;AAEE,QAAA,cAAc,GAAoC;IAC7D,gBAAgB,EAAE,CAAC;IACnB,iBAAiB,EAAE,CAAC;IACpB,aAAa,EAAE,CAAC;CACjB,CAAC;AAEW,QAAA,eAAe,GAAG;IAC7B,aAAa;IACb,cAAc;IACd,aAAa;CACL,CAAC;AAEE,QAAA,cAAc,GAAoC;IAC7D,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,CAAC;IACjB,aAAa,EAAE,CAAC;CACjB,CAAC;AAEW,QAAA,cAAc,GAAG;IAC5B,aAAa;IACb,gBAAgB;IAChB,aAAa;CACL,CAAC;AAEE,QAAA,aAAa,GAAmC;IAC3D,aAAa,EAAE,CAAC;IAChB,gBAAgB,EAAE,CAAC;IACnB,aAAa,EAAE,CAAC;CACjB,CAAC;AAEF,SAAS,kBAAkB,CAAC,IAAU;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAU;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;AACnC,CAAC;AAED,SAAgB,cAAc,CAC5B,KAAa,EACb,OAA8C;IAE9C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAEhC,0CAA0C;IAC1C,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEpD,uCAAuC;IACvC,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACvC,OAAO,OAAO,EAAE,KAAK,KAAK,YAAY;gBACpC,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC;gBAClC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,wBAAwB,KAAK,2CAA2C,CACzE,CAAC;AACJ,CAAC;AAED,SAAgB,UAAU,CAAC,KAAyB;IAClD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,mBAAmB,CAAC,KAAa;IAC/C,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IAC9D,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,+CAA+C,KAAK,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,SAAgB,oBAAoB,CAClC,KAAyB;IAEzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAID,SAAgB,eAAe,CAC7B,IAAwB,EACxB,QAA4B,EAC5B,OAAyC;IAEzC,MAAM,iBAAiB,GAAG,OAAO,EAAE,iBAAiB,IAAI,IAAI,CAAC;IAC7D,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,iBAAiB,GAAG,QAAQ,IAAI,yBAAiB,CAAC;IACxD,MAAM,UAAU,GAAqB,EAAE,CAAC;IAExC,IAAI,IAAI,EAAE,CAAC;QACT,UAAU,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC;QACtD,UAAU,CAAC,KAAK,GAAG,iBAAiB,CAAC;IACvC,CAAC;SAAM,IAAI,QAAQ,EAAE,CAAC;QACpB,UAAU,CAAC,KAAK,GAAG,iBAAiB,CAAC;IACvC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -1,51 +0,0 @@
1
- import { ConnpassClient } from "@kajidog/connpass-api-client";
2
- declare const userHandlers: {
3
- search_users(args: unknown, connpassClient: ConnpassClient): Promise<import("@kajidog/connpass-api-client").UsersResponse>;
4
- get_user_groups(args: unknown, connpassClient: ConnpassClient): Promise<import("@kajidog/connpass-api-client").GroupsResponse>;
5
- get_user_attended_events(args: unknown, connpassClient: ConnpassClient): Promise<import("@kajidog/connpass-api-client").EventsResponse>;
6
- get_user_presenter_events(args: unknown, connpassClient: ConnpassClient): Promise<import("@kajidog/connpass-api-client").EventsResponse>;
7
- };
8
- export type UserToolName = keyof typeof userHandlers;
9
- export declare const userTools: {
10
- [x: string]: unknown;
11
- name: string;
12
- inputSchema: {
13
- [x: string]: unknown;
14
- type: "object";
15
- properties?: {
16
- [x: string]: unknown;
17
- } | undefined;
18
- required?: string[] | undefined;
19
- };
20
- title?: string | undefined;
21
- description?: string | undefined;
22
- _meta?: {
23
- [x: string]: unknown;
24
- } | undefined;
25
- icons?: {
26
- [x: string]: unknown;
27
- src: string;
28
- mimeType?: string | undefined;
29
- sizes?: string[] | undefined;
30
- }[] | undefined;
31
- outputSchema?: {
32
- [x: string]: unknown;
33
- type: "object";
34
- properties?: {
35
- [x: string]: unknown;
36
- } | undefined;
37
- required?: string[] | undefined;
38
- } | undefined;
39
- annotations?: {
40
- [x: string]: unknown;
41
- title?: string | undefined;
42
- readOnlyHint?: boolean | undefined;
43
- destructiveHint?: boolean | undefined;
44
- idempotentHint?: boolean | undefined;
45
- openWorldHint?: boolean | undefined;
46
- } | undefined;
47
- }[];
48
- export declare function isUserTool(name: string): name is UserToolName;
49
- export declare function handleUserTool(name: UserToolName, args: unknown, connpassClient: ConnpassClient): Promise<import("@kajidog/connpass-api-client").EventsResponse | import("@kajidog/connpass-api-client").UsersResponse | import("@kajidog/connpass-api-client").GroupsResponse>;
50
- export {};
51
- //# sourceMappingURL=users.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/tools/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AA6N9D,QAAA,MAAM,YAAY;uBACS,OAAO,kBAAkB,cAAc;0BAKpC,OAAO,kBAAkB,cAAc;mCAM3D,OAAO,kBACG,cAAc;oCAUxB,OAAO,kBACG,cAAc;CASjC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,YAAY,CAAC;AAErD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAoB,CAAC;AAE3C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY,CAE7D;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,OAAO,EACb,cAAc,EAAE,cAAc,iLAG/B"}
@@ -1,239 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.userTools = void 0;
4
- exports.isUserTool = isUserTool;
5
- exports.handleUserTool = handleUserTool;
6
- const zod_1 = require("zod");
7
- const shared_js_1 = require("./shared.js");
8
- const UserSearchInputSchema = zod_1.z.object({
9
- nickname: zod_1.z
10
- .string()
11
- .min(1)
12
- .describe("Match users by nickname (substring search)")
13
- .optional(),
14
- userIds: zod_1.z
15
- .array(zod_1.z.number())
16
- .describe("Limit results to these user IDs")
17
- .optional(),
18
- page: zod_1.z.number().int().min(1).describe("1-based page number").optional(),
19
- pageSize: zod_1.z
20
- .number()
21
- .int()
22
- .min(1)
23
- .max(100)
24
- .describe("How many users per page (default 20)")
25
- .optional(),
26
- sort: zod_1.z
27
- .enum(shared_js_1.USER_SORT_KEYS)
28
- .describe("Ranking by activity, followers, or recency")
29
- .optional(),
30
- });
31
- const UserGroupsInputSchema = zod_1.z.object({
32
- userId: zod_1.z
33
- .number()
34
- .int()
35
- .positive()
36
- .describe("Connpass user ID, findable via search_users"),
37
- limit: zod_1.z
38
- .number()
39
- .int()
40
- .min(1)
41
- .max(100)
42
- .describe("How many items to return (default 20)")
43
- .optional(),
44
- page: zod_1.z.number().int().min(1).describe("1-based page number").optional(),
45
- });
46
- const UserRelationshipInputSchema = zod_1.z.object({
47
- userId: zod_1.z
48
- .number()
49
- .int()
50
- .positive()
51
- .describe("Connpass user ID, findable via search_users"),
52
- limit: zod_1.z
53
- .number()
54
- .int()
55
- .min(1)
56
- .max(100)
57
- .describe("How many items to return (default 20)")
58
- .optional(),
59
- page: zod_1.z.number().int().min(1).describe("1-based page number").optional(),
60
- sort: zod_1.z
61
- .enum(shared_js_1.EVENT_SORT_KEYS)
62
- .describe("Sort events by schedule or recency")
63
- .optional(),
64
- });
65
- function buildUserSearchParams(input, options) {
66
- const pagination = (0, shared_js_1.applyPagination)(input.page, input.pageSize, options);
67
- return {
68
- nickname: input.nickname,
69
- userId: input.userIds,
70
- order: input.sort ? shared_js_1.USER_SORT_MAP[input.sort] : undefined,
71
- ...pagination,
72
- };
73
- }
74
- function buildUserRelationshipParams(input) {
75
- const pagination = (0, shared_js_1.applyPagination)(input.page, input.limit, {
76
- includePagination: true,
77
- });
78
- return {
79
- pagination,
80
- order: input.sort ? shared_js_1.EVENT_SORT_MAP[input.sort] : undefined,
81
- };
82
- }
83
- const userToolsInternal = [
84
- {
85
- name: "search_users",
86
- description: "Discover Connpass users",
87
- inputSchema: {
88
- type: "object",
89
- properties: {
90
- nickname: {
91
- type: "string",
92
- description: "Match users whose nickname contains this text",
93
- },
94
- userIds: {
95
- type: "array",
96
- items: { type: "number" },
97
- description: "Only show these specific user IDs",
98
- },
99
- page: {
100
- type: "integer",
101
- minimum: 1,
102
- description: "1-based page number (default 1)",
103
- },
104
- pageSize: {
105
- type: "integer",
106
- minimum: 1,
107
- maximum: 100,
108
- description: "Users per page (default 20)",
109
- },
110
- sort: {
111
- type: "string",
112
- enum: [...shared_js_1.USER_SORT_KEYS],
113
- description: "Rank by event participation, followers, or recency",
114
- },
115
- },
116
- },
117
- },
118
- {
119
- name: "get_user_groups",
120
- description: "List the groups a user belongs to",
121
- inputSchema: {
122
- type: "object",
123
- properties: {
124
- userId: {
125
- type: "integer",
126
- description: "Connpass user ID",
127
- },
128
- limit: {
129
- type: "integer",
130
- minimum: 1,
131
- maximum: 100,
132
- description: "How many groups to return (default 20)",
133
- },
134
- page: {
135
- type: "integer",
136
- minimum: 1,
137
- description: "1-based page number (default 1)",
138
- },
139
- },
140
- required: ["userId"],
141
- },
142
- },
143
- {
144
- name: "get_user_attended_events",
145
- description: "List events that a user has attended",
146
- inputSchema: {
147
- type: "object",
148
- properties: {
149
- userId: {
150
- type: "integer",
151
- description: "Connpass user ID",
152
- },
153
- limit: {
154
- type: "integer",
155
- minimum: 1,
156
- maximum: 100,
157
- description: "How many events to return (default 20)",
158
- },
159
- page: {
160
- type: "integer",
161
- minimum: 1,
162
- description: "1-based page number (default 1)",
163
- },
164
- sort: {
165
- type: "string",
166
- enum: [...shared_js_1.EVENT_SORT_KEYS],
167
- description: "Sort by schedule or recency",
168
- },
169
- },
170
- required: ["userId"],
171
- },
172
- },
173
- {
174
- name: "get_user_presenter_events",
175
- description: "List events where the user presented",
176
- inputSchema: {
177
- type: "object",
178
- properties: {
179
- userId: {
180
- type: "integer",
181
- description: "Connpass user ID",
182
- },
183
- limit: {
184
- type: "integer",
185
- minimum: 1,
186
- maximum: 100,
187
- description: "How many events to return (default 20)",
188
- },
189
- page: {
190
- type: "integer",
191
- minimum: 1,
192
- description: "1-based page number (default 1)",
193
- },
194
- sort: {
195
- type: "string",
196
- enum: [...shared_js_1.EVENT_SORT_KEYS],
197
- description: "Sort by schedule or recency",
198
- },
199
- },
200
- required: ["userId"],
201
- },
202
- },
203
- ];
204
- const userHandlers = {
205
- async search_users(args, connpassClient) {
206
- const params = UserSearchInputSchema.parse(args ?? {});
207
- const searchParams = buildUserSearchParams(params);
208
- return connpassClient.searchUsers(searchParams);
209
- },
210
- async get_user_groups(args, connpassClient) {
211
- const { userId, limit, page } = UserGroupsInputSchema.parse(args ?? {});
212
- const pagination = (0, shared_js_1.applyPagination)(page, limit);
213
- return connpassClient.getUserGroups(userId, pagination);
214
- },
215
- async get_user_attended_events(args, connpassClient) {
216
- const parsed = UserRelationshipInputSchema.parse(args ?? {});
217
- const { pagination, order } = buildUserRelationshipParams(parsed);
218
- return connpassClient.getUserAttendedEvents(parsed.userId, {
219
- ...pagination,
220
- order,
221
- });
222
- },
223
- async get_user_presenter_events(args, connpassClient) {
224
- const parsed = UserRelationshipInputSchema.parse(args ?? {});
225
- const { pagination, order } = buildUserRelationshipParams(parsed);
226
- return connpassClient.getUserPresenterEvents(parsed.userId, {
227
- ...pagination,
228
- order,
229
- });
230
- },
231
- };
232
- exports.userTools = userToolsInternal;
233
- function isUserTool(name) {
234
- return name in userHandlers;
235
- }
236
- async function handleUserTool(name, args, connpassClient) {
237
- return userHandlers[name](args, connpassClient);
238
- }
239
- //# sourceMappingURL=users.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/tools/users.ts"],"names":[],"mappings":";;;AAoQA,gCAEC;AAED,wCAMC;AA5QD,6BAAwB;AAExB,2CAMqB;AAErB,MAAM,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IACrC,QAAQ,EAAE,OAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,4CAA4C,CAAC;SACtD,QAAQ,EAAE;IACb,OAAO,EAAE,OAAC;SACP,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,iCAAiC,CAAC;SAC3C,QAAQ,EAAE;IACb,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;IACxE,QAAQ,EAAE,OAAC;SACR,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,sCAAsC,CAAC;SAChD,QAAQ,EAAE;IACb,IAAI,EAAE,OAAC;SACJ,IAAI,CAAC,0BAAc,CAAC;SACpB,QAAQ,CAAC,4CAA4C,CAAC;SACtD,QAAQ,EAAE;CACd,CAAC,CAAC;AAIH,MAAM,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IACrC,MAAM,EAAE,OAAC;SACN,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,KAAK,EAAE,OAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,uCAAuC,CAAC;SACjD,QAAQ,EAAE;IACb,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;CACzE,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,OAAC;SACN,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,KAAK,EAAE,OAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,uCAAuC,CAAC;SACjD,QAAQ,EAAE;IACb,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;IACxE,IAAI,EAAE,OAAC;SACJ,IAAI,CAAC,2BAAe,CAAC;SACrB,QAAQ,CAAC,oCAAoC,CAAC;SAC9C,QAAQ,EAAE;CACd,CAAC,CAAC;AAIH,SAAS,qBAAqB,CAC5B,KAAsB,EACtB,OAAyC;IAEzC,MAAM,UAAU,GAAG,IAAA,2BAAe,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxE,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,KAAK,CAAC,OAAO;QACrB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QACzD,GAAG,UAAU;KACd,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,KAA4B;IAC/D,MAAM,UAAU,GAAG,IAAA,2BAAe,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE;QAC1D,iBAAiB,EAAE,IAAI;KACxB,CAAC,CAAC;IACH,OAAO;QACL,UAAU;QACV,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,0BAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KAC3D,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAW;IAChC;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,yBAAyB;QACtC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+CAA+C;iBAC7D;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,mCAAmC;iBACjD;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,CAAC;oBACV,WAAW,EAAE,iCAAiC;iBAC/C;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,6BAA6B;iBAC3C;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,GAAG,0BAAc,CAAC;oBACzB,WAAW,EAAE,oDAAoD;iBAClE;aACF;SACF;KACF;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,mCAAmC;QAChD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,kBAAkB;iBAChC;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,wCAAwC;iBACtD;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,CAAC;oBACV,WAAW,EAAE,iCAAiC;iBAC/C;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,sCAAsC;QACnD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,kBAAkB;iBAChC;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,wCAAwC;iBACtD;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,CAAC;oBACV,WAAW,EAAE,iCAAiC;iBAC/C;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,GAAG,2BAAe,CAAC;oBAC1B,WAAW,EAAE,6BAA6B;iBAC3C;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,sCAAsC;QACnD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,kBAAkB;iBAChC;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,GAAG;oBACZ,WAAW,EAAE,wCAAwC;iBACtD;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,CAAC;oBACV,WAAW,EAAE,iCAAiC;iBAC/C;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,GAAG,2BAAe,CAAC;oBAC1B,WAAW,EAAE,6BAA6B;iBAC3C;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;CACF,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,KAAK,CAAC,YAAY,CAAC,IAAa,EAAE,cAA8B;QAC9D,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO,cAAc,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,IAAa,EAAE,cAA8B;QACjE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACxE,MAAM,UAAU,GAAG,IAAA,2BAAe,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,cAAc,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IACD,KAAK,CAAC,wBAAwB,CAC5B,IAAa,EACb,cAA8B;QAE9B,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,cAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE;YACzD,GAAG,UAAU;YACb,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,yBAAyB,CAC7B,IAAa,EACb,cAA8B;QAE9B,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,cAAc,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE;YAC1D,GAAG,UAAU;YACb,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAIW,QAAA,SAAS,GAAG,iBAAiB,CAAC;AAE3C,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,IAAI,YAAY,CAAC;AAC9B,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,IAAkB,EAClB,IAAa,EACb,cAA8B;IAE9B,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAClD,CAAC"}
@@ -1,17 +0,0 @@
1
- import { type IncomingMessage, type ServerResponse } from "node:http";
2
- import type { Server as McpServer } from "@modelcontextprotocol/sdk/server/index.js";
3
- export type Logger = {
4
- info?: (...args: unknown[]) => void;
5
- error?: (...args: unknown[]) => void;
6
- };
7
- export type StartHttpServerOptions = {
8
- createMcpServer: () => McpServer;
9
- port: number;
10
- logger?: Logger;
11
- enableCors?: boolean;
12
- };
13
- export declare function startHttpServer(options: StartHttpServerOptions): Promise<{
14
- readonly httpServer: import("http").Server<typeof IncomingMessage, typeof ServerResponse>;
15
- readonly close: () => Promise<void>;
16
- }>;
17
- //# sourceMappingURL=http.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAEpB,MAAM,WAAW,CAAC;AAGnB,OAAO,KAAK,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAIrF,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACtC,CAAC;AAOF,MAAM,MAAM,sBAAsB,GAAG;IACnC,eAAe,EAAE,MAAM,SAAS,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAcF,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB;;;GAoMpE"}
@@ -1,185 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.startHttpServer = startHttpServer;
4
- const node_crypto_1 = require("node:crypto");
5
- const node_http_1 = require("node:http");
6
- const node_url_1 = require("node:url");
7
- const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
8
- const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
9
- const defaultLogger = {
10
- info: (...args) => console.error(...args),
11
- error: (...args) => console.error(...args),
12
- };
13
- function setCorsHeaders(res) {
14
- res.setHeader("Access-Control-Allow-Origin", "*");
15
- res.setHeader("Access-Control-Allow-Headers", "content-type, mcp-session-id");
16
- res.setHeader("Access-Control-Allow-Methods", "POST, GET, DELETE, OPTIONS");
17
- res.setHeader("Access-Control-Expose-Headers", "mcp-session-id");
18
- }
19
- async function startHttpServer(options) {
20
- const { createMcpServer, port, logger, enableCors = true } = options;
21
- const log = {
22
- ...defaultLogger,
23
- ...(logger ?? {}),
24
- };
25
- const sessions = new Map();
26
- const httpServer = (0, node_http_1.createServer)(async (req, res) => {
27
- if (enableCors) {
28
- setCorsHeaders(res);
29
- }
30
- if (req.method === "OPTIONS") {
31
- res.writeHead(204);
32
- res.end();
33
- return;
34
- }
35
- const requestUrl = req.url
36
- ? new node_url_1.URL(req.url, `http://${req.headers.host ?? "localhost"}`)
37
- : undefined;
38
- const pathname = requestUrl?.pathname ?? "/";
39
- if (req.method === "GET" && pathname === "/healthz") {
40
- res.writeHead(200, { "Content-Type": "application/json" });
41
- res.end(JSON.stringify({
42
- status: "ok",
43
- transport: "http",
44
- }));
45
- return;
46
- }
47
- if (req.method !== "POST" &&
48
- req.method !== "GET" &&
49
- req.method !== "DELETE") {
50
- res.writeHead(405).end("Method Not Allowed");
51
- return;
52
- }
53
- const sessionId = req.headers["mcp-session-id"];
54
- if (req.method === "GET") {
55
- // Handle GET requests for SSE streams
56
- if (pathname === "/healthz") {
57
- res.writeHead(405).end("Method Not Allowed");
58
- return;
59
- }
60
- if (!sessionId || !sessions.has(sessionId)) {
61
- res.writeHead(400).end("Invalid or missing session ID");
62
- return;
63
- }
64
- const session = sessions.get(sessionId);
65
- if (session) {
66
- await session.transport.handleRequest(req, res);
67
- }
68
- return;
69
- }
70
- if (req.method === "DELETE") {
71
- // Handle DELETE requests for session termination
72
- if (!sessionId || !sessions.has(sessionId)) {
73
- res.writeHead(400).end("Invalid or missing session ID");
74
- return;
75
- }
76
- const session = sessions.get(sessionId);
77
- if (session) {
78
- await session.transport.handleRequest(req, res);
79
- }
80
- return;
81
- }
82
- // Handle POST requests
83
- let body = "";
84
- req.on("data", (chunk) => {
85
- body += chunk.toString();
86
- });
87
- req.on("end", async () => {
88
- try {
89
- let parsedBody;
90
- try {
91
- parsedBody = JSON.parse(body);
92
- }
93
- catch {
94
- res.writeHead(400).end("Invalid JSON");
95
- return;
96
- }
97
- let session;
98
- if (sessionId && sessions.has(sessionId)) {
99
- // Reuse existing session
100
- session = sessions.get(sessionId);
101
- }
102
- else if (!sessionId && (0, types_js_1.isInitializeRequest)(parsedBody)) {
103
- // New initialization request
104
- const transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
105
- sessionIdGenerator: () => (0, node_crypto_1.randomUUID)(),
106
- onsessioninitialized: (newSessionId) => {
107
- log.info(`Session initialized with ID: ${newSessionId}`);
108
- sessions.set(newSessionId, session);
109
- },
110
- });
111
- transport.onclose = () => {
112
- const sid = transport.sessionId;
113
- if (sid && sessions.has(sid)) {
114
- log.info(`Transport closed for session ${sid}`);
115
- sessions.delete(sid);
116
- }
117
- };
118
- transport.onerror = (error) => {
119
- log.error("HTTP transport error:", error);
120
- };
121
- const server = createMcpServer();
122
- session = { server, transport };
123
- await server.connect(transport);
124
- await transport.handleRequest(req, res, parsedBody);
125
- return;
126
- }
127
- else {
128
- // Invalid request
129
- res.writeHead(400, { "Content-Type": "application/json" });
130
- res.end(JSON.stringify({
131
- jsonrpc: "2.0",
132
- error: {
133
- code: -32000,
134
- message: "Bad Request: No valid session ID provided",
135
- },
136
- id: null,
137
- }));
138
- return;
139
- }
140
- // Handle request with existing transport
141
- if (session) {
142
- await session.transport.handleRequest(req, res, parsedBody);
143
- }
144
- }
145
- catch (error) {
146
- log.error("Failed to process request:", error);
147
- if (!res.headersSent) {
148
- res.writeHead(500).end("Failed to process request");
149
- }
150
- }
151
- });
152
- });
153
- httpServer.on("clientError", (error, socket) => {
154
- log.error("HTTP client error:", error);
155
- socket.end("HTTP/1.1 400 Bad Request\r\n\r\n");
156
- });
157
- await new Promise((resolve) => {
158
- httpServer.listen(port, () => {
159
- log.info(`Connpass MCP Server listening on http://localhost:${port} (Streamable HTTP transport)`);
160
- resolve();
161
- });
162
- });
163
- return {
164
- httpServer,
165
- close: async () => {
166
- await Promise.all(Array.from(sessions.values(), async ({ server, transport }) => {
167
- await transport.close();
168
- await server.close();
169
- })).catch((error) => {
170
- log.error("Failed to shut down sessions:", error);
171
- });
172
- await new Promise((resolve, reject) => {
173
- httpServer.close((error) => {
174
- if (error) {
175
- reject(error);
176
- }
177
- else {
178
- resolve();
179
- }
180
- });
181
- });
182
- },
183
- };
184
- }
185
- //# sourceMappingURL=http.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":";;AAyCA,0CAoMC;AA7OD,6CAAyC;AACzC,yCAImB;AACnB,uCAA+B;AAG/B,0FAAmG;AACnG,iEAAyE;AAmBzE,MAAM,aAAa,GAAqB;IACtC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACzC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;CAC3C,CAAC;AAEF,SAAS,cAAc,CAAC,GAAmB;IACzC,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;IAClD,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,8BAA8B,CAAC,CAAC;IAC9E,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,4BAA4B,CAAC,CAAC;IAC5E,GAAG,CAAC,SAAS,CAAC,+BAA+B,EAAE,gBAAgB,CAAC,CAAC;AACnE,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,OAA+B;IACnE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAErE,MAAM,GAAG,GAAqB;QAC5B,GAAG,aAAa;QAChB,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;KAClB,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAElD,MAAM,UAAU,GAAG,IAAA,wBAAY,EAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjD,IAAI,UAAU,EAAE,CAAC;YACf,cAAc,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG;YACxB,CAAC,CAAC,IAAI,cAAG,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/D,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,QAAQ,GAAG,UAAU,EAAE,QAAQ,IAAI,GAAG,CAAC;QAE7C,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YACpD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC;gBACb,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,MAAM;aAClB,CAAC,CACH,CAAC;YACF,OAAO;QACT,CAAC;QAED,IACE,GAAG,CAAC,MAAM,KAAK,MAAM;YACrB,GAAG,CAAC,MAAM,KAAK,KAAK;YACpB,GAAG,CAAC,MAAM,KAAK,QAAQ,EACvB,CAAC;YACD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;QAEtE,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACzB,sCAAsC;YACtC,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC5B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5B,iDAAiD;YACjD,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC;YACD,OAAO;QACT,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YACvB,IAAI,CAAC;gBACH,IAAI,UAAU,CAAC;gBACf,IAAI,CAAC;oBACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChC,CAAC;gBAAC,MAAM,CAAC;oBACP,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBACvC,OAAO;gBACT,CAAC;gBAED,IAAI,OAAkC,CAAC;gBAEvC,IAAI,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACzC,yBAAyB;oBACzB,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACpC,CAAC;qBAAM,IAAI,CAAC,SAAS,IAAI,IAAA,8BAAmB,EAAC,UAAU,CAAC,EAAE,CAAC;oBACzD,6BAA6B;oBAC7B,MAAM,SAAS,GAAG,IAAI,iDAA6B,CAAC;wBAClD,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAA,wBAAU,GAAE;wBACtC,oBAAoB,EAAE,CAAC,YAAY,EAAE,EAAE;4BACrC,GAAG,CAAC,IAAI,CAAC,gCAAgC,YAAY,EAAE,CAAC,CAAC;4BACzD,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,OAAQ,CAAC,CAAC;wBACvC,CAAC;qBACF,CAAC,CAAC;oBAEH,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;wBACvB,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC;wBAChC,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;4BAC7B,GAAG,CAAC,IAAI,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;4BAChD,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACvB,CAAC;oBACH,CAAC,CAAC;oBAEF,SAAS,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;wBAC5B,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;oBAC5C,CAAC,CAAC;oBAEF,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;oBACjC,OAAO,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;oBAEhC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;oBACpD,OAAO;gBACT,CAAC;qBAAM,CAAC;oBACN,kBAAkB;oBAClB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC;wBACb,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE;4BACL,IAAI,EAAE,CAAC,KAAK;4BACZ,OAAO,EAAE,2CAA2C;yBACrD;wBACD,EAAE,EAAE,IAAI;qBACT,CAAC,CACH,CAAC;oBACF,OAAO;gBACT,CAAC;gBAED,yCAAyC;gBACzC,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;gBAC/C,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC7C,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YAC3B,GAAG,CAAC,IAAI,CACN,qDAAqD,IAAI,8BAA8B,CACxF,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,UAAU;QACV,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;gBAC5D,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;gBACxB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC,CAAC,CACH,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACzB,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACzB,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,CAAC,KAAK,CAAC,CAAC;oBAChB,CAAC;yBAAM,CAAC;wBACN,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;KACO,CAAC;AACb,CAAC"}
@@ -1,21 +0,0 @@
1
- import { type IncomingMessage, type ServerResponse } from "node:http";
2
- import type { Server as McpServer } from "@modelcontextprotocol/sdk/server/index.js";
3
- export type Logger = {
4
- info?: (...args: unknown[]) => void;
5
- error?: (...args: unknown[]) => void;
6
- };
7
- export type StartSseServerOptions = {
8
- createMcpServer: () => McpServer;
9
- port: number;
10
- ssePath?: string;
11
- messagePath?: string;
12
- logger?: Logger;
13
- enableCors?: boolean;
14
- };
15
- export declare function startSseServer(options: StartSseServerOptions): Promise<{
16
- readonly httpServer: import("http").Server<typeof IncomingMessage, typeof ServerResponse>;
17
- readonly close: () => Promise<void>;
18
- readonly ssePath: string;
19
- readonly messagePath: string;
20
- }>;
21
- //# sourceMappingURL=sse.d.ts.map