{"_id":"@eljuliusomg/google-classroom-mcp","_rev":"18-2fb71ed5c313999bd91283e2f4130310","name":"@eljuliusomg/google-classroom-mcp","dist-tags":{"latest":"1.1.5"},"versions":{"1.0.4":{"name":"@eljuliusomg/google-classroom-mcp","version":"1.0.4","keywords":["mcp","google-classroom","n8n","automation"],"author":{"name":"Your Name or Username"},"license":"ISC","_id":"@eljuliusomg/google-classroom-mcp@1.0.4","maintainers":[{"name":"eljuliusomg","email":"jcarri19@xtec.cat"}],"homepage":"https://github.com/your-npm-username/your-repo-name#readme","bugs":{"url":"https://github.com/your-npm-username/your-repo-name/issues"},"bin":{"google-classroom-mcp":"dist/cli.js"},"dist":{"shasum":"776b106e3c4daf696a63031ad0887ef0adfbe36d","tarball":"https://registry.npmjs.org/@eljuliusomg/google-classroom-mcp/-/google-classroom-mcp-1.0.4.tgz","fileCount":5,"integrity":"sha512-KysmawUX9Rx0ijhtXy/PUs56uX1jsFNRk6VanCYx2kNRn8hhWBtuGbI8T5N0Je3jMLyVJ8rsbxy2950xLa0k0Q==","signatures":[{"sig":"MEUCIQCsiKgBZU/Fw/eArvAh1JGAIV6a7XhllZ774SWVdXqG/QIgY3jCrrQul93U9BMKxs3zSvaV4VI7z5g7SPu8GtxCO+s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46068},"main":"dist/cli.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"05656dea0b73e32df47a0c012656b679c6d0dba0","scripts":{"dev":"npm run build && npm run start","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"eljuliusomg","email":"jcarri19@xtec.cat"},"repository":{"url":"git+https://github.com/your-npm-username/your-repo-name.git","type":"git"},"_npmVersion":"11.3.0","description":"MCP Server for Google Classroom, runnable via npx","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.23.8","googleapis":"^137.1.0","zod-to-json-schema":"^3.24.5","google-auth-library":"^9.9.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^20.12.12"},"_npmOperationalInternal":{"tmp":"tmp/google-classroom-mcp_1.0.4_1747565205311_0.9583142619220089","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@eljuliusomg/google-classroom-mcp","version":"1.0.5","keywords":["mcp","google-classroom","n8n","automation"],"author":{"name":"Your Name or Username"},"license":"ISC","_id":"@eljuliusomg/google-classroom-mcp@1.0.5","maintainers":[{"name":"eljuliusomg","email":"jcarri19@xtec.cat"}],"homepage":"https://github.com/your-npm-username/your-repo-name#readme","bugs":{"url":"https://github.com/your-npm-username/your-repo-name/issues"},"bin":{"google-classroom-mcp":"dist/cli.js"},"dist":{"shasum":"f7a0be7806f5b31e6130be150f29566b3661477d","tarball":"https://registry.npmjs.org/@eljuliusomg/google-classroom-mcp/-/google-classroom-mcp-1.0.5.tgz","fileCount":5,"integrity":"sha512-uvwLWHcgzECPH0a7frVFD6OxZ7DeqLkK/5dDPngaFAhgTgA8eSVNEgah3efWJhAySa+IjkcQEopmw+qgI/F5wg==","signatures":[{"sig":"MEYCIQDT7/6mqllxFbQLzTAhSUUsFzl1xxOyeztOjW0fqMf7ywIhAL6cXOof9a5/6Z4hA+73GtDlQJzpvkjsXxbPaOzZ4xoV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47163},"main":"dist/cli.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"05656dea0b73e32df47a0c012656b679c6d0dba0","scripts":{"dev":"npm run build && npm run start","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"eljuliusomg","email":"jcarri19@xtec.cat"},"repository":{"url":"git+https://github.com/your-npm-username/your-repo-name.git","type":"git"},"_npmVersion":"11.3.0","description":"MCP Server for Google Classroom, runnable via npx","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.23.8","googleapis":"^137.1.0","zod-to-json-schema":"^3.24.5","google-auth-library":"^9.9.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^20.12.12"},"_npmOperationalInternal":{"tmp":"tmp/google-classroom-mcp_1.0.5_1747565830481_0.45972577934591485","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@eljuliusomg/google-classroom-mcp","version":"1.0.6","keywords":["mcp","google-classroom","n8n","automation"],"author":{"name":"Your Name or Username"},"license":"ISC","_id":"@eljuliusomg/google-classroom-mcp@1.0.6","maintainers":[{"name":"eljuliusomg","email":"jcarri19@xtec.cat"}],"homepage":"https://github.com/your-npm-username/your-repo-name#readme","bugs":{"url":"https://github.com/your-npm-username/your-repo-name/issues"},"bin":{"google-classroom-mcp":"dist/cli.js"},"dist":{"shasum":"ac440e9f491ccdc455d0707fbb8683b3106b51ad","tarball":"https://registry.npmjs.org/@eljuliusomg/google-classroom-mcp/-/google-classroom-mcp-1.0.6.tgz","fileCount":5,"integrity":"sha512-0frOjblBpi8wD+vXkqW6pJdzmyHoEr78ecoB8QjDFWVXlvy4rPZyYuKmZugAos9JXiGRBaIQG4iu3zUEL02t5w==","signatures":[{"sig":"MEUCIQDl+7yyz8Ya1Zyspj+n0BZtFd7wIUm8QQO9xnnDiZPNIgIgAWb5KZAHpcLXThkJnNbIlztN8avEH5tQx43UNEPXSq4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47266},"main":"dist/cli.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"05656dea0b73e32df47a0c012656b679c6d0dba0","scripts":{"dev":"npm run build && npm run start","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"eljuliusomg","email":"jcarri19@xtec.cat"},"repository":{"url":"git+https://github.com/your-npm-username/your-repo-name.git","type":"git"},"_npmVersion":"11.4.0","description":"MCP Server for Google Classroom, runnable via npx","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.23.8","googleapis":"^137.1.0","zod-to-json-schema":"^3.24.5","google-auth-library":"^9.9.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^20.12.12"},"_npmOperationalInternal":{"tmp":"tmp/google-classroom-mcp_1.0.6_1747591979303_0.9894764263930043","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@eljuliusomg/google-classroom-mcp","version":"1.0.7","keywords":["mcp","google-classroom","n8n","automation"],"author":{"name":"Your Name or Username"},"license":"ISC","_id":"@eljuliusomg/google-classroom-mcp@1.0.7","maintainers":[{"name":"eljuliusomg","email":"jcarri19@xtec.cat"}],"homepage":"https://github.com/your-npm-username/your-repo-name#readme","bugs":{"url":"https://github.com/your-npm-username/your-repo-name/issues"},"bin":{"google-classroom-mcp":"dist/cli.js"},"dist":{"shasum":"2e543f742573967928924fc96ecd3d2470374f95","tarball":"https://registry.npmjs.org/@eljuliusomg/google-classroom-mcp/-/google-classroom-mcp-1.0.7.tgz","fileCount":5,"integrity":"sha512-r5SEedNkt3NSzsyk3IHYZbEUADlWhAL4UhVh0EazEBmn0zD+dtDl48bu/nEjFKtlALV76BHqdyWNOR3p0fF22A==","signatures":[{"sig":"MEQCICxmuiaHT9CiTKBuXP+TjRmW7z6eWHfXwF9Wdht2RljHAiB6fSlQYMKAtLkkTQNP+196VBUROR1dbgILIa79OOT4oQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47495},"main":"dist/cli.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"05656dea0b73e32df47a0c012656b679c6d0dba0","scripts":{"dev":"npm run build && npm run start","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"eljuliusomg","email":"jcarri19@xtec.cat"},"repository":{"url":"git+https://github.com/your-npm-username/your-repo-name.git","type":"git"},"_npmVersion":"11.4.0","description":"MCP Server for Google Classroom, runnable via npx","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.23.8","googleapis":"^137.1.0","zod-to-json-schema":"^3.24.5","google-auth-library":"^9.9.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^20.12.12"},"_npmOperationalInternal":{"tmp":"tmp/google-classroom-mcp_1.0.7_1747592613435_0.6174254506459189","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@eljuliusomg/google-classroom-mcp","version":"1.0.8","keywords":["mcp","google-classroom","n8n","automation"],"author":{"name":"Your Name or Username"},"license":"ISC","_id":"@eljuliusomg/google-classroom-mcp@1.0.8","maintainers":[{"name":"eljuliusomg","email":"jcarri19@xtec.cat"}],"homepage":"https://github.com/your-npm-username/your-repo-name#readme","bugs":{"url":"https://github.com/your-npm-username/your-repo-name/issues"},"bin":{"google-classroom-mcp":"dist/cli.js"},"dist":{"shasum":"837fb397009e218a65fb75d1003f4b7f5b7608a3","tarball":"https://registry.npmjs.org/@eljuliusomg/google-classroom-mcp/-/google-classroom-mcp-1.0.8.tgz","fileCount":5,"integrity":"sha512-L3IXUaHhNg33cQLjzdljrUifmm/KQCj2Giln1KMhZEHXMQbibWjiM7vYy3F0vCwy1aynaNr/QtN7Py2WSEvSXg==","signatures":[{"sig":"MEYCIQDfpW7SBubus78qmgZFGV+eQ22a4ctc+xFnH4NDAMuQ9QIhALXQc/OtG3iXZ6WOFndI4/HLqQR/irUwtKAi02v2ViTk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47163},"main":"dist/cli.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"05656dea0b73e32df47a0c012656b679c6d0dba0","scripts":{"dev":"npm run build && npm run start","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"eljuliusomg","email":"jcarri19@xtec.cat"},"repository":{"url":"git+https://github.com/your-npm-username/your-repo-name.git","type":"git"},"_npmVersion":"11.4.0","description":"MCP Server for Google Classroom, runnable via npx","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.23.8","googleapis":"^137.1.0","zod-to-json-schema":"^3.24.5","google-auth-library":"^9.9.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^20.12.12"},"_npmOperationalInternal":{"tmp":"tmp/google-classroom-mcp_1.0.8_1747592822357_0.11921585961735381","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@eljuliusomg/google-classroom-mcp","version":"1.0.9","keywords":["mcp","google-classroom","n8n","automation"],"author":{"name":"Your Name or Username"},"license":"ISC","_id":"@eljuliusomg/google-classroom-mcp@1.0.9","maintainers":[{"name":"eljuliusomg","email":"jcarri19@xtec.cat"}],"homepage":"https://github.com/your-npm-username/your-repo-name#readme","bugs":{"url":"https://github.com/your-npm-username/your-repo-name/issues"},"bin":{"google-classroom-mcp":"dist/cli.js"},"dist":{"shasum":"2a81f1021e50c0effc2840b920df1bdab75b9295","tarball":"https://registry.npmjs.org/@eljuliusomg/google-classroom-mcp/-/google-classroom-mcp-1.0.9.tgz","fileCount":5,"integrity":"sha512-CstRbf1OenpdN8XmLqPoDjAQttWNHELYuifwDXeLrQAFIQfbO18tVB3TIknExfC64OoxYMfsbqECeEq3pFVZvg==","signatures":[{"sig":"MEUCIQCUzsoldnlYg4E1aI7CIB3MrNoerH8SB3QqbfSIcPpQTwIgAk57G4GbvM8Zqz1/bQyd0DEsA9y3KO2MXREASd5mV4c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46993},"main":"dist/cli.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"653008dc87c3701aef9d1b80dd8048cd0e4fdd06","scripts":{"dev":"npm run build && npm run start","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"eljuliusomg","email":"jcarri19@xtec.cat"},"repository":{"url":"git+https://github.com/your-npm-username/your-repo-name.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP Server for Google Classroom, runnable via npx","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.28","googleapis":"^149.0.0","zod-to-json-schema":"^3.24.5","google-auth-library":"^9.9.0","@modelcontextprotocol/sdk":"^1.12.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^22.15.21"},"_npmOperationalInternal":{"tmp":"tmp/google-classroom-mcp_1.0.9_1748164988576_0.2958546475255053","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@eljuliusomg/google-classroom-mcp","version":"1.1.0","keywords":["mcp","google-classroom","n8n","automation"],"author":{"name":"Your Name or Username"},"license":"ISC","_id":"@eljuliusomg/google-classroom-mcp@1.1.0","maintainers":[{"name":"eljuliusomg","email":"jcarri19@xtec.cat"}],"homepage":"https://github.com/your-npm-username/your-repo-name#readme","bugs":{"url":"https://github.com/your-npm-username/your-repo-name/issues"},"bin":{"google-classroom-mcp":"dist/cli.js"},"dist":{"shasum":"42a4563ef169ca245e3aff2caff4597c344d1494","tarball":"https://registry.npmjs.org/@eljuliusomg/google-classroom-mcp/-/google-classroom-mcp-1.1.0.tgz","fileCount":5,"integrity":"sha512-cViE80PTbVFeVyDhsc2k8QgqZQ6t4JOVhS6LE4PIRhjmlrM9TkvmKvN7eAaADROfyxkmC6Xlw74tEr/v1XQQ6A==","signatures":[{"sig":"MEYCIQDszWxCUCHo7LT07NfymMAuJFtJQxsY0GNy2k3LXaHENAIhAKE1nzZqINx8jfC5Gk+MnnZpNmZ2yLTBsDbWstOEV+Ms","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56911},"main":"dist/cli.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"19281659ee5cf54f37fad79b8b2c480317bc7167","scripts":{"dev":"npm run build && npm run start","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"eljuliusomg","email":"jcarri19@xtec.cat"},"repository":{"url":"git+https://github.com/your-npm-username/your-repo-name.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP Server for Google Classroom, runnable via npx","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.28","googleapis":"^149.0.0","zod-to-json-schema":"^3.24.5","google-auth-library":"^9.9.0","@modelcontextprotocol/sdk":"^1.12.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^22.15.21"},"_npmOperationalInternal":{"tmp":"tmp/google-classroom-mcp_1.1.0_1748968139940_0.4740012259079698","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@eljuliusomg/google-classroom-mcp","version":"1.1.1","keywords":["mcp","google-classroom","n8n","automation"],"author":{"name":"Your Name or Username"},"license":"ISC","_id":"@eljuliusomg/google-classroom-mcp@1.1.1","maintainers":[{"name":"eljuliusomg","email":"jcarri19@xtec.cat"}],"homepage":"https://github.com/your-npm-username/your-repo-name#readme","bugs":{"url":"https://github.com/your-npm-username/your-repo-name/issues"},"bin":{"google-classroom-mcp":"dist/cli.js"},"dist":{"shasum":"ecd5210ee26d82cdb82b61eba5a1d2b28c803134","tarball":"https://registry.npmjs.org/@eljuliusomg/google-classroom-mcp/-/google-classroom-mcp-1.1.1.tgz","fileCount":5,"integrity":"sha512-ZPpOMwNgixWZOxtj8xXfjuyNmlgfIs9d5aJO9D7xqioQEBRyylNNmLgD76Xx8c48ifyfBaHJvBA3HIxDHmedag==","signatures":[{"sig":"MEUCIQDyWcrw5flKB3va94k8gzIddDO+d20j8OXORsoezV6TtgIgP01+lIpYHhaFHFloAJf4yAlA1/WhvNAeGYuwOd5Xr7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57740},"main":"dist/cli.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"70b29469310218b7ac49a2f591e23779ef7c6033","scripts":{"dev":"npm run build && npm run start","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"eljuliusomg","actor":{"name":"eljuliusomg","type":"user","email":"jcarri19@xtec.cat"},"email":"jcarri19@xtec.cat"},"repository":{"url":"git+https://github.com/your-npm-username/your-repo-name.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP Server for Google Classroom, runnable via npx","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.28","googleapis":"^149.0.0","zod-to-json-schema":"^3.24.5","google-auth-library":"^9.9.0","@modelcontextprotocol/sdk":"^1.12.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^22.15.21"},"_npmOperationalInternal":{"tmp":"tmp/google-classroom-mcp_1.1.1_1751739432988_0.5702089943149815","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@eljuliusomg/google-classroom-mcp","version":"1.1.2","keywords":["mcp","google-classroom","n8n","automation"],"author":{"name":"Your Name or Username"},"license":"ISC","_id":"@eljuliusomg/google-classroom-mcp@1.1.2","maintainers":[{"name":"eljuliusomg","email":"jcarri19@xtec.cat"}],"homepage":"https://github.com/your-npm-username/your-repo-name#readme","bugs":{"url":"https://github.com/your-npm-username/your-repo-name/issues"},"bin":{"google-classroom-mcp":"dist/cli.js"},"dist":{"shasum":"d1f1bd26ac973ba3efd8dd8744dbe773652f57a0","tarball":"https://registry.npmjs.org/@eljuliusomg/google-classroom-mcp/-/google-classroom-mcp-1.1.2.tgz","fileCount":5,"integrity":"sha512-iTrIj1YVJgP+gjMeHsGjJt56T6hmlmwsj5WRhNccDz5pjFFGSSUnEl3q7vqXMJf7dfiNQAAY7mcuA6bmuAymeA==","signatures":[{"sig":"MEQCICdUSVYTGlnSuu6f4B8qTodJ5G7qAf94qdLKemtqwlJ9AiB3e4N1GqsqWC5Ux0HLNoZ5e7NHwqZHkbRJh41DHSKmYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63142},"main":"dist/cli.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"739b2fbd3e4ba702553a09c9dd77912fd71d7644","scripts":{"dev":"npm run build && npm run start","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"eljuliusomg","actor":{"name":"eljuliusomg","type":"user","email":"jcarri19@xtec.cat"},"email":"jcarri19@xtec.cat"},"repository":{"url":"git+https://github.com/your-npm-username/your-repo-name.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP Server for Google Classroom, runnable via npx","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.28","googleapis":"^149.0.0","zod-to-json-schema":"^3.24.5","google-auth-library":"^9.9.0","@modelcontextprotocol/sdk":"^1.12.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^22.15.21"},"_npmOperationalInternal":{"tmp":"tmp/google-classroom-mcp_1.1.2_1751813971022_0.8819218699722593","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@eljuliusomg/google-classroom-mcp","version":"1.1.3","keywords":["mcp","google-classroom","n8n","automation"],"author":{"name":"Your Name or Username"},"license":"ISC","_id":"@eljuliusomg/google-classroom-mcp@1.1.3","maintainers":[{"name":"eljuliusomg","email":"jcarri19@xtec.cat"}],"homepage":"https://github.com/your-npm-username/your-repo-name#readme","bugs":{"url":"https://github.com/your-npm-username/your-repo-name/issues"},"bin":{"google-classroom-mcp":"dist/cli.js"},"dist":{"shasum":"2212d40aa254eb22c5743046dfce9807cc8205dd","tarball":"https://registry.npmjs.org/@eljuliusomg/google-classroom-mcp/-/google-classroom-mcp-1.1.3.tgz","fileCount":5,"integrity":"sha512-krykitSJ72N8zO9zBAJyr20bssM19Lk4ZPuamZTysfKM8yHXytrCQ8ZYiKbiha9S5SG32uBC+qAlGe2DhsTz+A==","signatures":[{"sig":"MEQCIDAXVKwv9PrWXq36uE0WINvxF/ced1ep0R2J6/zQZsr2AiA9qwKNv6zYNRN6cjarGR8jy5IfyxnzEhQ2EGZDlGcKew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63020},"main":"dist/cli.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"ccc88b49a2e440e104ca1fbaa0b2570d8a9a9e7d","scripts":{"dev":"npm run build && npm run start","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"eljuliusomg","actor":{"name":"eljuliusomg","type":"user","email":"jcarri19@xtec.cat"},"email":"jcarri19@xtec.cat"},"repository":{"url":"git+https://github.com/your-npm-username/your-repo-name.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP Server for Google Classroom, runnable via npx","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.28","googleapis":"^149.0.0","zod-to-json-schema":"^3.24.5","google-auth-library":"^9.9.0","@modelcontextprotocol/sdk":"^1.12.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^22.15.21"},"_npmOperationalInternal":{"tmp":"tmp/google-classroom-mcp_1.1.3_1751816566203_0.9680022515299491","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@eljuliusomg/google-classroom-mcp","version":"1.1.4","keywords":["mcp","google-classroom","n8n","automation"],"author":{"name":"Your Name or Username"},"license":"ISC","_id":"@eljuliusomg/google-classroom-mcp@1.1.4","maintainers":[{"name":"eljuliusomg","email":"jcarri19@xtec.cat"}],"homepage":"https://github.com/your-npm-username/your-repo-name#readme","bugs":{"url":"https://github.com/your-npm-username/your-repo-name/issues"},"bin":{"google-classroom-mcp":"dist/cli.js"},"dist":{"shasum":"8e3eadf602f308be59d68fcf693a013d799342a6","tarball":"https://registry.npmjs.org/@eljuliusomg/google-classroom-mcp/-/google-classroom-mcp-1.1.4.tgz","fileCount":5,"integrity":"sha512-J5FotmwChK9WC4JpxvhkQ+R0MJsF8aXOW06PP3haFn3HknVS7YvNsb1SU3L+BrsHO9xIniwZoH/6111e/jSk6Q==","signatures":[{"sig":"MEUCIQD5qT5akktzEgB/uxuRUi62Jpy0FfPlmo7Z4KIe/Mk4/wIgGGiZbRx6eQbCzzf09amCjLWgiKQ07/Nsa/NkS1y4pgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63025},"main":"dist/cli.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"ccc88b49a2e440e104ca1fbaa0b2570d8a9a9e7d","scripts":{"dev":"npm run build && npm run start","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","start":"node dist/cli.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"eljuliusomg","email":"jcarri19@xtec.cat"},"repository":{"url":"git+https://github.com/your-npm-username/your-repo-name.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP Server for Google Classroom, runnable via npx","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.28","googleapis":"^149.0.0","zod-to-json-schema":"^3.24.5","google-auth-library":"^9.9.0","@modelcontextprotocol/sdk":"^1.12.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^22.15.21"},"_npmOperationalInternal":{"tmp":"tmp/google-classroom-mcp_1.1.4_1753280110132_0.7579705583741958","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@eljuliusomg/google-classroom-mcp","version":"1.1.5","description":"MCP Server for Google Classroom, runnable via npx","type":"module","main":"dist/cli.js","bin":{"google-classroom-mcp":"dist/cli.js"},"scripts":{"build":"tsc","start":"node dist/cli.js","dev":"npm run build && npm run start","test":"echo \"Error: no test specified\" && exit 1","prepublishOnly":"npm run build"},"keywords":["mcp","google-classroom","n8n","automation"],"author":{"name":"Your Name or Username"},"license":"ISC","dependencies":{"@modelcontextprotocol/sdk":"^1.12.0","google-auth-library":"^9.9.0","googleapis":"^149.0.0","zod":"^3.25.28","zod-to-json-schema":"^3.24.5"},"devDependencies":{"@types/node":"^22.15.21","typescript":"^5.4.5"},"repository":{"type":"git","url":"git+https://github.com/your-npm-username/your-repo-name.git"},"engines":{"node":">=18.0.0"},"_id":"@eljuliusomg/google-classroom-mcp@1.1.5","gitHead":"13c090f158172af150be8b093e66410459fa7879","bugs":{"url":"https://github.com/your-npm-username/your-repo-name/issues"},"homepage":"https://github.com/your-npm-username/your-repo-name#readme","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-Gg7DdzjfDCYjbbiFsviQpKSOh4npQoFzC942pXZ0BLJdDz8CU/eFv0Rh4Ix5aJFgjgffb+7tURTCg98Ae74a/Q==","shasum":"e1c47229c49b35d823f98265028ba9e6bb3ad5b4","tarball":"https://registry.npmjs.org/@eljuliusomg/google-classroom-mcp/-/google-classroom-mcp-1.1.5.tgz","fileCount":5,"unpackedSize":98241,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDvrfD5tsvlss7esJvS7K2nhHuuiVW5XQ2WpemxR7/2IwIhAMlezA34M66Q91DcxOhuYWbcpV3HakwY2CkZYhFLyobr"}]},"_npmUser":{"name":"eljuliusomg","email":"jcarri19@xtec.cat"},"directories":{},"maintainers":[{"name":"eljuliusomg","email":"jcarri19@xtec.cat"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/google-classroom-mcp_1.1.5_1755618513832_0.33458356738546113"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-18T10:46:45.245Z","modified":"2025-08-19T15:48:34.193Z","1.0.0":"2025-05-18T07:09:20.014Z","1.0.1":"2025-05-18T08:53:55.140Z","1.0.2":"2025-05-18T09:10:48.406Z","1.0.3":"2025-05-18T10:24:07.725Z","1.0.4":"2025-05-18T10:46:45.508Z","1.0.5":"2025-05-18T10:57:10.700Z","1.0.6":"2025-05-18T18:12:59.507Z","1.0.7":"2025-05-18T18:23:33.617Z","1.0.8":"2025-05-18T18:27:02.576Z","1.0.9":"2025-05-25T09:23:08.806Z","1.1.0":"2025-06-03T16:29:00.139Z","1.1.1":"2025-07-05T18:17:13.204Z","1.1.2":"2025-07-06T14:59:31.223Z","1.1.3":"2025-07-06T15:42:46.400Z","1.1.4":"2025-07-23T14:15:10.332Z","1.1.5":"2025-08-19T15:48:34.048Z"},"bugs":{"url":"https://github.com/your-npm-username/your-repo-name/issues"},"author":{"name":"Your Name or Username"},"license":"ISC","homepage":"https://github.com/your-npm-username/your-repo-name#readme","keywords":["mcp","google-classroom","n8n","automation"],"repository":{"type":"git","url":"git+https://github.com/your-npm-username/your-repo-name.git"},"description":"MCP Server for Google Classroom, runnable via npx","maintainers":[{"name":"eljuliusomg","email":"jcarri19@xtec.cat"}],"readme":"# Google Classroom MCP Server\r\n\r\nA Model Context Protocol (MCP) server for Google Classroom integration, designed to be run via `npx` in environments like n8n, claude desktop, Cline... . This server enables AI assistants to manage Google Classroom entities such as courses, announcements, topics, and coursework.\r\n\r\n## Features\r\n\r\n*   List Google Classroom courses.\r\n*   Create announcements in a specified course, now supporting attachments.\r\n*   Create topics within a course.\r\n*   Create coursework (assignments) with due dates, descriptions, and now supporting attachments.\r\n*   Create coursework material, now supporting attachments.\r\n*   Retrieve comprehensive details for a specific course (topics, coursework, materials, students).\r\n*   Secure OAuth2 authentication using pre-generated refresh tokens.\r\n\r\n## Setup for `npx` Execution (e.g., in n8n Cloud)\r\n\r\nTo use this MCP server when hosted (e.g., via `npx` in n8n cloud), you need to provide Google Cloud credentials and a pre-generated refresh token as environment variables.\r\n\r\n**1. Create a Google Cloud Project and Obtain OAuth 2.0 Credentials:**\r\n\r\n   a. **Create/Select a Google Cloud Project:**\r\n      - Go to the [Google Cloud Console](https://console.cloud.google.com/).\r\n      - Create a new project or select an existing one.\r\n\r\n   b. **Enable the Google Classroom API:**\r\n      - In your Google Cloud Project, navigate to \"APIs & Services\" > \"Library\".\r\n      - Search for \"Google Classroom API\" and \"Google Drive API\" and enable them.\r\n\r\n   c. **Create OAuth 2.0 Client ID:**\r\n      - Go to \"APIs & Services\" > \"Credentials\".\r\n      - Click \"+ CREATE CREDENTIALS\" > \"OAuth client ID\".\r\n      - For \"Application type\", select \"Web application\" (this type is suitable for OAuth playground [Guide For OAuth playground](https://developers.google.com/google-ads/api/docs/oauth/playground?hl=en)).\r\n      - Give it a name (e.g., \"Classroom MCP \").\r\n      - **Important:** Under Authorized redirect URIs, add a line with: https://developers.google.com/oauthplayground\r\n      - Click \"CREATE\".\r\n      - **Also Important:** Copy the **Client ID** and **Client Secret**. You will need these for the next step and for environment variables.\r\n        - `YOUR_GOOGLE_CLIENT_ID`\r\n        - `YOUR_GOOGLE_CLIENT_SECRET`\r\n\r\n**2. Obtain a Refresh Token using OAuth 2.0 Playground:**\r\n\r\n   a. Go to the [Google OAuth 2.0 Playground](https://developers.google.com/oauthplayground/).\r\n\r\n   b. Click the gear icon (OAuth 2.0 configuration) in the top right.\r\n      - Check the box \"Use your own OAuth credentials\".\r\n      - Enter the `YOUR_GOOGLE_CLIENT_ID` into \"OAuth Client ID\".\r\n      - Enter the `YOUR_GOOGLE_CLIENT_SECRET` into \"OAuth Client secret\".\r\n      - Click \"Close\".\r\n\r\n   c. **Authorize APIs (Step 1 on Playground):**\r\n      - In the \"Input your own scopes\" text box at the bottom of the list, paste all the following Google Classroom API scopes, separated by spaces:\r\n        ```\r\n        https://www.googleapis.com/auth/classroom.courses.readonly https://www.googleapis.com/auth/classroom.announcements https://www.googleapis.com/auth/classroom.rosters.readonly https://www.googleapis.com/auth/classroom.profile.emails https://www.googleapis.com/auth/classroom.coursework.students https://www.googleapis.com/auth/classroom.courseworkmaterials https://www.googleapis.com/auth/classroom.topics https://www.googleapis.com/auth/classroom.student-submissions.students.readonly https://www.googleapis.com/auth/classroom.coursework.me https://www.googleapis.com/auth/classroom.addons.teacher https://www.googleapis.com/auth/drive\r\n        ```\r\n      - Click the \"Authorize APIs\" button.\r\n      - Sign in with the Google account that has access to the Google Classroom(s) you want to manage.\r\n      - Grant the requested permissions. You will be redirected back to the Playground.\r\n\r\n   d. **Exchange Authorization Code for Tokens (Step 2 on Playground):**\r\n      - You should see an \"Authorization code\" filled in.\r\n      - Click the \"Exchange authorization code for tokens\" button.\r\n      - On the right side (Step 3), you will now see a **Refresh token** and an Access token.\r\n      - **Important:** Copy the **Refresh token**. This is `YOUR_GOOGLE_CLASSROOM_REFRESH_TOKEN`.\r\n      - **Note:** If you add new scopes later (e.g., for new tools), you will need to repeat this authorization process to grant the application the new permissions.\r\n\r\n**3. Configure Environment Variables in Your Execution Environment (e.g., n8n Cloud):**\r\n\r\n   When setting up the MCP client node in n8n (or any other environment that will execute this MCP via `npx`), you need to configure the following environment variables:\r\n\r\n   - `GOOGLE_CLIENT_ID`: Your OAuth Client ID from step 1c.\r\n   - `GOOGLE_CLIENT_SECRET`: Your OAuth Client Secret from step 1c.\r\n   - `GOOGLE_CLASSROOM_REFRESH_TOKEN`: The Refresh Token you obtained from the OAuth 2.0 Playground in step 2d.\r\n   - `DOWNLOAD_DIR`: The desired directory to download attatchments. For example, \"C:\\\\Users\\\\Admin\\\\Desktop\"\r\n\r\n**4. Configure the MCP Client Node in n8n:**\r\n\r\n   - **Command:** `npx`\r\n   - **Arguments:** `[@your-npm-username/google-classroom-mcp]` (Replace with your actual published package name)\r\n   - **Environment Variables:** Set the three variables listed above.\r\n   - **NOTE**: Maybe it doesnt work in n8n. If you host it locally in the args you should put command \"node\" instead of \"npx\" and the path to the clonned repo.\r\n\r\n## Provided MCP Tools\r\n\r\nThis server provides the following tools for interacting with Google Classroom:\r\n\r\n* **`list_courses`**: Lists all Google Classroom courses the authenticated user has\r\n  access to.\r\n* **`create_announcement`**: Creates an announcement in a specified course.\r\n    * Inputs: `courseId`, `text`, `materials` (optional)\r\n* **`create_topic`**: Creates a new topic in a specified course.\r\n    * Inputs: `courseId`, `name`\r\n* **`create_coursework`**: Creates new coursework (e.g., an assignment).\r\n    * Inputs: `courseId`, `title`, `description` (optional), `materials` (optional),\r\n      `state` (optional), `dueDate` (optional), `dueTime` (optional), `maxPoints` (optional),\r\n      `workType` (optional), `topicId` (optional), `individualStudentsOptions` (optional), `assigneeMode` (optional).\r\n* **`create_courseworkmaterial`**: Creates new coursework material in a specified\r\n  Google Classroom course.\r\n    * Inputs: `courseId`, `title`, `description` (optional), `materials` (optional),\r\n      `state` (optional), `topicId` (optional).\r\n* **`edit_element`**: Edits an existing announcement, topic, coursework, coursework material.\r\n    * Inputs: `courseId`, `entityType` (announcement, topic, coursework, courseworkmaterial, announcement_attachment, coursework_attachment, courseworkmaterial_attachment), `entityId`, `attachmentId` (required for attachment entity types), `fieldsToUpdate` (object of fields to update).\r\n* **`get_course_details`**: Retrieves details for a specific course.\r\n    * Inputs: `courseId`\r\n    * Outputs: `topics`, `courseWork`, `courseWorkMaterials`, `students`,\r\n      `lastAnnouncementId`, `lastAnnouncementText`.\r\n* **`get_coursework_details`**: Retrieves details for a specific coursework, including submissions, rubrics, and general information.\r\n    * Inputs: `courseId`, `courseWorkId`, `studentId` (optional)\r\n* **`download_attachments`**: Downloads one or more Classroom attachments by their\r\n  Drive file IDs. This tool is now smarter: it will download binary files (like images, zip\r\n  files) directly, but it will automatically export Google Workspace files (Docs, Sheets,\r\n  Slides) to PDF format, ensuring you always get a usable file.\r\n    * Inputs: `fileIds` (array of strings), `downloadPath` (optional)\r\n* **`read_attachment`**: Reads the content of a Google Workspace file (Doc, Sheet,\r\n  Slide) by exporting it as plain text. For other files, it returns a message indicating\r\n  they should be downloaded. This is the most direct way to get the content of a document\r\n  without saving it locally.\r\n        Inputs:`fileId` (string)\r\n* **`add_comment`**: Adds a comment to a specific file in Google Drive.\r\n    * Inputs: `fileId` (string), `content` (string), `quotedText` (string, optional)\r\n\r\n## Typical Workflow Example\r\n\r\n\r\nHere is a common workflow for interacting with a student's submitted assignment:\r\n\r\n1.  **Discover Files**: Use the `get_coursework_details` tool to see what files a student has submitted for an assignment. This will give you the `fileId` and `mimeType` for each attachment.\r\n    ```json\r\n    {\r\n      \"tool_name\": \"get_coursework_details\",\r\n      \"arguments\": {\r\n        \"courseId\": \"788745376729\",\r\n        \"courseWorkId\": \"788745351727\"\r\n      }\r\n    }\r\n    ```\r\n2.  **Read Content**: If an attachment is a Google Doc (`application/vnd.google-apps.document`), use the `read_attachment` tool with its `fileId` to read its content directly.\r\n    ```json\r\n    {\r\n      \"tool_name\": \"read_attachment\",\r\n      \"arguments\": {\r\n        \"fileId\": \"1VjyrnSSNsgxgicVXuxXHibKIGdHFadI2Oh_i_2Hz_lA\"\r\n      }\r\n    }\r\n    ```\r\n3.  **Download a Local Copy**: To get a local PDF copy of the same file, use the `download_attachments` tool.\r\n    ```json\r\n    {\r\n      \"tool_name\": \"download_attachments\",\r\n      \"arguments\": {\r\n        \"fileIds\": [\"1VjyrnSSNsgxgicVXuxXHibKIGdHFadI2Oh_i_2Hz_lA\"]\r\n      }\r\n    }\r\n    ```\r\n4.  **Add a Comment**: After reviewing the content, add a comment directly to the student's file.\r\n    ```json\r\n    {\r\n      \"tool_name\": \"add_comment\",\r\n      \"arguments\": {\r\n        \"fileId\": \"1VjyrnSSNsgxgicVXuxXHibKIGdHFadI2Oh_i_2Hz_lA\",\r\n        \"content\": \"Great job on the introduction! Please remember to cite your sources in the next draft.\",\r\n        \"quotedText\": \"Hi this is a test\"\r\n      }\r\n    }\r\n    ```\r\n\r\n## Development\r\n\r\n(Add details about local development, building, etc., if you wish to keep the interactive auth for local testing)\r\n\r\n```bash\r\n# Install dependencies\r\nnpm install\r\n\r\n# Build the TypeScript code\r\nnpm run build\r\n\r\n# Run locally (if you adapt cli.ts or server.ts to support local token generation/use)\r\n# npm start\r\n```\r\n\r\n## Security Notes\r\n\r\n-   Keep your Google API Client ID, Client Secret, and especially the Refresh Token secure.\r\n-   The Refresh Token provides long-term access to the authorized Google Classroom data. Treat it like a password.\r\n-   Do not commit these credentials directly into your version control. Use environment variables as described.","readmeFilename":"README.md"}