google-services-mcp 0.1.0-beta.25

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 (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +302 -0
  3. package/dist/auth/config.d.ts +43 -0
  4. package/dist/auth/config.d.ts.map +1 -0
  5. package/dist/auth/config.js +108 -0
  6. package/dist/auth/config.js.map +1 -0
  7. package/dist/auth/manager.d.ts +50 -0
  8. package/dist/auth/manager.d.ts.map +1 -0
  9. package/dist/auth/manager.js +140 -0
  10. package/dist/auth/manager.js.map +1 -0
  11. package/dist/auth/oauth.d.ts +49 -0
  12. package/dist/auth/oauth.d.ts.map +1 -0
  13. package/dist/auth/oauth.js +211 -0
  14. package/dist/auth/oauth.js.map +1 -0
  15. package/dist/auth/store.d.ts +18 -0
  16. package/dist/auth/store.d.ts.map +1 -0
  17. package/dist/auth/store.js +45 -0
  18. package/dist/auth/store.js.map +1 -0
  19. package/dist/cli.d.ts +7 -0
  20. package/dist/cli.d.ts.map +1 -0
  21. package/dist/cli.js +128 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/main.d.ts +3 -0
  24. package/dist/main.d.ts.map +1 -0
  25. package/dist/main.js +21 -0
  26. package/dist/main.js.map +1 -0
  27. package/dist/server.d.ts +3 -0
  28. package/dist/server.d.ts.map +1 -0
  29. package/dist/server.js +28 -0
  30. package/dist/server.js.map +1 -0
  31. package/dist/services/calendar.d.ts +77 -0
  32. package/dist/services/calendar.d.ts.map +1 -0
  33. package/dist/services/calendar.js +141 -0
  34. package/dist/services/calendar.js.map +1 -0
  35. package/dist/services/contacts-tasks.d.ts +61 -0
  36. package/dist/services/contacts-tasks.d.ts.map +1 -0
  37. package/dist/services/contacts-tasks.js +103 -0
  38. package/dist/services/contacts-tasks.js.map +1 -0
  39. package/dist/services/docs.d.ts +30 -0
  40. package/dist/services/docs.d.ts.map +1 -0
  41. package/dist/services/docs.js +60 -0
  42. package/dist/services/docs.js.map +1 -0
  43. package/dist/services/drive.d.ts +51 -0
  44. package/dist/services/drive.d.ts.map +1 -0
  45. package/dist/services/drive.js +80 -0
  46. package/dist/services/drive.js.map +1 -0
  47. package/dist/services/forms.d.ts +28 -0
  48. package/dist/services/forms.d.ts.map +1 -0
  49. package/dist/services/forms.js +54 -0
  50. package/dist/services/forms.js.map +1 -0
  51. package/dist/services/gmail.d.ts +64 -0
  52. package/dist/services/gmail.d.ts.map +1 -0
  53. package/dist/services/gmail.js +144 -0
  54. package/dist/services/gmail.js.map +1 -0
  55. package/dist/services/sheets.d.ts +44 -0
  56. package/dist/services/sheets.d.ts.map +1 -0
  57. package/dist/services/sheets.js +53 -0
  58. package/dist/services/sheets.js.map +1 -0
  59. package/dist/services/slides.d.ts +28 -0
  60. package/dist/services/slides.d.ts.map +1 -0
  61. package/dist/services/slides.js +54 -0
  62. package/dist/services/slides.js.map +1 -0
  63. package/dist/services/youtube.d.ts +40 -0
  64. package/dist/services/youtube.d.ts.map +1 -0
  65. package/dist/services/youtube.js +91 -0
  66. package/dist/services/youtube.js.map +1 -0
  67. package/dist/tools/index.d.ts +3 -0
  68. package/dist/tools/index.d.ts.map +1 -0
  69. package/dist/tools/index.js +659 -0
  70. package/dist/tools/index.js.map +1 -0
  71. package/dist/util/result.d.ts +29 -0
  72. package/dist/util/result.d.ts.map +1 -0
  73. package/dist/util/result.js +21 -0
  74. package/dist/util/result.js.map +1 -0
  75. package/package.json +54 -0
@@ -0,0 +1,40 @@
1
+ import type { Auth } from "googleapis";
2
+ export interface SearchVideosArgs {
3
+ query: string;
4
+ maxResults?: number;
5
+ }
6
+ export interface GetVideoArgs {
7
+ videoId: string;
8
+ }
9
+ export declare function searchVideos(client: Auth.OAuth2Client, { query, maxResults }: SearchVideosArgs): Promise<Array<{
10
+ id: string;
11
+ type: string;
12
+ title?: string;
13
+ channelTitle?: string;
14
+ }>>;
15
+ export declare function getVideo(client: Auth.OAuth2Client, { videoId }: GetVideoArgs): Promise<any>;
16
+ export declare function getMyVideos(client: Auth.OAuth2Client, { maxResults }: {
17
+ maxResults?: number;
18
+ }): Promise<any>;
19
+ export declare function listPlaylists(client: Auth.OAuth2Client, { maxResults }: {
20
+ maxResults?: number;
21
+ }): Promise<any[]>;
22
+ export declare function createPlaylist(client: Auth.OAuth2Client, { title, description, privacyStatus }: {
23
+ title: string;
24
+ description?: string;
25
+ privacyStatus?: string;
26
+ }): Promise<any>;
27
+ export declare function deletePlaylist(client: Auth.OAuth2Client, { playlistId }: {
28
+ playlistId: string;
29
+ }): Promise<any>;
30
+ export declare function addVideoToPlaylist(client: Auth.OAuth2Client, { playlistId, videoId }: {
31
+ playlistId: string;
32
+ videoId: string;
33
+ }): Promise<any>;
34
+ export declare function listSubscriptions(client: Auth.OAuth2Client, { maxResults }: {
35
+ maxResults?: number;
36
+ }): Promise<Array<{
37
+ title?: string;
38
+ channelId?: string;
39
+ }>>;
40
+ //# sourceMappingURL=youtube.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"youtube.d.ts","sourceRoot":"","sources":["../../src/services/youtube.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,KAAK,EAAE,UAAe,EAAE,EAAE,gBAAgB,GAC3C,OAAO,CAAC,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAcrF;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAOjG;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,UAAe,EAAE,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC,GAAG,CAAC,CAkBd;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,UAAe,EAAE,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC,GAAG,EAAE,CAAC,CAQhB;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,KAAK,EAAE,WAAW,EAAE,aAAkC,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1H,OAAO,CAAC,GAAG,CAAC,CAUd;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACrC,OAAO,CAAC,GAAG,CAAC,CAId;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC/D,OAAO,CAAC,GAAG,CAAC,CASd;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,EAAE,UAAe,EAAE,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC,KAAK,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAWxD"}
@@ -0,0 +1,91 @@
1
+ import { google } from "googleapis";
2
+ export async function searchVideos(client, { query, maxResults = 10 }) {
3
+ const yt = google.youtube({ version: "v3", auth: client });
4
+ const res = await yt.search.list({
5
+ part: ["snippet"],
6
+ q: query,
7
+ type: ["video"],
8
+ maxResults,
9
+ });
10
+ return (res.data.items ?? []).map((item) => ({
11
+ id: item.id?.videoId ?? item.id?.channelId ?? item.id?.playlistId ?? "",
12
+ type: item.id?.videoId ? "video" : item.id?.channelId ? "channel" : item.id?.playlistId ? "playlist" : "unknown",
13
+ title: item.snippet?.title ?? undefined,
14
+ channelTitle: item.snippet?.channelTitle ?? undefined,
15
+ }));
16
+ }
17
+ export async function getVideo(client, { videoId }) {
18
+ const yt = google.youtube({ version: "v3", auth: client });
19
+ const res = await yt.videos.list({
20
+ part: ["snippet", "contentDetails", "statistics"],
21
+ id: [videoId],
22
+ });
23
+ return res.data.items?.[0] ?? null;
24
+ }
25
+ export async function getMyVideos(client, { maxResults = 25 }) {
26
+ // Find the uploads playlist for the signed-in channel, then list its items.
27
+ const yt = google.youtube({ version: "v3", auth: client });
28
+ const playlists = await yt.playlists.list({
29
+ part: ["snippet"],
30
+ mine: true,
31
+ maxResults: 50,
32
+ });
33
+ const uploadsPlaylist = (playlists.data.items ?? []).find((p) => p.id && p.snippet?.title === "Uploads");
34
+ if (!uploadsPlaylist?.id) {
35
+ return { videos: [], uploadsPlaylistId: null };
36
+ }
37
+ const items = await yt.playlistItems.list({
38
+ part: ["snippet", "contentDetails"],
39
+ playlistId: uploadsPlaylist.id,
40
+ maxResults,
41
+ });
42
+ return { uploadsPlaylistId: uploadsPlaylist.id, videos: items.data.items ?? [] };
43
+ }
44
+ export async function listPlaylists(client, { maxResults = 25 }) {
45
+ const yt = google.youtube({ version: "v3", auth: client });
46
+ const res = await yt.playlists.list({
47
+ part: ["snippet", "contentDetails"],
48
+ mine: true,
49
+ maxResults,
50
+ });
51
+ return res.data.items ?? [];
52
+ }
53
+ export async function createPlaylist(client, { title, description, privacyStatus = "private" }) {
54
+ const yt = google.youtube({ version: "v3", auth: client });
55
+ const res = await yt.playlists.insert({
56
+ part: ["snippet", "status"],
57
+ requestBody: {
58
+ snippet: { title, description },
59
+ status: { privacyStatus },
60
+ },
61
+ });
62
+ return res.data;
63
+ }
64
+ export async function deletePlaylist(client, { playlistId }) {
65
+ const yt = google.youtube({ version: "v3", auth: client });
66
+ await yt.playlists.delete({ id: playlistId });
67
+ return { deleted: true };
68
+ }
69
+ export async function addVideoToPlaylist(client, { playlistId, videoId }) {
70
+ const yt = google.youtube({ version: "v3", auth: client });
71
+ const res = await yt.playlistItems.insert({
72
+ part: ["snippet"],
73
+ requestBody: {
74
+ snippet: { playlistId, resourceId: { kind: "youtube#video", videoId } },
75
+ },
76
+ });
77
+ return res.data;
78
+ }
79
+ export async function listSubscriptions(client, { maxResults = 50 }) {
80
+ const yt = google.youtube({ version: "v3", auth: client });
81
+ const res = await yt.subscriptions.list({
82
+ part: ["snippet"],
83
+ mine: true,
84
+ maxResults,
85
+ });
86
+ return (res.data.items ?? []).map((item) => ({
87
+ title: item.snippet?.title ?? undefined,
88
+ channelId: item.snippet?.resourceId?.channelId ?? undefined,
89
+ }));
90
+ }
91
+ //# sourceMappingURL=youtube.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"youtube.js","sourceRoot":"","sources":["../../src/services/youtube.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerTools(server: McpServer): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqFzE,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAs7BrD"}