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.
- package/README.md +23 -125
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5342 -5394
- package/dist/lib.d.ts +6 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +30837 -0
- package/dist/runner.d.ts +12 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/tools/auth.d.ts +3 -0
- package/dist/tools/auth.d.ts.map +1 -0
- package/dist/tools/calendar.d.ts +3 -0
- package/dist/tools/calendar.d.ts.map +1 -0
- package/dist/tools/contacts.d.ts +3 -0
- package/dist/tools/contacts.d.ts.map +1 -0
- package/dist/tools/docs.d.ts +3 -0
- package/dist/tools/docs.d.ts.map +1 -0
- package/dist/tools/drive.d.ts +3 -0
- package/dist/tools/drive.d.ts.map +1 -0
- package/dist/tools/gmail.d.ts +3 -0
- package/dist/tools/gmail.d.ts.map +1 -0
- package/dist/tools/sheets.d.ts +3 -0
- package/dist/tools/sheets.d.ts.map +1 -0
- package/dist/tools/tasks.d.ts +3 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/utils.d.ts +14 -0
- package/dist/tools/utils.d.ts.map +1 -0
- package/manifest.json +2 -10
- package/package.json +6 -2
- package/src/index.ts +2 -23
- package/src/lib.ts +5 -0
- package/src/runner.ts +4 -1
- package/src/server.ts +31 -0
- package/src/tools/docs.ts +10 -76
- package/tests/runner.test.ts +17 -0
- package/tests/tools/docs.test.ts +19 -163
- package/tsconfig.json +2 -8
- package/.github/workflows/ci.yml +0 -22
- package/.github/workflows/release.yml +0 -76
- package/.github/workflows/tag-and-bump.yml +0 -67
- package/.mcp.json +0 -14
- package/CLAUDE.md +0 -61
- package/docs/superpowers/plans/2026-04-12-gogcli-mcp.md +0 -758
- package/docs/superpowers/plans/2026-04-13-browser-auth.md +0 -450
- package/docs/superpowers/specs/2026-04-12-gogcli-mcp-design.md +0 -102
- package/docs/superpowers/specs/2026-04-13-browser-auth-design.md +0 -88
- 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
|