@access-mcp/events 0.2.0 → 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.
package/README.md CHANGED
@@ -6,10 +6,7 @@ A Model Context Protocol server providing access to ACCESS-CI events data includ
6
6
 
7
7
  ### 🔧 Tools
8
8
 
9
- - **`get_events`** - Get ACCESS-CI events with comprehensive filtering
10
- - **`get_upcoming_events`** - Get upcoming events (today onward)
11
- - **`search_events`** - **Enhanced!** Search events using API's native full-text search across all content
12
- - **`get_events_by_tag`** - Get events filtered by specific tags
9
+ - **`search_events`** - Comprehensive event search and filtering with native full-text search, date filters, topic/tag filtering, and more
13
10
 
14
11
  ### 📊 Resources
15
12
 
@@ -41,32 +38,24 @@ Add to your Claude Desktop configuration:
41
38
  }
42
39
  ```
43
40
 
44
- ### Example Queries
41
+ ## Usage Examples
45
42
 
46
- **Get upcoming events:**
43
+ ### **Search & Discovery**
47
44
 
48
45
  ```
49
- What events are coming up in the next week?
46
+ "Upcoming events next week"
47
+ "Python workshops"
48
+ "Machine learning events"
49
+ "Office hours this week"
50
50
  ```
51
51
 
52
- **Search for specific topics (now much more powerful!):**
52
+ ### **Filtering**
53
53
 
54
54
  ```
55
- Find upcoming Python workshops
56
- Show me machine learning events
57
- Search for "office hours" this week
58
- ```
59
-
60
- **Filter by skill level:**
61
-
62
- ```
63
- Show me beginner-level events this month
64
- ```
65
-
66
- **Get events by tags:**
67
-
68
- ```
69
- Find all GPU computing events
55
+ "Beginner-level events this month"
56
+ "GPU computing events"
57
+ "Webinars in December"
58
+ "Advanced training sessions"
70
59
  ```
71
60
 
72
61
  ## Key Improvements
@@ -152,60 +141,94 @@ The server adds these computed fields:
152
141
  - `duration_hours` - Calculated event duration
153
142
  - `starts_in_hours` - Hours until event starts
154
143
 
155
- ## Examples
156
-
157
- ### Get Events with Multiple Filters
158
-
159
- ```typescript
160
- // Get Python workshops for beginners in the next month
161
- {
162
- "tool": "get_events",
163
- "arguments": {
164
- "beginning_date_relative": "today",
165
- "end_date_relative": "+1month",
166
- "event_type": "workshop",
167
- "skill_level": "beginner",
168
- "event_tags": "python"
169
- }
170
- }
144
+ ## Tool Reference
145
+
146
+ ### search_events
147
+
148
+ Comprehensive event search and filtering with native full-text search, date filters, and topic/tag filtering.
149
+
150
+ **Parameters:**
151
+ - `query` (string, optional): Search titles, descriptions, speakers, and tags
152
+ - `type` (string, optional): Filter by event type (workshop, webinar, training)
153
+ - `tags` (string, optional): Filter by tags (python, gpu, hpc, ml)
154
+ - `date` (string, optional): Filter by time period. Valid values: `today`, `upcoming`, `past`, `this_week`, `this_month`
155
+ - `skill` (string, optional): Filter by skill level. Valid values: `beginner`, `intermediate`, `advanced`
156
+ - `limit` (number, optional): Maximum results (default: 50, automatically rounded to API page sizes: 25, 50, 75, or 100)
157
+
158
+ ## Usage Examples
159
+
160
+ ### Full-Text Search
161
+
162
+ ```javascript
163
+ // Upcoming Python events
164
+ search_events({
165
+ query: "python",
166
+ date: "upcoming",
167
+ limit: 10
168
+ })
169
+
170
+ // Machine learning workshops this month
171
+ search_events({
172
+ query: "machine learning",
173
+ date: "this_month",
174
+ type: "workshop",
175
+ limit: 25
176
+ })
177
+
178
+ // Past office hours
179
+ search_events({
180
+ query: "office hours",
181
+ date: "past",
182
+ limit: 30
183
+ })
171
184
  ```
172
185
 
173
- ### Search Events (Enhanced API Search)
174
-
175
- ```typescript
176
- // Search for GPU-related events using native API search
177
- {
178
- "tool": "search_events",
179
- "arguments": {
180
- "query": "GPU computing",
181
- "beginning_date_relative": "today",
182
- "timezone": "America/New_York",
183
- "limit": 10
184
- }
185
- }
186
-
187
- // Multi-word search examples
188
- {
189
- "tool": "search_events",
190
- "arguments": {
191
- "query": "machine learning",
192
- "beginning_date_relative": "-1month"
193
- }
194
- }
186
+ ### Filter by Tags and Type
187
+
188
+ ```javascript
189
+ // All upcoming GPU events
190
+ search_events({
191
+ tags: "gpu",
192
+ date: "upcoming",
193
+ limit: 20
194
+ })
195
+
196
+ // Beginner training sessions
197
+ search_events({
198
+ type: "training",
199
+ skill: "beginner",
200
+ date: "upcoming",
201
+ limit: 15
202
+ })
203
+
204
+ // Python workshops for beginners
205
+ search_events({
206
+ date: "this_month",
207
+ type: "workshop",
208
+ skill: "beginner",
209
+ tags: "python",
210
+ limit: 25
211
+ })
195
212
  ```
196
213
 
197
- ### Get Events by Tag
198
-
199
- ```typescript
200
- // Get all machine learning events this month
201
- {
202
- "tool": "get_events_by_tag",
203
- "arguments": {
204
- "tag": "machine-learning",
205
- "time_range": "this_month",
206
- "limit": 20
207
- }
208
- }
214
+ ### Timezone-Aware Searches
215
+
216
+ ```javascript
217
+ // Get events in New York timezone
218
+ search_events({
219
+ beginning_date_relative: "today",
220
+ end_date_relative: "+1week",
221
+ timezone: "America/New_York",
222
+ limit: 30
223
+ })
224
+
225
+ // Get events in Europe/London timezone
226
+ search_events({
227
+ query: "workshop",
228
+ beginning_date_relative: "today",
229
+ timezone: "Europe/London",
230
+ limit: 25
231
+ })
209
232
  ```
210
233
 
211
234
  ## Development
@@ -223,14 +246,15 @@ npm test
223
246
 
224
247
  ## Base URL
225
248
 
226
- The server connects to: `https://support.access-ci.org/api/2.1/events` (v2.1 with UTC timestamps and enhanced search)
249
+ The server connects to: `https://support.access-ci.org/api/2.2/events`
227
250
 
228
251
  ## Technical Notes
229
252
 
230
- ### API Version 2.1 Features
253
+ ### API Version 2.2 Features
231
254
  - **UTC timestamps**: All dates returned in UTC with Z suffix (e.g., `2024-08-30T13:00:00Z`)
232
255
  - **Native search**: Uses `search_api_fulltext` parameter for comprehensive searching
233
256
  - **Timezone support**: Relative dates calculated using specified timezone
257
+ - **Pagination**: API accepts specific page sizes (25, 50, 75, or 100). Requested limits are automatically rounded to nearest valid size.
234
258
  - **Enhanced metadata**: Responses include API version and timezone info
235
259
 
236
260
  ### General
package/dist/index.js CHANGED
@@ -2,7 +2,8 @@
2
2
  import { EventsServer } from "./server.js";
3
3
  async function main() {
4
4
  const server = new EventsServer();
5
- await server.start();
5
+ const port = process.env.PORT ? parseInt(process.env.PORT, 10) : undefined;
6
+ await server.start(port ? { httpPort: port } : undefined);
6
7
  }
7
8
  if (import.meta.url === `file://${process.argv[1]}`) {
8
9
  main().catch((error) => {
package/dist/server.d.ts CHANGED
@@ -4,100 +4,7 @@ export declare class EventsServer extends BaseAccessServer {
4
4
  private _eventsHttpClient?;
5
5
  constructor();
6
6
  protected get httpClient(): AxiosInstance;
7
- protected getTools(): ({
8
- name: string;
9
- description: string;
10
- inputSchema: {
11
- type: string;
12
- properties: {
13
- beginning_date_relative: {
14
- type: string;
15
- description: string;
16
- enum: string[];
17
- default?: undefined;
18
- };
19
- end_date_relative: {
20
- type: string;
21
- description: string;
22
- enum: string[];
23
- };
24
- beginning_date: {
25
- type: string;
26
- description: string;
27
- };
28
- end_date: {
29
- type: string;
30
- description: string;
31
- };
32
- timezone: {
33
- type: string;
34
- description: string;
35
- default: string;
36
- };
37
- event_type: {
38
- type: string;
39
- description: string;
40
- };
41
- event_affiliation: {
42
- type: string;
43
- description: string;
44
- };
45
- skill_level: {
46
- type: string;
47
- description: string;
48
- enum: string[];
49
- };
50
- event_tags: {
51
- type: string;
52
- description: string;
53
- };
54
- limit: {
55
- type: string;
56
- description: string;
57
- minimum: number;
58
- maximum: number;
59
- };
60
- query?: undefined;
61
- tag?: undefined;
62
- time_range?: undefined;
63
- };
64
- required: never[];
65
- };
66
- } | {
67
- name: string;
68
- description: string;
69
- inputSchema: {
70
- type: string;
71
- properties: {
72
- limit: {
73
- type: string;
74
- description: string;
75
- minimum: number;
76
- maximum: number;
77
- };
78
- event_type: {
79
- type: string;
80
- description: string;
81
- };
82
- timezone: {
83
- type: string;
84
- description: string;
85
- default: string;
86
- };
87
- beginning_date_relative?: undefined;
88
- end_date_relative?: undefined;
89
- beginning_date?: undefined;
90
- end_date?: undefined;
91
- event_affiliation?: undefined;
92
- skill_level?: undefined;
93
- event_tags?: undefined;
94
- query?: undefined;
95
- tag?: undefined;
96
- time_range?: undefined;
97
- };
98
- required: never[];
99
- };
100
- } | {
7
+ protected getTools(): {
101
8
  name: string;
102
9
  description: string;
103
10
  inputSchema: {
@@ -107,75 +14,32 @@ export declare class EventsServer extends BaseAccessServer {
107
14
  type: string;
108
15
  description: string;
109
16
  };
110
- beginning_date_relative: {
111
- type: string;
112
- description: string;
113
- default: string;
114
- enum?: undefined;
115
- };
116
- timezone: {
117
- type: string;
118
- description: string;
119
- default: string;
120
- };
121
- limit: {
17
+ type: {
122
18
  type: string;
123
19
  description: string;
124
- minimum: number;
125
- maximum: number;
126
20
  };
127
- end_date_relative?: undefined;
128
- beginning_date?: undefined;
129
- end_date?: undefined;
130
- event_type?: undefined;
131
- event_affiliation?: undefined;
132
- skill_level?: undefined;
133
- event_tags?: undefined;
134
- tag?: undefined;
135
- time_range?: undefined;
136
- };
137
- required: string[];
138
- };
139
- } | {
140
- name: string;
141
- description: string;
142
- inputSchema: {
143
- type: string;
144
- properties: {
145
- tag: {
21
+ tags: {
146
22
  type: string;
147
23
  description: string;
148
24
  };
149
- time_range: {
25
+ date: {
150
26
  type: string;
151
27
  description: string;
152
28
  enum: string[];
153
- default: string;
154
29
  };
155
- timezone: {
30
+ skill: {
156
31
  type: string;
157
32
  description: string;
158
- default: string;
33
+ enum: string[];
159
34
  };
160
35
  limit: {
161
36
  type: string;
162
37
  description: string;
163
- minimum: number;
164
- maximum: number;
38
+ default: number;
165
39
  };
166
- beginning_date_relative?: undefined;
167
- end_date_relative?: undefined;
168
- beginning_date?: undefined;
169
- end_date?: undefined;
170
- event_type?: undefined;
171
- event_affiliation?: undefined;
172
- skill_level?: undefined;
173
- event_tags?: undefined;
174
- query?: undefined;
175
40
  };
176
- required: string[];
177
41
  };
178
- })[];
42
+ }[];
179
43
  protected getResources(): {
180
44
  uri: string;
181
45
  name: string;
@@ -190,15 +54,12 @@ export declare class EventsServer extends BaseAccessServer {
190
54
  }>;
191
55
  handleResourceRead(request: any): Promise<{
192
56
  contents: {
193
- uri: any;
57
+ uri: string;
194
58
  mimeType: string;
195
59
  text: string;
196
60
  }[];
197
61
  }>;
198
62
  private buildEventsUrl;
199
63
  private getEvents;
200
- private getUpcomingEvents;
201
64
  private searchEvents;
202
- private getEventsByTag;
203
- private getPopularTags;
204
65
  }