bn-google-workspace-mcp-server 0.0.2 → 0.0.5
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 +399 -72
- package/dist/google-api-client.d.ts +4 -8
- package/dist/google-api-client.d.ts.map +1 -1
- package/dist/google-api-client.js +6 -12
- package/dist/google-api-client.js.map +1 -1
- package/dist/index.js +30 -16
- package/dist/index.js.map +1 -1
- package/dist/schemas.d.ts +333 -39
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +374 -88
- package/dist/schemas.js.map +1 -1
- package/dist/tools/contacts.d.ts +151 -0
- package/dist/tools/contacts.d.ts.map +1 -0
- package/dist/tools/contacts.js +196 -0
- package/dist/tools/contacts.js.map +1 -0
- package/dist/tools/index.d.ts +2 -3
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -6
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/youtube.d.ts +209 -0
- package/dist/tools/youtube.d.ts.map +1 -0
- package/dist/tools/youtube.js +408 -0
- package/dist/tools/youtube.js.map +1 -0
- package/dist/types.d.ts +0 -28
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -6
- package/tools.json +421 -42
- package/dist/tools/chat.d.ts +0 -29
- package/dist/tools/chat.d.ts.map +0 -1
- package/dist/tools/chat.js +0 -42
- package/dist/tools/chat.js.map +0 -1
- package/dist/tools/forms.d.ts +0 -30
- package/dist/tools/forms.d.ts.map +0 -1
- package/dist/tools/forms.js +0 -46
- package/dist/tools/forms.js.map +0 -1
- package/dist/tools/tasks.d.ts +0 -43
- package/dist/tools/tasks.d.ts.map +0 -1
- package/dist/tools/tasks.js +0 -69
- package/dist/tools/tasks.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Google Workspace MCP Server
|
|
2
2
|
|
|
3
|
-
A comprehensive Model Context Protocol (MCP) server for Google Workspace services including Gmail, Drive, Calendar, Docs, Sheets, Slides,
|
|
3
|
+
A comprehensive Model Context Protocol (MCP) server for Google Workspace services including Gmail, Drive, Calendar, Docs, Sheets, Slides, Contacts, and YouTube with OAuth2 authentication.
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
@@ -10,9 +10,8 @@ A comprehensive Model Context Protocol (MCP) server for Google Workspace service
|
|
|
10
10
|
- **Google Docs**: Document creation and content access
|
|
11
11
|
- **Google Sheets**: Spreadsheet operations, data reading and creation
|
|
12
12
|
- **Google Slides**: Presentation management and creation
|
|
13
|
-
- **Google
|
|
14
|
-
- **
|
|
15
|
-
- **Google Chat**: Space management and messaging
|
|
13
|
+
- **Google Contacts**: Contact CRUD via People API (list, search, create, update, delete)
|
|
14
|
+
- **YouTube**: Video search, ratings, playlists, subscriptions, and comments via YouTube Data API v3
|
|
16
15
|
- **OAuth2 Authentication**: Secure access via Google Access Tokens
|
|
17
16
|
- **Stateless Architecture**: Each request is independent with Bearer token authentication
|
|
18
17
|
- **TypeScript Implementation**: Built with TypeScript for type safety and maintainability
|
|
@@ -64,9 +63,9 @@ Authorization: Bearer ya29.your-google-access-token
|
|
|
64
63
|
|
|
65
64
|
## Tools
|
|
66
65
|
|
|
67
|
-
The server provides
|
|
66
|
+
The server provides 39 tools across 8 Google services. Each tool requires `Authorization: Bearer <token>` header.
|
|
68
67
|
|
|
69
|
-
### Gmail Tools
|
|
68
|
+
### Gmail Tools (4)
|
|
70
69
|
|
|
71
70
|
#### 1. gmail_list_labels
|
|
72
71
|
List all Gmail labels.
|
|
@@ -88,7 +87,7 @@ curl -X POST http://localhost:30000/mcp \
|
|
|
88
87
|
```
|
|
89
88
|
|
|
90
89
|
#### 2. gmail_search_messages
|
|
91
|
-
Search Gmail messages.
|
|
90
|
+
Search Gmail messages using Gmail search operators.
|
|
92
91
|
|
|
93
92
|
```bash
|
|
94
93
|
curl -X POST http://localhost:30000/mcp \
|
|
@@ -153,10 +152,10 @@ curl -X POST http://localhost:30000/mcp \
|
|
|
153
152
|
}'
|
|
154
153
|
```
|
|
155
154
|
|
|
156
|
-
### Google Drive Tools
|
|
155
|
+
### Google Drive Tools (3)
|
|
157
156
|
|
|
158
157
|
#### 5. drive_list_files
|
|
159
|
-
List Google Drive files.
|
|
158
|
+
List and search Google Drive files using Drive Query Language.
|
|
160
159
|
|
|
161
160
|
```bash
|
|
162
161
|
curl -X POST http://localhost:30000/mcp \
|
|
@@ -221,10 +220,10 @@ curl -X POST http://localhost:30000/mcp \
|
|
|
221
220
|
}'
|
|
222
221
|
```
|
|
223
222
|
|
|
224
|
-
### Google Calendar Tools
|
|
223
|
+
### Google Calendar Tools (3)
|
|
225
224
|
|
|
226
225
|
#### 8. calendar_list_events
|
|
227
|
-
List Google Calendar events.
|
|
226
|
+
List upcoming Google Calendar events.
|
|
228
227
|
|
|
229
228
|
```bash
|
|
230
229
|
curl -X POST http://localhost:30000/mcp \
|
|
@@ -245,7 +244,7 @@ curl -X POST http://localhost:30000/mcp \
|
|
|
245
244
|
```
|
|
246
245
|
|
|
247
246
|
#### 9. calendar_list_calendars
|
|
248
|
-
List Google Calendars.
|
|
247
|
+
List all Google Calendars.
|
|
249
248
|
|
|
250
249
|
```bash
|
|
251
250
|
curl -X POST http://localhost:30000/mcp \
|
|
@@ -286,10 +285,10 @@ curl -X POST http://localhost:30000/mcp \
|
|
|
286
285
|
}'
|
|
287
286
|
```
|
|
288
287
|
|
|
289
|
-
### Google Docs Tools
|
|
288
|
+
### Google Docs Tools (2)
|
|
290
289
|
|
|
291
290
|
#### 11. docs_get_document
|
|
292
|
-
Get Google Docs document.
|
|
291
|
+
Get Google Docs document content.
|
|
293
292
|
|
|
294
293
|
```bash
|
|
295
294
|
curl -X POST http://localhost:30000/mcp \
|
|
@@ -331,10 +330,10 @@ curl -X POST http://localhost:30000/mcp \
|
|
|
331
330
|
}'
|
|
332
331
|
```
|
|
333
332
|
|
|
334
|
-
### Google Sheets Tools
|
|
333
|
+
### Google Sheets Tools (3)
|
|
335
334
|
|
|
336
335
|
#### 13. sheets_get_spreadsheet
|
|
337
|
-
Get Google Sheets spreadsheet.
|
|
336
|
+
Get Google Sheets spreadsheet metadata.
|
|
338
337
|
|
|
339
338
|
```bash
|
|
340
339
|
curl -X POST http://localhost:30000/mcp \
|
|
@@ -397,7 +396,7 @@ curl -X POST http://localhost:30000/mcp \
|
|
|
397
396
|
}'
|
|
398
397
|
```
|
|
399
398
|
|
|
400
|
-
### Google Slides Tools
|
|
399
|
+
### Google Slides Tools (2)
|
|
401
400
|
|
|
402
401
|
#### 16. slides_get_presentation
|
|
403
402
|
Get Google Slides presentation.
|
|
@@ -441,10 +440,10 @@ curl -X POST http://localhost:30000/mcp \
|
|
|
441
440
|
}'
|
|
442
441
|
```
|
|
443
442
|
|
|
444
|
-
### Google
|
|
443
|
+
### Google Contacts Tools (6)
|
|
445
444
|
|
|
446
|
-
#### 18.
|
|
447
|
-
List
|
|
445
|
+
#### 18. contacts_list_contacts
|
|
446
|
+
List all contacts with pagination and sorting.
|
|
448
447
|
|
|
449
448
|
```bash
|
|
450
449
|
curl -X POST http://localhost:30000/mcp \
|
|
@@ -453,17 +452,19 @@ curl -X POST http://localhost:30000/mcp \
|
|
|
453
452
|
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
454
453
|
-d '{
|
|
455
454
|
"jsonrpc": "2.0",
|
|
456
|
-
"id": "
|
|
455
|
+
"id": "29",
|
|
457
456
|
"method": "tools/call",
|
|
458
457
|
"params": {
|
|
459
|
-
"name": "
|
|
460
|
-
"arguments": {
|
|
458
|
+
"name": "contacts_list_contacts",
|
|
459
|
+
"arguments": {
|
|
460
|
+
"pageSize": 50
|
|
461
|
+
}
|
|
461
462
|
}
|
|
462
463
|
}'
|
|
463
464
|
```
|
|
464
465
|
|
|
465
|
-
#### 19.
|
|
466
|
-
|
|
466
|
+
#### 19. contacts_search_contacts
|
|
467
|
+
Search contacts by name, email, or phone number.
|
|
467
468
|
|
|
468
469
|
```bash
|
|
469
470
|
curl -X POST http://localhost:30000/mcp \
|
|
@@ -472,19 +473,19 @@ curl -X POST http://localhost:30000/mcp \
|
|
|
472
473
|
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
473
474
|
-d '{
|
|
474
475
|
"jsonrpc": "2.0",
|
|
475
|
-
"id": "
|
|
476
|
+
"id": "30",
|
|
476
477
|
"method": "tools/call",
|
|
477
478
|
"params": {
|
|
478
|
-
"name": "
|
|
479
|
+
"name": "contacts_search_contacts",
|
|
479
480
|
"arguments": {
|
|
480
|
-
"
|
|
481
|
+
"query": "John"
|
|
481
482
|
}
|
|
482
483
|
}
|
|
483
484
|
}'
|
|
484
485
|
```
|
|
485
486
|
|
|
486
|
-
#### 20.
|
|
487
|
-
|
|
487
|
+
#### 20. contacts_get_contact
|
|
488
|
+
Get a specific contact by resource name.
|
|
488
489
|
|
|
489
490
|
```bash
|
|
490
491
|
curl -X POST http://localhost:30000/mcp \
|
|
@@ -493,23 +494,45 @@ curl -X POST http://localhost:30000/mcp \
|
|
|
493
494
|
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
494
495
|
-d '{
|
|
495
496
|
"jsonrpc": "2.0",
|
|
496
|
-
"id": "
|
|
497
|
+
"id": "31",
|
|
497
498
|
"method": "tools/call",
|
|
498
499
|
"params": {
|
|
499
|
-
"name": "
|
|
500
|
+
"name": "contacts_get_contact",
|
|
500
501
|
"arguments": {
|
|
501
|
-
"
|
|
502
|
-
"title": "Complete project documentation",
|
|
503
|
-
"notes": "Review and finalize all documentation for the project"
|
|
502
|
+
"resourceName": "people/c1234567890"
|
|
504
503
|
}
|
|
505
504
|
}
|
|
506
505
|
}'
|
|
507
506
|
```
|
|
508
507
|
|
|
509
|
-
|
|
508
|
+
#### 21. contacts_create_contact
|
|
509
|
+
Create a new contact with name, email, phone, organization, and notes.
|
|
510
510
|
|
|
511
|
-
|
|
512
|
-
|
|
511
|
+
```bash
|
|
512
|
+
curl -X POST http://localhost:30000/mcp \
|
|
513
|
+
-H "Content-Type: application/json" \
|
|
514
|
+
-H "Accept: application/json, text/event-stream" \
|
|
515
|
+
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
516
|
+
-d '{
|
|
517
|
+
"jsonrpc": "2.0",
|
|
518
|
+
"id": "32",
|
|
519
|
+
"method": "tools/call",
|
|
520
|
+
"params": {
|
|
521
|
+
"name": "contacts_create_contact",
|
|
522
|
+
"arguments": {
|
|
523
|
+
"givenName": "Jane",
|
|
524
|
+
"familyName": "Doe",
|
|
525
|
+
"email": "jane@example.com",
|
|
526
|
+
"phone": "+1-555-0100",
|
|
527
|
+
"organization": "Acme Inc",
|
|
528
|
+
"jobTitle": "Engineer"
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
}'
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
#### 22. contacts_update_contact
|
|
535
|
+
Update an existing contact (requires etag for optimistic concurrency).
|
|
513
536
|
|
|
514
537
|
```bash
|
|
515
538
|
curl -X POST http://localhost:30000/mcp \
|
|
@@ -518,19 +541,21 @@ curl -X POST http://localhost:30000/mcp \
|
|
|
518
541
|
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
519
542
|
-d '{
|
|
520
543
|
"jsonrpc": "2.0",
|
|
521
|
-
"id": "
|
|
544
|
+
"id": "33",
|
|
522
545
|
"method": "tools/call",
|
|
523
546
|
"params": {
|
|
524
|
-
"name": "
|
|
547
|
+
"name": "contacts_update_contact",
|
|
525
548
|
"arguments": {
|
|
526
|
-
"
|
|
549
|
+
"resourceName": "people/c1234567890",
|
|
550
|
+
"etag": "%EgUBAi43...",
|
|
551
|
+
"jobTitle": "Senior Engineer"
|
|
527
552
|
}
|
|
528
553
|
}
|
|
529
554
|
}'
|
|
530
555
|
```
|
|
531
556
|
|
|
532
|
-
####
|
|
533
|
-
|
|
557
|
+
#### 23. contacts_delete_contact
|
|
558
|
+
Delete a contact.
|
|
534
559
|
|
|
535
560
|
```bash
|
|
536
561
|
curl -X POST http://localhost:30000/mcp \
|
|
@@ -539,21 +564,21 @@ curl -X POST http://localhost:30000/mcp \
|
|
|
539
564
|
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
540
565
|
-d '{
|
|
541
566
|
"jsonrpc": "2.0",
|
|
542
|
-
"id": "
|
|
567
|
+
"id": "34",
|
|
543
568
|
"method": "tools/call",
|
|
544
569
|
"params": {
|
|
545
|
-
"name": "
|
|
570
|
+
"name": "contacts_delete_contact",
|
|
546
571
|
"arguments": {
|
|
547
|
-
"
|
|
572
|
+
"resourceName": "people/c1234567890"
|
|
548
573
|
}
|
|
549
574
|
}
|
|
550
575
|
}'
|
|
551
576
|
```
|
|
552
577
|
|
|
553
|
-
###
|
|
578
|
+
### YouTube Tools (16)
|
|
554
579
|
|
|
555
|
-
####
|
|
556
|
-
|
|
580
|
+
#### 24. youtube_search
|
|
581
|
+
Search YouTube for videos, channels, or playlists.
|
|
557
582
|
|
|
558
583
|
```bash
|
|
559
584
|
curl -X POST http://localhost:30000/mcp \
|
|
@@ -562,17 +587,321 @@ curl -X POST http://localhost:30000/mcp \
|
|
|
562
587
|
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
563
588
|
-d '{
|
|
564
589
|
"jsonrpc": "2.0",
|
|
565
|
-
"id": "
|
|
590
|
+
"id": "35",
|
|
566
591
|
"method": "tools/call",
|
|
567
592
|
"params": {
|
|
568
|
-
"name": "
|
|
569
|
-
"arguments": {
|
|
593
|
+
"name": "youtube_search",
|
|
594
|
+
"arguments": {
|
|
595
|
+
"query": "MCP tutorial",
|
|
596
|
+
"type": "video",
|
|
597
|
+
"maxResults": 5
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
}'
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
#### 25. youtube_get_video_details
|
|
604
|
+
Get detailed information about one or more videos.
|
|
605
|
+
|
|
606
|
+
```bash
|
|
607
|
+
curl -X POST http://localhost:30000/mcp \
|
|
608
|
+
-H "Content-Type: application/json" \
|
|
609
|
+
-H "Accept: application/json, text/event-stream" \
|
|
610
|
+
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
611
|
+
-d '{
|
|
612
|
+
"jsonrpc": "2.0",
|
|
613
|
+
"id": "36",
|
|
614
|
+
"method": "tools/call",
|
|
615
|
+
"params": {
|
|
616
|
+
"name": "youtube_get_video_details",
|
|
617
|
+
"arguments": {
|
|
618
|
+
"videoIds": "dQw4w9WgXcQ"
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
}'
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
#### 26. youtube_get_video_rating
|
|
625
|
+
Check if the authenticated user has liked/disliked a video.
|
|
626
|
+
|
|
627
|
+
```bash
|
|
628
|
+
curl -X POST http://localhost:30000/mcp \
|
|
629
|
+
-H "Content-Type: application/json" \
|
|
630
|
+
-H "Accept: application/json, text/event-stream" \
|
|
631
|
+
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
632
|
+
-d '{
|
|
633
|
+
"jsonrpc": "2.0",
|
|
634
|
+
"id": "37",
|
|
635
|
+
"method": "tools/call",
|
|
636
|
+
"params": {
|
|
637
|
+
"name": "youtube_get_video_rating",
|
|
638
|
+
"arguments": {
|
|
639
|
+
"videoIds": "dQw4w9WgXcQ"
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
}'
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
#### 27. youtube_rate_video
|
|
646
|
+
Like, dislike, or remove rating from a video.
|
|
647
|
+
|
|
648
|
+
```bash
|
|
649
|
+
curl -X POST http://localhost:30000/mcp \
|
|
650
|
+
-H "Content-Type: application/json" \
|
|
651
|
+
-H "Accept: application/json, text/event-stream" \
|
|
652
|
+
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
653
|
+
-d '{
|
|
654
|
+
"jsonrpc": "2.0",
|
|
655
|
+
"id": "38",
|
|
656
|
+
"method": "tools/call",
|
|
657
|
+
"params": {
|
|
658
|
+
"name": "youtube_rate_video",
|
|
659
|
+
"arguments": {
|
|
660
|
+
"videoId": "dQw4w9WgXcQ",
|
|
661
|
+
"rating": "like"
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
}'
|
|
665
|
+
```
|
|
666
|
+
|
|
667
|
+
#### 28. youtube_get_channel
|
|
668
|
+
Get channel information (own channel or by ID).
|
|
669
|
+
|
|
670
|
+
```bash
|
|
671
|
+
curl -X POST http://localhost:30000/mcp \
|
|
672
|
+
-H "Content-Type: application/json" \
|
|
673
|
+
-H "Accept: application/json, text/event-stream" \
|
|
674
|
+
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
675
|
+
-d '{
|
|
676
|
+
"jsonrpc": "2.0",
|
|
677
|
+
"id": "39",
|
|
678
|
+
"method": "tools/call",
|
|
679
|
+
"params": {
|
|
680
|
+
"name": "youtube_get_channel",
|
|
681
|
+
"arguments": {
|
|
682
|
+
"mine": true
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
}'
|
|
686
|
+
```
|
|
687
|
+
|
|
688
|
+
#### 29. youtube_list_subscriptions
|
|
689
|
+
List the authenticated user's subscriptions.
|
|
690
|
+
|
|
691
|
+
```bash
|
|
692
|
+
curl -X POST http://localhost:30000/mcp \
|
|
693
|
+
-H "Content-Type: application/json" \
|
|
694
|
+
-H "Accept: application/json, text/event-stream" \
|
|
695
|
+
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
696
|
+
-d '{
|
|
697
|
+
"jsonrpc": "2.0",
|
|
698
|
+
"id": "40",
|
|
699
|
+
"method": "tools/call",
|
|
700
|
+
"params": {
|
|
701
|
+
"name": "youtube_list_subscriptions",
|
|
702
|
+
"arguments": {
|
|
703
|
+
"maxResults": 10
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
}'
|
|
707
|
+
```
|
|
708
|
+
|
|
709
|
+
#### 30. youtube_subscribe_channel
|
|
710
|
+
Subscribe to a YouTube channel.
|
|
711
|
+
|
|
712
|
+
```bash
|
|
713
|
+
curl -X POST http://localhost:30000/mcp \
|
|
714
|
+
-H "Content-Type: application/json" \
|
|
715
|
+
-H "Accept: application/json, text/event-stream" \
|
|
716
|
+
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
717
|
+
-d '{
|
|
718
|
+
"jsonrpc": "2.0",
|
|
719
|
+
"id": "41",
|
|
720
|
+
"method": "tools/call",
|
|
721
|
+
"params": {
|
|
722
|
+
"name": "youtube_subscribe_channel",
|
|
723
|
+
"arguments": {
|
|
724
|
+
"channelId": "UCxxxxxxxxxxxxxxxxxxxxxxx"
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
}'
|
|
728
|
+
```
|
|
729
|
+
|
|
730
|
+
#### 31. youtube_unsubscribe_channel
|
|
731
|
+
Unsubscribe from a YouTube channel (requires subscription ID).
|
|
732
|
+
|
|
733
|
+
```bash
|
|
734
|
+
curl -X POST http://localhost:30000/mcp \
|
|
735
|
+
-H "Content-Type: application/json" \
|
|
736
|
+
-H "Accept: application/json, text/event-stream" \
|
|
737
|
+
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
738
|
+
-d '{
|
|
739
|
+
"jsonrpc": "2.0",
|
|
740
|
+
"id": "42",
|
|
741
|
+
"method": "tools/call",
|
|
742
|
+
"params": {
|
|
743
|
+
"name": "youtube_unsubscribe_channel",
|
|
744
|
+
"arguments": {
|
|
745
|
+
"subscriptionId": "xxxxxxxxxxxxxxxxxxxx"
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
}'
|
|
749
|
+
```
|
|
750
|
+
|
|
751
|
+
#### 32. youtube_list_playlists
|
|
752
|
+
List playlists (own or by channel ID).
|
|
753
|
+
|
|
754
|
+
```bash
|
|
755
|
+
curl -X POST http://localhost:30000/mcp \
|
|
756
|
+
-H "Content-Type: application/json" \
|
|
757
|
+
-H "Accept: application/json, text/event-stream" \
|
|
758
|
+
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
759
|
+
-d '{
|
|
760
|
+
"jsonrpc": "2.0",
|
|
761
|
+
"id": "43",
|
|
762
|
+
"method": "tools/call",
|
|
763
|
+
"params": {
|
|
764
|
+
"name": "youtube_list_playlists",
|
|
765
|
+
"arguments": {
|
|
766
|
+
"mine": true
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
}'
|
|
770
|
+
```
|
|
771
|
+
|
|
772
|
+
#### 33. youtube_create_playlist
|
|
773
|
+
Create a new YouTube playlist.
|
|
774
|
+
|
|
775
|
+
```bash
|
|
776
|
+
curl -X POST http://localhost:30000/mcp \
|
|
777
|
+
-H "Content-Type: application/json" \
|
|
778
|
+
-H "Accept: application/json, text/event-stream" \
|
|
779
|
+
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
780
|
+
-d '{
|
|
781
|
+
"jsonrpc": "2.0",
|
|
782
|
+
"id": "44",
|
|
783
|
+
"method": "tools/call",
|
|
784
|
+
"params": {
|
|
785
|
+
"name": "youtube_create_playlist",
|
|
786
|
+
"arguments": {
|
|
787
|
+
"title": "My Favorites",
|
|
788
|
+
"description": "A collection of my favorite videos",
|
|
789
|
+
"privacyStatus": "private"
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
}'
|
|
793
|
+
```
|
|
794
|
+
|
|
795
|
+
#### 34. youtube_list_playlist_items
|
|
796
|
+
List videos in a playlist.
|
|
797
|
+
|
|
798
|
+
```bash
|
|
799
|
+
curl -X POST http://localhost:30000/mcp \
|
|
800
|
+
-H "Content-Type: application/json" \
|
|
801
|
+
-H "Accept: application/json, text/event-stream" \
|
|
802
|
+
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
803
|
+
-d '{
|
|
804
|
+
"jsonrpc": "2.0",
|
|
805
|
+
"id": "45",
|
|
806
|
+
"method": "tools/call",
|
|
807
|
+
"params": {
|
|
808
|
+
"name": "youtube_list_playlist_items",
|
|
809
|
+
"arguments": {
|
|
810
|
+
"playlistId": "PLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
}'
|
|
814
|
+
```
|
|
815
|
+
|
|
816
|
+
#### 35. youtube_add_to_playlist
|
|
817
|
+
Add a video to a playlist.
|
|
818
|
+
|
|
819
|
+
```bash
|
|
820
|
+
curl -X POST http://localhost:30000/mcp \
|
|
821
|
+
-H "Content-Type: application/json" \
|
|
822
|
+
-H "Accept: application/json, text/event-stream" \
|
|
823
|
+
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
824
|
+
-d '{
|
|
825
|
+
"jsonrpc": "2.0",
|
|
826
|
+
"id": "46",
|
|
827
|
+
"method": "tools/call",
|
|
828
|
+
"params": {
|
|
829
|
+
"name": "youtube_add_to_playlist",
|
|
830
|
+
"arguments": {
|
|
831
|
+
"playlistId": "PLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
|
832
|
+
"videoId": "dQw4w9WgXcQ"
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
}'
|
|
836
|
+
```
|
|
837
|
+
|
|
838
|
+
#### 36. youtube_remove_from_playlist
|
|
839
|
+
Remove a video from a playlist (requires playlist item ID).
|
|
840
|
+
|
|
841
|
+
```bash
|
|
842
|
+
curl -X POST http://localhost:30000/mcp \
|
|
843
|
+
-H "Content-Type: application/json" \
|
|
844
|
+
-H "Accept: application/json, text/event-stream" \
|
|
845
|
+
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
846
|
+
-d '{
|
|
847
|
+
"jsonrpc": "2.0",
|
|
848
|
+
"id": "47",
|
|
849
|
+
"method": "tools/call",
|
|
850
|
+
"params": {
|
|
851
|
+
"name": "youtube_remove_from_playlist",
|
|
852
|
+
"arguments": {
|
|
853
|
+
"playlistItemId": "UExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxQ"
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
}'
|
|
857
|
+
```
|
|
858
|
+
|
|
859
|
+
#### 37. youtube_list_comments
|
|
860
|
+
List comments on a YouTube video.
|
|
861
|
+
|
|
862
|
+
```bash
|
|
863
|
+
curl -X POST http://localhost:30000/mcp \
|
|
864
|
+
-H "Content-Type: application/json" \
|
|
865
|
+
-H "Accept: application/json, text/event-stream" \
|
|
866
|
+
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
867
|
+
-d '{
|
|
868
|
+
"jsonrpc": "2.0",
|
|
869
|
+
"id": "48",
|
|
870
|
+
"method": "tools/call",
|
|
871
|
+
"params": {
|
|
872
|
+
"name": "youtube_list_comments",
|
|
873
|
+
"arguments": {
|
|
874
|
+
"videoId": "dQw4w9WgXcQ",
|
|
875
|
+
"maxResults": 10
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
}'
|
|
879
|
+
```
|
|
880
|
+
|
|
881
|
+
#### 38. youtube_post_comment
|
|
882
|
+
Post a top-level comment on a YouTube video.
|
|
883
|
+
|
|
884
|
+
```bash
|
|
885
|
+
curl -X POST http://localhost:30000/mcp \
|
|
886
|
+
-H "Content-Type: application/json" \
|
|
887
|
+
-H "Accept: application/json, text/event-stream" \
|
|
888
|
+
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
889
|
+
-d '{
|
|
890
|
+
"jsonrpc": "2.0",
|
|
891
|
+
"id": "49",
|
|
892
|
+
"method": "tools/call",
|
|
893
|
+
"params": {
|
|
894
|
+
"name": "youtube_post_comment",
|
|
895
|
+
"arguments": {
|
|
896
|
+
"videoId": "dQw4w9WgXcQ",
|
|
897
|
+
"text": "Great video!"
|
|
898
|
+
}
|
|
570
899
|
}
|
|
571
900
|
}'
|
|
572
901
|
```
|
|
573
902
|
|
|
574
|
-
####
|
|
575
|
-
|
|
903
|
+
#### 39. youtube_reply_to_comment
|
|
904
|
+
Reply to an existing YouTube comment.
|
|
576
905
|
|
|
577
906
|
```bash
|
|
578
907
|
curl -X POST http://localhost:30000/mcp \
|
|
@@ -581,13 +910,13 @@ curl -X POST http://localhost:30000/mcp \
|
|
|
581
910
|
-H "Authorization: Bearer ya29.your-google-access-token" \
|
|
582
911
|
-d '{
|
|
583
912
|
"jsonrpc": "2.0",
|
|
584
|
-
"id": "
|
|
913
|
+
"id": "50",
|
|
585
914
|
"method": "tools/call",
|
|
586
915
|
"params": {
|
|
587
|
-
"name": "
|
|
916
|
+
"name": "youtube_reply_to_comment",
|
|
588
917
|
"arguments": {
|
|
589
|
-
"
|
|
590
|
-
"text": "
|
|
918
|
+
"parentId": "UgxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxQ",
|
|
919
|
+
"text": "Thanks for sharing!"
|
|
591
920
|
}
|
|
592
921
|
}
|
|
593
922
|
}'
|
|
@@ -630,15 +959,14 @@ google-workspace/
|
|
|
630
959
|
│ ├── google-api-client.ts # Google API service factories
|
|
631
960
|
│ └── tools/
|
|
632
961
|
│ ├── index.ts # Tool exports
|
|
633
|
-
│ ├── gmail.ts # Gmail tools
|
|
634
|
-
│ ├── drive.ts # Drive tools
|
|
635
|
-
│ ├── calendar.ts # Calendar tools
|
|
636
|
-
│ ├── docs.ts # Docs tools
|
|
637
|
-
│ ├── sheets.ts # Sheets tools
|
|
638
|
-
│ ├── slides.ts # Slides tools
|
|
639
|
-
│ ├──
|
|
640
|
-
│
|
|
641
|
-
│ └── chat.ts # Chat tools
|
|
962
|
+
│ ├── gmail.ts # Gmail tools (4)
|
|
963
|
+
│ ├── drive.ts # Drive tools (3)
|
|
964
|
+
│ ├── calendar.ts # Calendar tools (3)
|
|
965
|
+
│ ├── docs.ts # Docs tools (2)
|
|
966
|
+
│ ├── sheets.ts # Sheets tools (3)
|
|
967
|
+
│ ├── slides.ts # Slides tools (2)
|
|
968
|
+
│ ├── contacts.ts # Contacts tools (6)
|
|
969
|
+
│ └── youtube.ts # YouTube tools (16)
|
|
642
970
|
└── dist/ # Compiled JavaScript
|
|
643
971
|
```
|
|
644
972
|
|
|
@@ -647,10 +975,10 @@ google-workspace/
|
|
|
647
975
|
1. **Create Google Cloud Project:**
|
|
648
976
|
- Go to [Google Cloud Console](https://console.cloud.google.com/)
|
|
649
977
|
- Create a new project or select existing
|
|
650
|
-
- Enable required APIs (Gmail, Drive, Calendar,
|
|
978
|
+
- Enable required APIs (Gmail, Drive, Calendar, People, YouTube)
|
|
651
979
|
|
|
652
980
|
2. **Set up OAuth2:**
|
|
653
|
-
- Go to "Credentials"
|
|
981
|
+
- Go to "Credentials" -> "Create Credentials" -> "OAuth 2.0 Client IDs"
|
|
654
982
|
- Configure OAuth consent screen
|
|
655
983
|
- Download client configuration
|
|
656
984
|
|
|
@@ -663,9 +991,8 @@ google-workspace/
|
|
|
663
991
|
https://www.googleapis.com/auth/documents
|
|
664
992
|
https://www.googleapis.com/auth/spreadsheets
|
|
665
993
|
https://www.googleapis.com/auth/presentations
|
|
666
|
-
https://www.googleapis.com/auth/
|
|
667
|
-
https://www.googleapis.com/auth/
|
|
668
|
-
https://www.googleapis.com/auth/chat.spaces
|
|
994
|
+
https://www.googleapis.com/auth/contacts
|
|
995
|
+
https://www.googleapis.com/auth/youtube.force-ssl
|
|
669
996
|
```
|
|
670
997
|
|
|
671
998
|
4. **Get Access Token:**
|
|
@@ -32,15 +32,11 @@ export declare function getSheetsService(req: Request): import("googleapis").she
|
|
|
32
32
|
*/
|
|
33
33
|
export declare function getSlidesService(req: Request): import("googleapis").slides_v1.Slides;
|
|
34
34
|
/**
|
|
35
|
-
* Get Google
|
|
35
|
+
* Get Google People API service (Contacts)
|
|
36
36
|
*/
|
|
37
|
-
export declare function
|
|
37
|
+
export declare function getPeopleService(req: Request): import("googleapis").people_v1.People;
|
|
38
38
|
/**
|
|
39
|
-
* Get
|
|
39
|
+
* Get YouTube Data API v3 service
|
|
40
40
|
*/
|
|
41
|
-
export declare function
|
|
42
|
-
/**
|
|
43
|
-
* Get Google Chat API service
|
|
44
|
-
*/
|
|
45
|
-
export declare function getChatService(req: Request): import("googleapis").chat_v1.Chat;
|
|
41
|
+
export declare function getYouTubeService(req: Request): import("googleapis").youtube_v3.Youtube;
|
|
46
42
|
//# sourceMappingURL=google-api-client.d.ts.map
|