gogcli-mcp-classroom 2.0.6 → 2.0.8
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/.claude-plugin/marketplace.json +4 -4
- package/.claude-plugin/plugin.json +2 -2
- package/dist/index.js +39 -5
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/server.json +3 -3
|
@@ -6,16 +6,16 @@
|
|
|
6
6
|
"email": "chris.c.hall@gmail.com"
|
|
7
7
|
},
|
|
8
8
|
"metadata": {
|
|
9
|
-
"description": "Extended Google Classroom for Claude via gogcli
|
|
10
|
-
"version": "2.0.
|
|
9
|
+
"description": "Extended Google Classroom for Claude via gogcli — auth + full Classroom support (courses, rosters, coursework, submissions, announcements, topics, invitations)",
|
|
10
|
+
"version": "2.0.8"
|
|
11
11
|
},
|
|
12
12
|
"plugins": [
|
|
13
13
|
{
|
|
14
14
|
"name": "gogcli-mcp-classroom",
|
|
15
15
|
"displayName": "gogcli (Classroom)",
|
|
16
16
|
"source": "./",
|
|
17
|
-
"description": "Extended Google Classroom for Claude via gogcli
|
|
18
|
-
"version": "2.0.
|
|
17
|
+
"description": "Extended Google Classroom for Claude via gogcli — auth + full Classroom support (courses, rosters, coursework, submissions, announcements, topics, invitations)",
|
|
18
|
+
"version": "2.0.8",
|
|
19
19
|
"author": {
|
|
20
20
|
"name": "Chris Hall"
|
|
21
21
|
},
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gogcli-mcp-classroom",
|
|
3
3
|
"displayName": "gogcli (Classroom)",
|
|
4
|
-
"version": "2.0.
|
|
5
|
-
"description": "Extended Google Classroom for Claude via gogcli
|
|
4
|
+
"version": "2.0.8",
|
|
5
|
+
"description": "Extended Google Classroom for Claude via gogcli — auth + full Classroom support (courses, rosters, coursework, submissions, announcements, topics, invitations)",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Chris Hall",
|
|
8
8
|
"email": "chris.c.hall@gmail.com"
|
package/dist/index.js
CHANGED
|
@@ -8415,8 +8415,8 @@ function emoji() {
|
|
|
8415
8415
|
}
|
|
8416
8416
|
var ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;
|
|
8417
8417
|
var ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;
|
|
8418
|
-
var mac = (
|
|
8419
|
-
const escapedDelim = escapeRegex(
|
|
8418
|
+
var mac = (delimiter2) => {
|
|
8419
|
+
const escapedDelim = escapeRegex(delimiter2 ?? ":");
|
|
8420
8420
|
return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);
|
|
8421
8421
|
};
|
|
8422
8422
|
var cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/;
|
|
@@ -30863,7 +30863,34 @@ var EMPTY_COMPLETION_RESULT = {
|
|
|
30863
30863
|
|
|
30864
30864
|
// ../gogcli-mcp/src/runner.ts
|
|
30865
30865
|
import { spawn } from "node:child_process";
|
|
30866
|
+
import { delimiter } from "node:path";
|
|
30866
30867
|
var TIMEOUT_MS = 3e4;
|
|
30868
|
+
function envOrUndefined(key) {
|
|
30869
|
+
const value = process.env[key];
|
|
30870
|
+
if (!value || value.startsWith("${")) return void 0;
|
|
30871
|
+
return value;
|
|
30872
|
+
}
|
|
30873
|
+
function augmentedPath() {
|
|
30874
|
+
const home = process.env.HOME;
|
|
30875
|
+
const candidates = [
|
|
30876
|
+
process.env.PATH ?? "",
|
|
30877
|
+
"/opt/homebrew/bin",
|
|
30878
|
+
"/usr/local/bin",
|
|
30879
|
+
home ? `${home}/.local/bin` : "",
|
|
30880
|
+
home ? `${home}/go/bin` : ""
|
|
30881
|
+
];
|
|
30882
|
+
const seen = /* @__PURE__ */ new Set();
|
|
30883
|
+
const parts = [];
|
|
30884
|
+
for (const c of candidates) {
|
|
30885
|
+
if (!c) continue;
|
|
30886
|
+
for (const dir of c.split(delimiter)) {
|
|
30887
|
+
if (!dir || seen.has(dir)) continue;
|
|
30888
|
+
seen.add(dir);
|
|
30889
|
+
parts.push(dir);
|
|
30890
|
+
}
|
|
30891
|
+
}
|
|
30892
|
+
return parts.join(delimiter);
|
|
30893
|
+
}
|
|
30867
30894
|
function formatTimeout(ms) {
|
|
30868
30895
|
const seconds = Math.round(ms / 1e3);
|
|
30869
30896
|
if (seconds >= 60) {
|
|
@@ -30874,7 +30901,7 @@ function formatTimeout(ms) {
|
|
|
30874
30901
|
}
|
|
30875
30902
|
async function run(args, options = {}) {
|
|
30876
30903
|
const { account, spawner = spawn, interactive = false, timeout } = options;
|
|
30877
|
-
const effectiveAccount = account ??
|
|
30904
|
+
const effectiveAccount = account ?? envOrUndefined("GOG_ACCOUNT");
|
|
30878
30905
|
const fullArgs = ["--json", "--color=never"];
|
|
30879
30906
|
if (!interactive) {
|
|
30880
30907
|
fullArgs.push("--no-input");
|
|
@@ -30886,7 +30913,8 @@ async function run(args, options = {}) {
|
|
|
30886
30913
|
const effectiveTimeout = timeout ?? TIMEOUT_MS;
|
|
30887
30914
|
return new Promise((resolve, reject) => {
|
|
30888
30915
|
const { GOG_ACCESS_TOKEN: _, ...cleanEnv } = process.env;
|
|
30889
|
-
const
|
|
30916
|
+
const childEnv = { ...cleanEnv, PATH: augmentedPath() };
|
|
30917
|
+
const child = spawner(envOrUndefined("GOG_PATH") ?? "gog", fullArgs, { env: childEnv });
|
|
30890
30918
|
const stdoutChunks = [];
|
|
30891
30919
|
const stderrChunks = [];
|
|
30892
30920
|
let settled = false;
|
|
@@ -30921,6 +30949,12 @@ async function run(args, options = {}) {
|
|
|
30921
30949
|
clearTimeout(timer);
|
|
30922
30950
|
if (settled) return;
|
|
30923
30951
|
settled = true;
|
|
30952
|
+
if (err.code === "ENOENT") {
|
|
30953
|
+
reject(new Error(
|
|
30954
|
+
"gog executable not found. Install gogcli (https://github.com/steipete/gogcli) or set GOG_PATH in your MCP client config to the absolute binary path (run `which gog` in a terminal to find it)."
|
|
30955
|
+
));
|
|
30956
|
+
return;
|
|
30957
|
+
}
|
|
30924
30958
|
reject(err);
|
|
30925
30959
|
});
|
|
30926
30960
|
});
|
|
@@ -31403,7 +31437,7 @@ function registerClassroomTools(server2) {
|
|
|
31403
31437
|
}
|
|
31404
31438
|
|
|
31405
31439
|
// ../gogcli-mcp/src/server.ts
|
|
31406
|
-
var VERSION = true ? "2.0.
|
|
31440
|
+
var VERSION = true ? "2.0.8" : "0.0.0";
|
|
31407
31441
|
function createServer(options) {
|
|
31408
31442
|
return new McpServer({
|
|
31409
31443
|
name: options?.name ?? "gogcli",
|
package/manifest.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"manifest_version": "0.3",
|
|
4
4
|
"name": "gogcli-mcp-classroom",
|
|
5
5
|
"display_name": "gogcli (Classroom)",
|
|
6
|
-
"version": "2.0.
|
|
6
|
+
"version": "2.0.8",
|
|
7
7
|
"description": "Extended Google Classroom for Claude via gogcli — auth + full Classroom support (courses, rosters, coursework, submissions, announcements, topics, invitations)",
|
|
8
8
|
"author": {
|
|
9
9
|
"name": "Chris Hall",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gogcli-mcp-classroom",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.8",
|
|
4
4
|
"mcpName": "io.github.chrischall/gogcli-mcp-classroom",
|
|
5
5
|
"description": "Extended Google Classroom MCP server via gogcli — auth + full Classroom support",
|
|
6
6
|
"author": "Claude Code (AI) <https://www.anthropic.com/claude>",
|
package/server.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
3
|
"name": "io.github.chrischall/gogcli-mcp-classroom",
|
|
4
|
-
"description": "Google Classroom via gogcli for Claude
|
|
4
|
+
"description": "Google Classroom via gogcli for Claude — courses, assignments, submissions, grading",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "https://github.com/chrischall/gogcli-mcp",
|
|
7
7
|
"source": "github",
|
|
8
8
|
"subfolder": "packages/gogcli-mcp-classroom"
|
|
9
9
|
},
|
|
10
|
-
"version": "2.0.
|
|
10
|
+
"version": "2.0.8",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"identifier": "gogcli-mcp-classroom",
|
|
15
|
-
"version": "2.0.
|
|
15
|
+
"version": "2.0.8",
|
|
16
16
|
"transport": {
|
|
17
17
|
"type": "stdio"
|
|
18
18
|
},
|