gogcli-mcp 1.0.4 → 1.0.6

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 (49) hide show
  1. package/README.md +23 -125
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +5342 -5394
  5. package/dist/lib.d.ts +6 -0
  6. package/dist/lib.d.ts.map +1 -0
  7. package/dist/lib.js +30837 -0
  8. package/dist/runner.d.ts +12 -0
  9. package/dist/runner.d.ts.map +1 -0
  10. package/dist/server.d.ts +7 -0
  11. package/dist/server.d.ts.map +1 -0
  12. package/dist/tools/auth.d.ts +3 -0
  13. package/dist/tools/auth.d.ts.map +1 -0
  14. package/dist/tools/calendar.d.ts +3 -0
  15. package/dist/tools/calendar.d.ts.map +1 -0
  16. package/dist/tools/contacts.d.ts +3 -0
  17. package/dist/tools/contacts.d.ts.map +1 -0
  18. package/dist/tools/docs.d.ts +3 -0
  19. package/dist/tools/docs.d.ts.map +1 -0
  20. package/dist/tools/drive.d.ts +3 -0
  21. package/dist/tools/drive.d.ts.map +1 -0
  22. package/dist/tools/gmail.d.ts +3 -0
  23. package/dist/tools/gmail.d.ts.map +1 -0
  24. package/dist/tools/sheets.d.ts +3 -0
  25. package/dist/tools/sheets.d.ts.map +1 -0
  26. package/dist/tools/tasks.d.ts +3 -0
  27. package/dist/tools/tasks.d.ts.map +1 -0
  28. package/dist/tools/utils.d.ts +14 -0
  29. package/dist/tools/utils.d.ts.map +1 -0
  30. package/manifest.json +2 -10
  31. package/package.json +6 -2
  32. package/src/index.ts +2 -23
  33. package/src/lib.ts +5 -0
  34. package/src/runner.ts +4 -1
  35. package/src/server.ts +31 -0
  36. package/src/tools/docs.ts +10 -76
  37. package/tests/runner.test.ts +17 -0
  38. package/tests/tools/docs.test.ts +19 -163
  39. package/tsconfig.json +2 -8
  40. package/.github/workflows/ci.yml +0 -22
  41. package/.github/workflows/release.yml +0 -76
  42. package/.github/workflows/tag-and-bump.yml +0 -67
  43. package/.mcp.json +0 -14
  44. package/CLAUDE.md +0 -61
  45. package/docs/superpowers/plans/2026-04-12-gogcli-mcp.md +0 -758
  46. package/docs/superpowers/plans/2026-04-13-browser-auth.md +0 -450
  47. package/docs/superpowers/specs/2026-04-12-gogcli-mcp-design.md +0 -102
  48. package/docs/superpowers/specs/2026-04-13-browser-auth-design.md +0 -88
  49. package/gogcli-mcp-1.0.4.skill +0 -0
@@ -1,76 +0,0 @@
1
- name: Release
2
-
3
- on:
4
- push:
5
- tags:
6
- - 'v*'
7
-
8
- jobs:
9
- ci:
10
- uses: ./.github/workflows/ci.yml
11
-
12
- release:
13
- needs: ci
14
- runs-on: ubuntu-latest
15
- permissions:
16
- contents: write
17
- id-token: write
18
-
19
- steps:
20
- - uses: actions/checkout@v6.0.2
21
-
22
- - uses: actions/setup-node@v6.3.0
23
- with:
24
- node-version: 24
25
- cache: npm
26
- registry-url: https://registry.npmjs.org
27
-
28
- # Strip always-auth from .npmrc (set by setup-node, deprecated in npm 11)
29
- - run: sed -i '/always-auth/d' "$NPM_CONFIG_USERCONFIG"
30
-
31
- - run: npm ci
32
- - run: npm run build
33
-
34
- - name: Extract version
35
- run: |
36
- VERSION=$(node -p "require('./package.json').version")
37
- echo "VERSION=${VERSION}" >> "$GITHUB_ENV"
38
-
39
- # Package the .skill file
40
- - name: Package skill
41
- run: |
42
- python3 - <<'EOF'
43
- import zipfile, pathlib, os
44
-
45
- version = os.environ["VERSION"]
46
- skill_name = "gogcli-mcp"
47
- out = pathlib.Path(f"{skill_name}-{version}.skill")
48
-
49
- with zipfile.ZipFile(out, "w", zipfile.ZIP_DEFLATED) as zf:
50
- zf.write(pathlib.Path("SKILL.md"), f"{skill_name}/SKILL.md")
51
-
52
- print(f"Packaged {out} ({out.stat().st_size} bytes)")
53
- EOF
54
-
55
- # Sync manifest.json version from package.json and build .mcpb
56
- - name: Build .mcpb bundle
57
- run: |
58
- node -e "
59
- const fs = require('fs');
60
- const m = JSON.parse(fs.readFileSync('manifest.json', 'utf8'));
61
- m.version = '$VERSION';
62
- fs.writeFileSync('manifest.json', JSON.stringify(m, null, 2) + '\n');
63
- "
64
- npx @anthropic-ai/mcpb pack
65
- mv gogcli-mcp.mcpb "gogcli-mcp-${VERSION}.mcpb"
66
-
67
- - name: Publish to npm
68
- run: npm publish --access public --provenance
69
-
70
- - name: Create GitHub Release
71
- uses: softprops/action-gh-release@v3.0.0
72
- with:
73
- files: |
74
- gogcli-mcp-${{ env.VERSION }}.skill
75
- gogcli-mcp-${{ env.VERSION }}.mcpb
76
- generate_release_notes: true
@@ -1,67 +0,0 @@
1
- name: Tag & Bump
2
-
3
- on:
4
- workflow_dispatch:
5
-
6
- jobs:
7
- ci:
8
- uses: ./.github/workflows/ci.yml
9
-
10
- tag-and-bump:
11
- needs: ci
12
- runs-on: ubuntu-latest
13
- permissions:
14
- contents: write
15
-
16
- steps:
17
- - uses: actions/checkout@v6.0.2
18
- with:
19
- # PAT required — GITHUB_TOKEN pushes don't trigger other workflows
20
- token: ${{ secrets.RELEASE_PAT }}
21
-
22
- - uses: actions/setup-node@v6.3.0
23
- with:
24
- node-version: 22
25
- cache: npm
26
-
27
- - run: npm ci
28
-
29
- - name: Configure git
30
- run: |
31
- git config user.name "github-actions[bot]"
32
- git config user.email "github-actions[bot]@users.noreply.github.com"
33
-
34
- # Tag the current commit with the current version
35
- - name: Tag current version
36
- run: |
37
- CURRENT=$(node -p "require('./package.json').version")
38
- git tag "v${CURRENT}"
39
- echo "TAGGED_VERSION=${CURRENT}" >> "$GITHUB_ENV"
40
-
41
- # Bump patch version in all four locations
42
- - name: Bump patch version
43
- run: |
44
- npm version patch --no-git-tag-version
45
- NEXT=$(node -p "require('./package.json').version")
46
- echo "NEXT_VERSION=${NEXT}" >> "$GITHUB_ENV"
47
-
48
- # src/index.ts — MCP server version
49
- sed -i "s/version: '${TAGGED_VERSION}'/version: '${NEXT}'/" src/index.ts
50
-
51
- # manifest.json
52
- node -e "
53
- const fs = require('fs');
54
- const m = JSON.parse(fs.readFileSync('manifest.json', 'utf8'));
55
- m.version = '${NEXT}';
56
- fs.writeFileSync('manifest.json', JSON.stringify(m, null, 2) + '\n');
57
- "
58
-
59
- - name: Rebuild
60
- run: npm run build
61
-
62
- - name: Commit and push
63
- run: |
64
- git add -A
65
- git commit -m "chore: bump version to v${NEXT_VERSION}"
66
- git push origin main
67
- git push origin "v${TAGGED_VERSION}"
package/.mcp.json DELETED
@@ -1,14 +0,0 @@
1
- {
2
- "mcpServers": {
3
- "gogcli": {
4
- "command": "node",
5
- "args": ["dist/index.js"],
6
- "cwd": "/Users/chris/git/gogcli-mcp",
7
- "env": {
8
- "GOG_ACCOUNT": "${GOG_ACCOUNT}",
9
- "GOG_PATH": "${GOG_PATH}",
10
- "GOG_ACCESS_TOKEN": "${GOG_ACCESS_TOKEN}"
11
- }
12
- }
13
- }
14
- }
package/CLAUDE.md DELETED
@@ -1,61 +0,0 @@
1
- # gogcli-mcp
2
-
3
- MCP server wrapping [gogcli](https://github.com/steipete/gogcli) — provides Claude with read/write access to Google Sheets, with a scaffold for Gmail, Calendar, Drive, and more.
4
-
5
- ## Build & Test
6
-
7
- ```bash
8
- npm run build # tsc --noEmit (type check) + esbuild bundle → dist/index.js
9
- npm test # vitest run (all tests)
10
- npm run test:watch # vitest in watch mode
11
- npm run test:coverage # vitest with 100% coverage enforcement
12
- npm run typecheck # tsc --noEmit only
13
- ```
14
-
15
- ## Versioning
16
-
17
- Version appears in FOUR places — all must match:
18
-
19
- 1. `package.json` → `"version"`
20
- 2. `package-lock.json` → run `npm install --package-lock-only` after changing package.json
21
- 3. `src/index.ts` → `McpServer` constructor `version` field
22
- 4. `manifest.json` → `"version"`
23
-
24
- ### Release workflow
25
-
26
- Main is always one version ahead of the latest tag. To release, run the **Tag & Bump** GitHub Action (`tag-and-bump.yml`) which:
27
-
28
- 1. Runs CI (build + test)
29
- 2. Tags the current commit with the current version
30
- 3. Bumps patch in all four files
31
- 4. Rebuilds, commits, and pushes main + tag
32
- 5. The tag push triggers the **Release** workflow (CI + npm publish + .mcpb + .skill + GitHub release)
33
-
34
- Do NOT manually bump versions or create tags unless the user explicitly asks.
35
-
36
- ## Architecture
37
-
38
- - `src/runner.ts` — only module touching `child_process`. Exports `run(args, options)` with `Spawner` DI for testing. Injects `--json --no-input --color=never`, handles `--account` from `options.account` → `GOG_ACCOUNT` env var → omit. 30-second timeout kills stalled processes.
39
- - `src/tools/sheets.ts` — registers 8 Sheets MCP tools via `registerSheetsTools(server)`. Imports `run()` from runner. Errors are caught and returned as text content so the model can read gogcli's error messages.
40
- - `src/index.ts` — MCP server entry point. Creates `McpServer`, calls `registerXxxTools(server)` for each service, connects via `StdioServerTransport`.
41
- - `tests/runner.test.ts` — unit tests for runner using mock `Spawner` DI (no real processes)
42
- - `tests/tools/sheets.test.ts` — unit tests for sheets tools, runner mocked via `vi.mock`
43
-
44
- ## Adding a New Google Service
45
-
46
- To add Gmail, Calendar, Drive, etc.:
47
-
48
- 1. Create `src/tools/<service>.ts` — export `registerXxxTools(server: McpServer)`
49
- 2. Implement curated tools for common ops + a `gog_<service>_run` escape hatch (see `sheets.ts` for the pattern)
50
- 3. Create `tests/tools/<service>.test.ts` — mock `runner.run` via `vi.mock('../../src/runner.js')`
51
- 4. In `src/index.ts`, import and call `registerXxxTools(server)`
52
- 5. Add tools to `manifest.json` tools list
53
- 6. No changes to `runner.ts` or `.mcp.json` required
54
-
55
- ## gogcli Notes
56
-
57
- - `gog schema --json` outputs machine-readable command/flag schema for all subcommands
58
- - `gog sheets update` and `gog sheets append` accept `--values-json=<JSON 2D array>` for structured input
59
- - All commands support `--account <email>` for multi-account targeting
60
- - `--no-input` prevents interactive prompts; `--json` ensures parseable output; `--color=never` strips ANSI codes
61
- - `gog agent exit-codes` documents stable exit codes for automation