@kajidog/connpass-mcp-server 0.1.1 → 0.3.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 (50) hide show
  1. package/README.md +12 -10
  2. package/dist/apps-sdk.d.ts.map +1 -1
  3. package/dist/apps-sdk.js +26 -10
  4. package/dist/apps-sdk.js.map +1 -1
  5. package/dist/config.d.ts +2 -0
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +22 -0
  8. package/dist/config.js.map +1 -1
  9. package/dist/index.js +16 -5
  10. package/dist/index.js.map +1 -1
  11. package/dist/tools/events.d.ts +11 -19
  12. package/dist/tools/events.d.ts.map +1 -1
  13. package/dist/tools/events.js +95 -72
  14. package/dist/tools/events.js.map +1 -1
  15. package/dist/tools/formatting.d.ts.map +1 -1
  16. package/dist/tools/formatting.js +15 -4
  17. package/dist/tools/formatting.js.map +1 -1
  18. package/dist/tools/groups.d.ts +2 -2
  19. package/dist/tools/groups.d.ts.map +1 -1
  20. package/dist/tools/groups.js +2 -11
  21. package/dist/tools/groups.js.map +1 -1
  22. package/dist/tools/index.d.ts +6 -10
  23. package/dist/tools/index.d.ts.map +1 -1
  24. package/dist/tools/index.js.map +1 -1
  25. package/dist/tools/shared.d.ts.map +1 -1
  26. package/dist/tools/shared.js +4 -27
  27. package/dist/tools/shared.js.map +1 -1
  28. package/dist/tools/users.d.ts +2 -2
  29. package/dist/tools/users.d.ts.map +1 -1
  30. package/dist/tools/users.js +6 -19
  31. package/dist/tools/users.js.map +1 -1
  32. package/dist/transports/http.d.ts.map +1 -1
  33. package/dist/transports/http.js +21 -2
  34. package/dist/transports/http.js.map +1 -1
  35. package/dist/transports/sse.d.ts.map +1 -1
  36. package/dist/transports/sse.js +8 -0
  37. package/dist/transports/sse.js.map +1 -1
  38. package/dist/widgets/connpass-events.d.ts +12 -0
  39. package/dist/widgets/connpass-events.d.ts.map +1 -1
  40. package/dist/widgets/connpass-events.js +11 -1
  41. package/dist/widgets/connpass-events.js.map +1 -1
  42. package/dist/widgets/connpass-schedule.d.ts +41 -0
  43. package/dist/widgets/connpass-schedule.d.ts.map +1 -0
  44. package/dist/widgets/connpass-schedule.js +68 -0
  45. package/dist/widgets/connpass-schedule.js.map +1 -0
  46. package/dist/widgets/index.d.ts.map +1 -1
  47. package/dist/widgets/index.js +11 -3
  48. package/dist/widgets/index.js.map +1 -1
  49. package/package.json +12 -9
  50. package/dist/widgets/connpass-events.html +0 -2269
package/README.md CHANGED
@@ -60,7 +60,7 @@ connpass-mcp-server
60
60
 
61
61
  > ローカル開発時などで API キーが未設定の場合、`dummy-key` が自動で使用されます。
62
62
 
63
- 必要に応じて、デフォルトで参照するユーザー ID を `CONNPASS_DEFAULT_USER_ID` に設定できます。`get_my_upcoming_events` ツールで `userId` を省略した場合に利用されます。
63
+ 必要に応じて、デフォルトで参照するユーザー ID を `CONNPASS_DEFAULT_USER_ID` に設定できます。`search_schedule` ツールで `userId` を省略した場合に利用されます。
64
64
 
65
65
  ## トランスポート方式
66
66
 
@@ -119,8 +119,10 @@ Examples:
119
119
  | 変数名 | 説明 | 既定値 |
120
120
  | --- | --- | --- |
121
121
  | `CONNPASS_API_KEY` | Connpass API Key。未設定の場合は `dummy-key` が使われます(本番利用不可)。 | `dummy-key` |
122
- | `CONNPASS_DEFAULT_USER_ID` | `get_my_upcoming_events` で `userId` を省略したときに使うユーザー ID。 | 未設定 |
123
- | `CONNPASS_INCLUDE_PRESENTATIONS_DEFAULT` | `get_my_upcoming_events` の `includePresentations` の既定値。`true/false` や `1/0` などで指定。 | 未設定(false と同等) |
122
+ | `CONNPASS_DEFAULT_USER_ID` | `search_schedule` で `userId` を省略したときに使うユーザー ID。 | 未設定 |
123
+ | `CONNPASS_INCLUDE_PRESENTATIONS_DEFAULT` | `search_schedule` の `includePresentations` の既定値。`true/false` や `1/0` などで指定。 | 未設定(false と同等) |
124
+ | `CONNPASS_RATE_LIMIT_ENABLED` | API クライアントのレート制限キューを有効/無効化します。`false` にすると 1 秒間隔の待機をスキップします。 | `true` |
125
+ | `CONNPASS_RATE_LIMIT_DELAY_MS` | レート制限キューが適用する待機時間(ミリ秒)。Connpass 既定は 1000 ミリ秒です。 | `1000` |
124
126
  | `CONNPASS_PRESENTATION_CACHE_ENABLED` | プレゼンテーション取得結果をディスクキャッシュするかどうか。 | `true` |
125
127
  | `CONNPASS_PRESENTATION_CACHE_TTL_MS` | キャッシュ保持期間(ミリ秒)。 | `3600000` |
126
128
  | `CONNPASS_PRESENTATION_CACHE_PATH` | キャッシュファイルの保存先パス。 | `./data/presentation-cache.json` |
@@ -140,7 +142,7 @@ Examples:
140
142
  | `get_user_groups` | 指定ユーザーが所属するグループ一覧 | `userId`, `limit`, `page` |
141
143
  | `get_user_attended_events` | 指定ユーザーが参加したイベント一覧 | `userId`, `limit`, `page`, `sort` |
142
144
  | `get_user_presenter_events` | 指定ユーザーが登壇したイベント一覧 | `userId`, `limit`, `page`, `sort` |
143
- | `get_my_upcoming_events` | 今日と指定期間内のイベントを取得(自分の ID を自動使用可能) | `userId`, `nickname`, `daysAhead`, `maxEvents`, `includePresentations` |
145
+ | `search_schedule` | ユーザーのスケジュール(今日と今後のイベント)を検索 | `userId`, `nickname`, `daysAhead`, `maxEvents`, `includePresentations` |
144
146
 
145
147
  ## シンプルな使い方
146
148
 
@@ -151,15 +153,15 @@ Examples:
151
153
  "name": "search_events",
152
154
  "arguments": {
153
155
  "query": "React 勉強会",
154
- "from": "next Monday",
155
- "to": "next Friday",
156
+ "from": "2025-11-01",
157
+ "to": "2025-11-07",
156
158
  "prefectures": "東京都",
157
159
  "sort": "start-date-asc"
158
160
  }
159
161
  }
160
162
  ```
161
163
 
162
- - 日付は `"2024-05-01"` のような ISO 形式に加えて、`today` / `tomorrow` / `next Monday` などの自然言語も指定できます。
164
+ - 日付は `"2025-11-01"` のような YYYY-MM-DD 形式、または `"20251101"` のような YYYYMMDD 形式で指定します。
163
165
  - `prefectures` や `on` は単一文字列でも配列でも指定可能です。
164
166
 
165
167
  ### グループ検索(例)
@@ -188,11 +190,11 @@ Examples:
188
190
  }
189
191
  ```
190
192
 
191
- ### 自分の今日・直近イベント取得(例)
193
+ ### スケジュール検索(例)
192
194
 
193
195
  ```json
194
196
  {
195
- "name": "get_my_upcoming_events",
197
+ "name": "search_schedule",
196
198
  "arguments": {
197
199
  "nickname": "kajidog",
198
200
  "daysAhead": 10,
@@ -212,7 +214,7 @@ Examples:
212
214
 
213
215
  ### Apps SDK 向けウィジェット
214
216
 
215
- - `search_events` または `get_my_upcoming_events` の実行結果には、Inline 表示のカルーセルとフルスクリーン詳細を切り替えられるウィジェットを付与できます。
217
+ - `search_events` の実行結果にはカルーセルウィジェット、`search_schedule` の実行結果にはスケジュールウィジェットが付与されます。どちらもフルスクリーン詳細に切り替え可能です。
216
218
  - `CONNPASS_ENABLE_APPS_SDK_OUTPUT=true` を指定すると、`openai/outputTemplate` メタデータが `ui://connpass/widgets/events-carousel` を指し、Apps SDK 側で iframe がレンダリングされます。
217
219
  - ウィジェットの HTML は `packages/mcp-server/src/widgets/connpass-events.html` に置いており、`pnpm --filter @kajidog/connpass-mcp-server build` 実行時に `dist/widgets/` へコピーされます。
218
220
  - カルーセルでは参加者数バッジや Connpass への外部リンクを表示。`詳細を見る` ボタンを押すと `requestDisplayMode` API で全画面表示に切り替わり、イベント概要・発表セッション・外部リンクを閲覧できます。
@@ -1 +1 @@
1
- {"version":3,"file":"apps-sdk.d.ts","sourceRoot":"","sources":["../src/apps-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAezE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAgCD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,cAAc,CA2CvF"}
1
+ {"version":3,"file":"apps-sdk.d.ts","sourceRoot":"","sources":["../src/apps-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAoBzE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAmCD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,0BAA0B,GAClC,cAAc,CAyDhB"}
package/dist/apps-sdk.js CHANGED
@@ -5,13 +5,17 @@ const index_js_1 = require("./widgets/index.js");
5
5
  const TOOL_KIND_MAP = new Map([
6
6
  ["search_events", "events"],
7
7
  ["get_event_presentations", "event_presentations"],
8
- ["get_my_upcoming_events", "events"],
8
+ ["search_schedule", "schedule"],
9
9
  ["search_groups", "groups"],
10
10
  ["search_users", "users"],
11
11
  ["get_user_groups", "groups"],
12
12
  ["get_user_attended_events", "events"],
13
13
  ["get_user_presenter_events", "events"],
14
14
  ]);
15
+ const TOOL_WIDGET_CATEGORY_MAP = new Map([
16
+ ["search_events", "carousel"],
17
+ ["search_schedule", "list"],
18
+ ]);
15
19
  function toDisplayText(result) {
16
20
  if (typeof result === "string") {
17
21
  return result;
@@ -40,7 +44,9 @@ function buildStructuredContent(toolName, result) {
40
44
  }
41
45
  function buildCallToolResult(options) {
42
46
  const { toolName, result, includeAppsSdkPayload } = options;
43
- const templateUri = includeAppsSdkPayload ? (0, index_js_1.getWidgetTemplateForTool)(toolName) : undefined;
47
+ const templateUri = includeAppsSdkPayload
48
+ ? (0, index_js_1.getWidgetTemplateForTool)(toolName)
49
+ : undefined;
44
50
  const contentItem = {
45
51
  type: "text",
46
52
  text: toDisplayText(result),
@@ -50,21 +56,31 @@ function buildCallToolResult(options) {
50
56
  console.log(`[apps-sdk] tool=${toolName} includeAppsSdkPayload=true template=${templateUri ?? "<missing>"}`);
51
57
  base.structuredContent = buildStructuredContent(toolName, result);
52
58
  if (templateUri) {
53
- // 重要:content アイテム側にも _meta を付ける
54
- contentItem._meta = {
55
- ...(contentItem._meta ?? {}),
59
+ const widgetCategory = TOOL_WIDGET_CATEGORY_MAP.get(toolName) ?? "carousel";
60
+ const widgetMeta = {
56
61
  "openai/outputTemplate": templateUri,
57
62
  "openai/resultCanProduceWidget": true,
58
63
  "openai/widgetAccessible": true,
59
- "openai/widgetCategory": "carousel",
64
+ "openai/widgetCategory": widgetCategory,
65
+ "openai/widgetDomain": "connpass",
66
+ "openai/widgetCSP": {
67
+ connect_domains: ["https://connpass.com"],
68
+ resource_domains: [
69
+ "https://connpass.com",
70
+ "https://media.connpass.com",
71
+ ],
72
+ redirect_domains: ["https://connpass.com"],
73
+ },
74
+ };
75
+ // ★ 重要:content アイテム側にも _meta を付ける
76
+ contentItem._meta = {
77
+ ...(contentItem._meta ?? {}),
78
+ ...widgetMeta,
60
79
  };
61
80
  // 互換性のため、従来通り top-level にも残しておく(不要なら削除OK)
62
81
  base._meta = {
63
82
  ...(base._meta ?? {}),
64
- "openai/outputTemplate": templateUri,
65
- "openai/resultCanProduceWidget": true,
66
- "openai/widgetAccessible": true,
67
- "openai/widgetCategory": "carousel",
83
+ ...widgetMeta,
68
84
  };
69
85
  console.log("[apps-sdk] widget meta", contentItem._meta);
70
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"apps-sdk.js","sourceRoot":"","sources":["../src/apps-sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apps-sdk.js","sourceRoot":"","sources":["../src/apps-sdk.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export declare function getDefaultUserId(): number | undefined;
2
2
  export declare function getDefaultIncludePresentations(): boolean | undefined;
3
3
  export declare function isAppsSdkOutputEnabled(): boolean;
4
+ export declare function getRateLimitEnabled(): boolean | undefined;
5
+ export declare function getRateLimitDelayMs(): number | undefined;
4
6
  export declare function getMcpBasePath(): string;
5
7
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAuDA,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAErD;AAED,wBAAgB,8BAA8B,IAAI,OAAO,GAAG,SAAS,CAEpE;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED,wBAAgB,cAAc,IAAI,MAAM,CAYvC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAkFA,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAErD;AAED,wBAAgB,8BAA8B,IAAI,OAAO,GAAG,SAAS,CAEpE;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED,wBAAgB,mBAAmB,IAAI,OAAO,GAAG,SAAS,CAEzD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAExD;AAED,wBAAgB,cAAc,IAAI,MAAM,CAYvC"}
package/dist/config.js CHANGED
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getDefaultUserId = getDefaultUserId;
4
4
  exports.getDefaultIncludePresentations = getDefaultIncludePresentations;
5
5
  exports.isAppsSdkOutputEnabled = isAppsSdkOutputEnabled;
6
+ exports.getRateLimitEnabled = getRateLimitEnabled;
7
+ exports.getRateLimitDelayMs = getRateLimitDelayMs;
6
8
  exports.getMcpBasePath = getMcpBasePath;
7
9
  const BOOLEAN_TRUE_VALUES = new Set(["1", "true", "yes", "y", "on"]);
8
10
  const BOOLEAN_FALSE_VALUES = new Set(["0", "false", "no", "n", "off"]);
@@ -23,6 +25,8 @@ function parseOptionalBooleanEnv(raw, envName) {
23
25
  const RAW_DEFAULT_USER_ID = process.env.CONNPASS_DEFAULT_USER_ID;
24
26
  const RAW_INCLUDE_PRESENTATIONS_DEFAULT = process.env.CONNPASS_INCLUDE_PRESENTATIONS_DEFAULT;
25
27
  const RAW_ENABLE_APPS_SDK_OUTPUT = process.env.CONNPASS_ENABLE_APPS_SDK_OUTPUT;
28
+ const RAW_RATE_LIMIT_ENABLED = process.env.CONNPASS_RATE_LIMIT_ENABLED;
29
+ const RAW_RATE_LIMIT_DELAY_MS = process.env.CONNPASS_RATE_LIMIT_DELAY_MS;
26
30
  const RAW_MCP_BASE_PATH = process.env.MCP_BASE_PATH;
27
31
  const parsedDefaultUserId = (() => {
28
32
  if (!RAW_DEFAULT_USER_ID) {
@@ -37,6 +41,18 @@ const parsedDefaultUserId = (() => {
37
41
  })();
38
42
  const parsedIncludePresentationsDefault = parseOptionalBooleanEnv(RAW_INCLUDE_PRESENTATIONS_DEFAULT, "CONNPASS_INCLUDE_PRESENTATIONS_DEFAULT");
39
43
  const parsedEnableAppsSdkOutput = parseOptionalBooleanEnv(RAW_ENABLE_APPS_SDK_OUTPUT, "CONNPASS_ENABLE_APPS_SDK_OUTPUT");
44
+ const parsedRateLimitEnabled = parseOptionalBooleanEnv(RAW_RATE_LIMIT_ENABLED, "CONNPASS_RATE_LIMIT_ENABLED");
45
+ const parsedRateLimitDelayMs = (() => {
46
+ if (!RAW_RATE_LIMIT_DELAY_MS) {
47
+ return undefined;
48
+ }
49
+ const numeric = Number(RAW_RATE_LIMIT_DELAY_MS);
50
+ if (!Number.isFinite(numeric) || numeric < 0) {
51
+ console.warn("[mcp-server] CONNPASS_RATE_LIMIT_DELAY_MS is set but not a non-negative number. It will be ignored.");
52
+ return undefined;
53
+ }
54
+ return Math.trunc(numeric);
55
+ })();
40
56
  function getDefaultUserId() {
41
57
  return parsedDefaultUserId;
42
58
  }
@@ -46,6 +62,12 @@ function getDefaultIncludePresentations() {
46
62
  function isAppsSdkOutputEnabled() {
47
63
  return parsedEnableAppsSdkOutput ?? false;
48
64
  }
65
+ function getRateLimitEnabled() {
66
+ return parsedRateLimitEnabled;
67
+ }
68
+ function getRateLimitDelayMs() {
69
+ return parsedRateLimitDelayMs;
70
+ }
49
71
  function getMcpBasePath() {
50
72
  const raw = RAW_MCP_BASE_PATH?.trim();
51
73
  if (!raw) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;AAuDA,4CAEC;AAED,wEAEC;AAED,wDAEC;AAED,wCAYC;AA/ED,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACrE,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAEvE,SAAS,uBAAuB,CAAC,GAAuB,EAAE,OAAe;IACvE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE5C,IAAI,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,IAAI,CACV,gBAAgB,OAAO,6DAA6D,CACrF,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;AACjE,MAAM,iCAAiC,GAAG,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC;AAC7F,MAAM,0BAA0B,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;AAC/E,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AAEpD,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE;IAChC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC9C,OAAO,CAAC,IAAI,CACV,6FAA6F,CAC9F,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC,EAAE,CAAC;AAEL,MAAM,iCAAiC,GAAG,uBAAuB,CAC/D,iCAAiC,EACjC,wCAAwC,CACzC,CAAC;AAEF,MAAM,yBAAyB,GAAG,uBAAuB,CACvD,0BAA0B,EAC1B,iCAAiC,CAClC,CAAC;AAEF,SAAgB,gBAAgB;IAC9B,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,SAAgB,8BAA8B;IAC5C,OAAO,iCAAiC,CAAC;AAC3C,CAAC;AAED,SAAgB,sBAAsB;IACpC,OAAO,yBAAyB,IAAI,KAAK,CAAC;AAC5C,CAAC;AAED,SAAgB,cAAc;IAC5B,MAAM,GAAG,GAAG,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACtC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,kBAAkB,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IACjE,OAAO,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,17 +1,28 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
+ const connpass_api_client_1 = require("@kajidog/connpass-api-client");
4
5
  const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
5
6
  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
7
  const apps_sdk_js_1 = require("./apps-sdk.js");
11
8
  const config_js_1 = require("./config.js");
9
+ const index_js_2 = require("./tools/index.js");
10
+ const http_js_1 = require("./transports/http.js");
11
+ const sse_js_1 = require("./transports/sse.js");
12
12
  const index_js_3 = require("./widgets/index.js");
13
+ const rateLimitEnabled = (0, config_js_1.getRateLimitEnabled)();
14
+ const rateLimitDelay = (0, config_js_1.getRateLimitDelayMs)();
15
+ const envApiKey = process.env.CONNPASS_API_KEY;
16
+ if (!envApiKey) {
17
+ console.warn("[mcp-server] CONNPASS_API_KEY not set. Using dummy-key (Connpass API will reject most requests)");
18
+ }
19
+ else {
20
+ console.log(`[mcp-server] CONNPASS_API_KEY detected (length: ${envApiKey.length}).`);
21
+ }
13
22
  const connpassClient = new connpass_api_client_1.ConnpassClient({
14
- apiKey: process.env.CONNPASS_API_KEY || "dummy-key",
23
+ apiKey: envApiKey || "dummy-key",
24
+ ...(rateLimitEnabled !== undefined ? { rateLimitEnabled } : {}),
25
+ ...(rateLimitDelay !== undefined ? { rateLimitDelay } : {}),
15
26
  });
16
27
  function createConnpassServer() {
17
28
  const appsSdkOutputEnabled = (0, config_js_1.isAppsSdkOutputEnabled)();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,21 +2,17 @@ import { ConnpassClient } from "@kajidog/connpass-api-client";
2
2
  declare const eventHandlers: {
3
3
  search_events(args: unknown, connpassClient: ConnpassClient): Promise<import("./formatting.js").FormattedEventsResponse>;
4
4
  get_event_presentations(args: unknown, connpassClient: ConnpassClient): Promise<import("./formatting.js").FormattedPresentationsResponse>;
5
- get_my_upcoming_events(args: unknown, connpassClient: ConnpassClient): Promise<{
5
+ search_schedule(args: unknown, connpassClient: ConnpassClient): Promise<{
6
6
  userId: number;
7
- today: {
7
+ sections: {
8
8
  date: string;
9
9
  events: import("./formatting.js").FormattedEvent[];
10
- };
11
- upcoming: {
12
- rangeEnd: string;
13
- events: import("./formatting.js").FormattedEvent[];
14
- };
10
+ }[];
15
11
  metadata: {
12
+ fromDate: string;
13
+ toDate: string;
16
14
  inspected: number;
17
15
  limit: number;
18
- daysAhead: number;
19
- includePresentations: boolean;
20
16
  };
21
17
  }>;
22
18
  };
@@ -27,10 +23,10 @@ export declare const eventTools: {
27
23
  inputSchema: {
28
24
  [x: string]: unknown;
29
25
  type: "object";
30
- required?: string[] | undefined;
31
26
  properties?: {
32
27
  [x: string]: unknown;
33
28
  } | undefined;
29
+ required?: string[] | undefined;
34
30
  };
35
31
  title?: string | undefined;
36
32
  description?: string | undefined;
@@ -46,10 +42,10 @@ export declare const eventTools: {
46
42
  outputSchema?: {
47
43
  [x: string]: unknown;
48
44
  type: "object";
49
- required?: string[] | undefined;
50
45
  properties?: {
51
46
  [x: string]: unknown;
52
47
  } | undefined;
48
+ required?: string[] | undefined;
53
49
  } | undefined;
54
50
  annotations?: {
55
51
  [x: string]: unknown;
@@ -63,19 +59,15 @@ export declare const eventTools: {
63
59
  export declare function isEventTool(name: string): name is EventToolName;
64
60
  export declare function handleEventTool(name: EventToolName, args: unknown, connpassClient: ConnpassClient): Promise<import("./formatting.js").FormattedEventsResponse | import("./formatting.js").FormattedPresentationsResponse | {
65
61
  userId: number;
66
- today: {
62
+ sections: {
67
63
  date: string;
68
64
  events: import("./formatting.js").FormattedEvent[];
69
- };
70
- upcoming: {
71
- rangeEnd: string;
72
- events: import("./formatting.js").FormattedEvent[];
73
- };
65
+ }[];
74
66
  metadata: {
67
+ fromDate: string;
68
+ toDate: string;
75
69
  inspected: number;
76
70
  limit: number;
77
- daysAhead: number;
78
- includePresentations: boolean;
79
71
  };
80
72
  }>;
81
73
  export {};
@@ -1 +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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAkY9D,QAAA,MAAM,aAAa;wBACS,OAAO,kBAAkB,cAAc;kCAM7B,OAAO,kBAAkB,cAAc;0BAK/C,OAAO,kBAAkB,cAAc;;;;;;;;;;;;;CAkGpE,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"}