Commit 670267f
Justin Poehnelt
feat: add gws mcp server (npm#58)
* feat: add gws mcp server
Adds a new `gws mcp` subcommand that starts a Model Context Protocol
(MCP) server over stdio, exposing Google Workspace APIs as structured
tools to any MCP-compatible client.
- New `src/mcp_server.rs`: JSON-RPC stdio transport, handles
`initialize`, `tools/list`, and `tools/call`
- Tool discovery dynamically builds schemas from Google Discovery Docs
- Filtering via `-s <services>` flag (e.g. `-s drive,gmail` or `-s all`)
- `-w/--workflows` and `-e/--helpers` flags for optional extras
- stderr startup warning when no services are configured
- Refactored `executor::execute_method` to support output capture
(returns `Option<Value>` instead of printing to stdout) so the MCP
transport is not corrupted
- Updated README.md with MCP Server section and usage examples
* fix: address PR review comments
- Add stderr warning when discovery doc fails to load (mcp_server.rs)
- Remove redundant 'all' string check in service validation (mcp_server.rs)
- Validate upload path to prevent arbitrary file reads - security fix (mcp_server.rs)
- Remove redundant inner capture_output check in handle_binary_response (executor.rs)
- Add changeset for minor version bump
* fix: resolve CI lint, fmt, and test failures
- cargo fmt: format all changed files
- clippy: add #[allow(clippy::too_many_arguments)] on private handle_json_response
- clippy: collapse else { if } to else if in executor.rs
- clippy: replace svc_name.clone() with std::slice::from_ref in mcp_server.rs
- clippy: replace index-based loop with iterator in walk path resolution
- test: add ::<()> turbofish annotation to handle_error_response test calls
to fix E0282 type inference errors1 parent 8c1042a commit 670267f
12 files changed
Lines changed: 574 additions & 40 deletions
File tree
- .changeset
- src
- helpers
- gmail
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
19 | 18 | | |
20 | 19 | | |
21 | 20 | | |
22 | 21 | | |
23 | 22 | | |
24 | 23 | | |
25 | | - | |
26 | 24 | | |
27 | 25 | | |
28 | 26 | | |
| |||
36 | 34 | | |
37 | 35 | | |
38 | 36 | | |
| 37 | + | |
39 | 38 | | |
40 | 39 | | |
41 | 40 | | |
| |||
55 | 54 | | |
56 | 55 | | |
57 | 56 | | |
58 | | - | |
59 | 57 | | |
60 | 58 | | |
61 | 59 | | |
| |||
82 | 80 | | |
83 | 81 | | |
84 | 82 | | |
85 | | - | |
86 | 83 | | |
87 | 84 | | |
88 | 85 | | |
| |||
167 | 164 | | |
168 | 165 | | |
169 | 166 | | |
170 | | - | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
176 | 173 | | |
177 | 174 | | |
178 | 175 | | |
179 | | - | |
180 | 176 | | |
181 | 177 | | |
182 | 178 | | |
| |||
205 | 201 | | |
206 | 202 | | |
207 | 203 | | |
208 | | - | |
209 | 204 | | |
210 | 205 | | |
211 | 206 | | |
| 207 | + | |
212 | 208 | | |
213 | 209 | | |
214 | 210 | | |
| |||
220 | 216 | | |
221 | 217 | | |
222 | 218 | | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
223 | 252 | | |
224 | 253 | | |
225 | 254 | | |
| |||
230 | 259 | | |
231 | 260 | | |
232 | 261 | | |
233 | | - | |
234 | | - | |
235 | | - | |
236 | | - | |
237 | | - | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
238 | 267 | | |
239 | 268 | | |
240 | 269 | | |
| |||
245 | 274 | | |
246 | 275 | | |
247 | 276 | | |
248 | | - | |
249 | | - | |
| 277 | + | |
| 278 | + | |
250 | 279 | | |
251 | | - | |
252 | | - | |
| 280 | + | |
253 | 281 | | |
254 | 282 | | |
255 | 283 | | |
| |||
263 | 291 | | |
264 | 292 | | |
265 | 293 | | |
266 | | - | |
267 | 294 | | |
268 | 295 | | |
269 | 296 | | |
| |||
291 | 318 | | |
292 | 319 | | |
293 | 320 | | |
| 321 | + | |
294 | 322 | | |
295 | 323 | | |
296 | 324 | | |
| |||
299 | 327 | | |
300 | 328 | | |
301 | 329 | | |
302 | | - | |
303 | 330 | | |
304 | 331 | | |
305 | 332 | | |
| |||
309 | 336 | | |
310 | 337 | | |
311 | 338 | | |
312 | | - | |
313 | 339 | | |
314 | 340 | | |
315 | 341 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
199 | 199 | | |
200 | 200 | | |
201 | 201 | | |
| 202 | + | |
202 | 203 | | |
203 | 204 | | |
204 | 205 | | |
| |||
207 | 208 | | |
208 | 209 | | |
209 | 210 | | |
| 211 | + | |
| 212 | + | |
210 | 213 | | |
211 | 214 | | |
212 | 215 | | |
| |||
249 | 252 | | |
250 | 253 | | |
251 | 254 | | |
252 | | - | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
253 | 258 | | |
254 | 259 | | |
255 | 260 | | |
| |||
279 | 284 | | |
280 | 285 | | |
281 | 286 | | |
282 | | - | |
| 287 | + | |
283 | 288 | | |
284 | 289 | | |
285 | 290 | | |
| |||
293 | 298 | | |
294 | 299 | | |
295 | 300 | | |
296 | | - | |
| 301 | + | |
| 302 | + | |
297 | 303 | | |
298 | 304 | | |
299 | 305 | | |
| |||
324 | 330 | | |
325 | 331 | | |
326 | 332 | | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
327 | 338 | | |
328 | 339 | | |
329 | | - | |
| 340 | + | |
330 | 341 | | |
331 | 342 | | |
332 | 343 | | |
| |||
354 | 365 | | |
355 | 366 | | |
356 | 367 | | |
357 | | - | |
| 368 | + | |
| 369 | + | |
358 | 370 | | |
359 | 371 | | |
360 | 372 | | |
| |||
366 | 378 | | |
367 | 379 | | |
368 | 380 | | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
369 | 384 | | |
370 | 385 | | |
371 | 386 | | |
372 | 387 | | |
373 | | - | |
| 388 | + | |
374 | 389 | | |
375 | 390 | | |
376 | 391 | | |
377 | 392 | | |
| 393 | + | |
378 | 394 | | |
379 | 395 | | |
380 | 396 | | |
| |||
422 | 438 | | |
423 | 439 | | |
424 | 440 | | |
| 441 | + | |
| 442 | + | |
425 | 443 | | |
426 | 444 | | |
427 | 445 | | |
428 | 446 | | |
429 | 447 | | |
430 | 448 | | |
431 | | - | |
432 | | - | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
433 | 459 | | |
434 | 460 | | |
435 | 461 | | |
436 | 462 | | |
437 | 463 | | |
438 | | - | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
439 | 473 | | |
440 | 474 | | |
441 | 475 | | |
| |||
522 | 556 | | |
523 | 557 | | |
524 | 558 | | |
525 | | - | |
| 559 | + | |
526 | 560 | | |
527 | 561 | | |
528 | 562 | | |
529 | | - | |
| 563 | + | |
530 | 564 | | |
531 | 565 | | |
532 | 566 | | |
| |||
1130 | 1164 | | |
1131 | 1165 | | |
1132 | 1166 | | |
1133 | | - | |
| 1167 | + | |
1134 | 1168 | | |
1135 | 1169 | | |
1136 | 1170 | | |
| |||
1153 | 1187 | | |
1154 | 1188 | | |
1155 | 1189 | | |
1156 | | - | |
| 1190 | + | |
1157 | 1191 | | |
1158 | 1192 | | |
1159 | 1193 | | |
| |||
1245 | 1279 | | |
1246 | 1280 | | |
1247 | 1281 | | |
| 1282 | + | |
1248 | 1283 | | |
1249 | 1284 | | |
1250 | 1285 | | |
| |||
1287 | 1322 | | |
1288 | 1323 | | |
1289 | 1324 | | |
| 1325 | + | |
1290 | 1326 | | |
1291 | 1327 | | |
1292 | 1328 | | |
| |||
1299 | 1335 | | |
1300 | 1336 | | |
1301 | 1337 | | |
1302 | | - | |
| 1338 | + | |
1303 | 1339 | | |
1304 | 1340 | | |
1305 | 1341 | | |
| |||
1366 | 1402 | | |
1367 | 1403 | | |
1368 | 1404 | | |
1369 | | - | |
| 1405 | + | |
1370 | 1406 | | |
1371 | 1407 | | |
1372 | 1408 | | |
| |||
1403 | 1439 | | |
1404 | 1440 | | |
1405 | 1441 | | |
1406 | | - | |
| 1442 | + | |
1407 | 1443 | | |
1408 | 1444 | | |
1409 | 1445 | | |
| |||
0 commit comments