Skip to content

feat(cartridges): add google-drive-mcp (18 tools, supersedes hosted connector)#267

Merged
hyperpolymath merged 3 commits into
mainfrom
feat/google-drive-mcp-cartridge
Jul 1, 2026
Merged

feat(cartridges): add google-drive-mcp (18 tools, supersedes hosted connector)#267
hyperpolymath merged 3 commits into
mainfrom
feat/google-drive-mcp-cartridge

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

What

Adds google-drive-mcp — a fuller, safer Google Drive cartridge than the 8-tool hosted claude.ai connector: 18 tools over Drive API v3 (full query search incl. shared drives, export-aware reading, format export, metadata, folder/recents, permissions + sharing, copy, create-with-content, update, move, rename, reversible trash/restore, revisions, storage quota, shared-drive enumeration).

Why it's "better than the one we have"

hosted connector this cartridge
Tools ~8, read-mostly 18
Search basic full files.list query language + shared drives + pagination
Read text export-aware (Docs→Markdown, Sheets→CSV), size-capped
Write copy/create + update, move, rename, sharing
Delete reversible trash/restore only — permanent delete deliberately absent

Safety by design

No permanent delete. The most destructive operation is a reversible Trash. This is a type-level guarantee in the Idris2 ABI — actionIsDestructive is total with no True case — plus a safety block in cartridge.json.

Verification (Zig 0.15.2 / Idris2 0.8)

  • ffi: builds + 16 unit tests pass
  • adapter: builds + tests pass — modernised the three-protocol adapter and its build.zig to Zig 0.15 (fixed a dangling ffi init call and pre-0.15 net/format APIs; the sibling google-sheets adapter still fails to build)
  • abi: idris2 --check passes, incl. a new 18-constructor round-trip proof
  • integration_test.sh green (also fixed its ABI check to validate by file path rather than silently no-op)
  • cartridge.json / panels JSON valid; mod.js passes node --check

Honest status

available: false / catalogued — implemented, not yet wired to a live backend. Ports 9301–9303 (REST/gRPC/GraphQL), unique in the estate. Cartridge counts in README/package.json left untouched (owner-managed).

🤖 Generated with Claude Code

…onnector)

A fuller, safer Google Drive cartridge than the 8-tool hosted claude.ai
connector: full files.list query search (incl. shared drives), export-aware
content reading (Docs->Markdown, Sheets->CSV), explicit format export,
metadata, folder/recents listing, permissions + sharing, copy, create (with
inline content), update, move, rename, revisions, storage quota, and
shared-drive enumeration -- 18 tools over Drive API v3.

Safety by design: NO permanent delete. The most destructive op is a reversible
trash/restore; files.delete is absent, encoded at the type level in the Idris2
ABI (actionIsDestructive is total with no True case) and in cartridge.json.

Verified (Zig 0.15.2 / Idris2 0.8):
  - ffi: builds + 16 unit tests pass
  - adapter: builds + tests pass (modernised the 3-protocol adapter and its
    build.zig to Zig 0.15; fixed the dangling ffi init call + pre-0.15 net/format
    APIs -- the sibling google-sheets adapter still fails to build)
  - abi: idris2 --check passes, incl. an 18-constructor round-trip proof
  - integration_test.sh green (also fixed its ABI check to validate by file path)
  - cartridge.json / panels JSON valid; mod.js passes node --check

Honest status: available=false / catalogued -- implemented, not yet wired to a
live backend. Ports 9301-9303, unique in the estate.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@hyperpolymath hyperpolymath enabled auto-merge (squash) July 1, 2026 21:40
Comment thread cartridges/google-drive-mcp/mod.js Fixed
@@ -0,0 +1,142 @@
// SPDX-License-Identifier: MPL-2.0
@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 212 issues detected

Severity Count
🔴 Critical 15
🟠 High 130
🟡 Medium 67

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Action actions/checkout@v4 needs attention",
    "type": "unpinned_action",
    "file": "pages-deploy.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in build.yml",
    "type": "missing_timeout_minutes",
    "file": "build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in pages-deploy.yml",
    "type": "missing_timeout_minutes",
    "file": "pages-deploy.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in push-email-notify.yml",
    "type": "missing_timeout_minutes",
    "file": "push-email-notify.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in scorecard-enforcer.yml",
    "type": "missing_timeout_minutes",
    "file": "scorecard-enforcer.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in scorecard-enforcer.yml",
    "type": "scorecard_publish_with_run_step",
    "file": "scorecard-enforcer.yml",
    "action": "split_scorecard_publish_job",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Issue in instant-sync.yml",
    "type": "secret_action_without_presence_gate",
    "file": "instant-sync.yml",
    "action": "peter-evans/repository-dispatch",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Issue in codeql.yml",
    "type": "codeql_missing_actions_language",
    "file": "codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "TypeScript file detected -- banned language",
    "type": "banned_language_file",
    "file": "/home/runner/work/boj-server/boj-server/cartridges/academic-workflow-mcp/adapter/mod.ts",
    "action": "flag",
    "rule_module": "cicd_rules",
    "severity": "critical"
  },
  {
    "reason": "TypeScript file detected -- banned language",
    "type": "banned_language_file",
    "file": "/home/runner/work/boj-server/boj-server/cartridges/ephapax-mcp/adapter/mod.ts",
    "action": "flag",
    "rule_module": "cicd_rules",
    "severity": "critical"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown

🏁 path-claims bench

Commit e63f1f8

Numbers
path-claims bench  (node v22.23.1)

  scenario                                              iters       ms        ns/op          ops/s
  --------------------------------------------------------------------------------------------------------------
  register: 10 active claims, 3 new paths               50000 iters    186 ms      3.72 µs/op    268.8k ops/s
  register: 100 active claims, 3 new paths              20000 iters    323 ms     16.18 µs/op     61.8k ops/s
  register: 1000 active claims, 3 new paths              5000 iters    946 ms    189.39 µs/op      5.3k ops/s
  register: 100 active claims, 20 new paths              5000 iters    365 ms     73.18 µs/op     13.7k ops/s

  pathsOverlap: deep diverge at segment 4             1000000 iters    171 ms     171.0 ns/op     5.85M ops/s
  pathsOverlap: short prefix match                    1000000 iters    136 ms     136.0 ns/op     7.35M ops/s

  refresh (existing claim)                             100000 iters     11 ms     114.8 ns/op     8.71M ops/s
  list (100 active claims)                              50000 iters    284 ms      5.69 µs/op    175.8k ops/s

  (Bench numbers depend on host; use deltas across commits, not absolute values.)

Host-dependent — compare deltas across commits, not absolute values.

hyperpolymath and others added 2 commits July 1, 2026 23:06
…caping or encoding'

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
@hyperpolymath hyperpolymath disabled auto-merge July 1, 2026 22:06
@hyperpolymath hyperpolymath merged commit 2a7fcb1 into main Jul 1, 2026
16 checks passed
@hyperpolymath hyperpolymath deleted the feat/google-drive-mcp-cartridge branch July 1, 2026 22:06
@sonarqubecloud

sonarqubecloud Bot commented Jul 1, 2026

Copy link
Copy Markdown

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 212 issues detected

Severity Count
🔴 Critical 15
🟠 High 130
🟡 Medium 67

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Action actions/checkout@v4 needs attention",
    "type": "unpinned_action",
    "file": "pages-deploy.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in build.yml",
    "type": "missing_timeout_minutes",
    "file": "build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in pages-deploy.yml",
    "type": "missing_timeout_minutes",
    "file": "pages-deploy.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in push-email-notify.yml",
    "type": "missing_timeout_minutes",
    "file": "push-email-notify.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in scorecard-enforcer.yml",
    "type": "missing_timeout_minutes",
    "file": "scorecard-enforcer.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in scorecard-enforcer.yml",
    "type": "scorecard_publish_with_run_step",
    "file": "scorecard-enforcer.yml",
    "action": "split_scorecard_publish_job",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Issue in instant-sync.yml",
    "type": "secret_action_without_presence_gate",
    "file": "instant-sync.yml",
    "action": "peter-evans/repository-dispatch",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Issue in codeql.yml",
    "type": "codeql_missing_actions_language",
    "file": "codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "TypeScript file detected -- banned language",
    "type": "banned_language_file",
    "file": "/home/runner/work/boj-server/boj-server/cartridges/academic-workflow-mcp/adapter/mod.ts",
    "action": "flag",
    "rule_module": "cicd_rules",
    "severity": "critical"
  },
  {
    "reason": "TypeScript file detected -- banned language",
    "type": "banned_language_file",
    "file": "/home/runner/work/boj-server/boj-server/cartridges/ephapax-mcp/adapter/mod.ts",
    "action": "flag",
    "rule_module": "cicd_rules",
    "severity": "critical"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants