gogcli-mcp 1.0.5 → 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 (47) 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 +5340 -5393
  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 +1 -1
  31. package/package.json +6 -2
  32. package/src/index.ts +2 -23
  33. package/src/lib.ts +5 -0
  34. package/src/server.ts +31 -0
  35. package/src/tools/docs.ts +10 -76
  36. package/tests/tools/docs.test.ts +19 -163
  37. package/tsconfig.json +2 -8
  38. package/.github/workflows/ci.yml +0 -22
  39. package/.github/workflows/release.yml +0 -76
  40. package/.github/workflows/tag-and-bump.yml +0 -67
  41. package/.mcp.json +0 -13
  42. package/CLAUDE.md +0 -61
  43. package/docs/superpowers/plans/2026-04-12-gogcli-mcp.md +0 -758
  44. package/docs/superpowers/plans/2026-04-13-browser-auth.md +0 -450
  45. package/docs/superpowers/specs/2026-04-12-gogcli-mcp-design.md +0 -102
  46. package/docs/superpowers/specs/2026-04-13-browser-auth-design.md +0 -88
  47. package/gogcli-mcp-1.0.5.skill +0 -0
package/README.md CHANGED
@@ -1,64 +1,34 @@
1
1
  # gogcli-mcp
2
2
 
3
- A [Model Context Protocol](https://modelcontextprotocol.io) server that gives Claude natural-language access to Google Sheets (and more) via [gogcli](https://github.com/steipete/gogcli).
3
+ Base [Model Context Protocol](https://modelcontextprotocol.io) server that gives Claude access to Google Workspace via [gogcli](https://github.com/steipete/gogcli). Includes 53 tools across 8 services: Sheets, Docs, Gmail, Calendar, Drive, Tasks, Contacts, and Auth.
4
4
 
5
- > [!WARNING]
6
- > **AI-developed project.** This codebase was entirely built and is actively maintained by [Claude Sonnet 4.6](https://www.anthropic.com/claude). No human has audited the implementation. Review all code and tool permissions before use.
7
-
8
- ## What you can do
9
-
10
- Ask Claude things like:
11
-
12
- - *"Read the data in Sheet1!A1:D20 of my budget spreadsheet"*
13
- - *"Append this week's expenses to my tracking sheet"*
14
- - *"Create a new spreadsheet called Q2 Planning"*
15
- - *"Find all instances of 'TBD' in my project sheet and replace with 'Done'"*
16
- - *"What tabs are in spreadsheet ID xyz?"*
5
+ For extended Sheets or Docs support, see [gogcli-mcp-sheets](https://www.npmjs.com/package/gogcli-mcp-sheets) and [gogcli-mcp-docs](https://www.npmjs.com/package/gogcli-mcp-docs).
17
6
 
18
7
  ## Requirements
19
8
 
20
- - [gogcli](https://github.com/steipete/gogcli) installed and authenticated (`gog --help` works)
21
- - [Claude Desktop](https://claude.ai/download) or [Claude Code](https://claude.ai/code)
22
- - Node.js 18 or later
23
-
24
- Install gogcli via Homebrew:
9
+ - [gogcli](https://github.com/steipete/gogcli) installed and authenticated
10
+ - Node.js 18+
25
11
 
26
12
  ```bash
27
13
  brew install gogcli
28
- ```
29
-
30
- Then authenticate:
31
-
32
- ```bash
33
- gog auth add <your-email> --services sheets
14
+ gog auth add your@gmail.com
34
15
  ```
35
16
 
36
17
  ## Installation
37
18
 
38
- ### 1. Clone and build
39
-
40
19
  ```bash
41
- git clone https://github.com/chrischall/gogcli-mcp.git
42
- cd gogcli-mcp
43
- npm install
44
- npm run build
20
+ npm install -g gogcli-mcp
45
21
  ```
46
22
 
47
- ### 2. Add to Claude Desktop
48
-
49
- Edit your Claude Desktop config file:
50
-
51
- - **Mac:** `~/Library/Application Support/Claude/claude_desktop_config.json`
52
- - **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
23
+ ### Claude Desktop
53
24
 
54
- Add the `gogcli` entry inside `"mcpServers"`:
25
+ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
55
26
 
56
27
  ```json
57
28
  {
58
29
  "mcpServers": {
59
30
  "gogcli": {
60
- "command": "node",
61
- "args": ["/absolute/path/to/gogcli-mcp/dist/index.js"],
31
+ "command": "gogcli-mcp",
62
32
  "env": {
63
33
  "GOG_ACCOUNT": "you@gmail.com"
64
34
  }
@@ -67,98 +37,26 @@ Add the `gogcli` entry inside `"mcpServers"`:
67
37
  }
68
38
  ```
69
39
 
70
- Replace `/absolute/path/to/gogcli-mcp` with the actual path. On Mac, run `pwd` inside the cloned directory to get it.
71
-
72
- `GOG_ACCOUNT` is optional — omit it to use gogcli's configured default account.
73
-
74
- ### 3. Add to Claude Code
75
-
76
- The repo includes `.mcp.json`. From the project directory:
77
-
78
- ```bash
79
- # The .mcp.json is already configured — just set your account
80
- export GOG_ACCOUNT=you@gmail.com
81
- ```
82
-
83
- Or add `GOG_ACCOUNT` to your shell profile.
84
-
85
- ## Tools
86
-
87
- Read-only tools run automatically. Write tools ask for confirmation first.
88
-
89
- | Tool | What it does | Permission |
90
- |------|-------------|------------|
91
- | `gog_sheets_get` | Read values from a range | Auto |
92
- | `gog_sheets_metadata` | Get title, tabs, and named ranges | Auto |
93
- | `gog_sheets_update` | Write values to a range | Confirm |
94
- | `gog_sheets_append` | Append rows after existing data | Confirm |
95
- | `gog_sheets_clear` | Clear values in a range | Confirm |
96
- | `gog_sheets_create` | Create a new spreadsheet | Confirm |
97
- | `gog_sheets_find_replace` | Find and replace across a spreadsheet | Confirm |
98
- | `gog_sheets_run` | Run any `gog sheets` subcommand (escape hatch) | Confirm |
99
-
100
- All tools accept an optional `account` parameter to target a specific Google account for that call, overriding `GOG_ACCOUNT`.
101
-
102
- ## Multiple Accounts
103
-
104
- If you use multiple Google accounts with gogcli, you can target a specific account per-call:
105
-
106
- ```
107
- Read Sheet1!A1:D10 from spreadsheet abc123 using my work account work@company.com
108
- ```
109
-
110
- Claude will pass `account: "work@company.com"` to the tool, which adds `--account work@company.com` to the gogcli command.
111
-
112
- ## Troubleshooting
113
-
114
- **"gog not found"** — gogcli is not installed or not in your PATH. Run `gog --help` in your terminal to verify. Install with `brew install gogcli`.
115
-
116
- **"not authenticated"** — run `gog auth add <your-email> --services sheets` to authenticate. Run `gog auth list` to see configured accounts.
117
-
118
- **"Spreadsheet not found"** — verify the spreadsheet ID (the long string in the URL between `/d/` and `/edit`).
119
-
120
- **Tools not appearing in Claude Desktop** — go to **Settings → Developer** to see connected servers. Fully quit and relaunch after editing the config.
121
-
122
- **Can't find the config file on Mac** — in Finder press Cmd+Shift+G and paste `~/Library/Application Support/Claude/`.
123
-
124
- ## Security
125
-
126
- - `GOG_ACCOUNT` is optional and only selects which authenticated account to use
127
- - No credentials are stored or passed by this server — authentication is handled entirely by gogcli's own keyring
128
- - All gogcli invocations use `--no-input` to prevent interactive prompts
129
- - All arguments are passed as arrays to `child_process.spawn` — no shell injection risk
130
-
131
- ## Development
40
+ ### Claude Code
132
41
 
133
42
  ```bash
134
- npm test # run the test suite (33 tests, 100% coverage)
135
- npm run build # compile TypeScript → dist/index.js
136
- npm run test:coverage # run with coverage report
43
+ claude mcp add gogcli-mcp -- gogcli-mcp
137
44
  ```
138
45
 
139
- ### Project structure
140
-
141
- ```
142
- src/
143
- runner.ts gog CLI executor (auth injection, timeout, error handling)
144
- index.ts MCP server entry point
145
- tools/
146
- sheets.ts 8 Google Sheets tools
147
- tests/
148
- runner.test.ts
149
- tools/
150
- sheets.test.ts
151
- ```
152
-
153
- ### Adding more Google services
154
-
155
- gogcli supports Gmail, Calendar, Drive, Contacts, Tasks, Docs, Slides, Chat, and more. To add a service:
46
+ ## Tools (53)
156
47
 
157
- 1. Create `src/tools/<service>.ts` with `registerXxxTools(server: McpServer)`
158
- 2. Create `tests/tools/<service>.test.ts` (mock runner via `vi.mock`)
159
- 3. Call `registerXxxTools(server)` in `src/index.ts`
48
+ | Service | Tools | Includes |
49
+ |---------|-------|----------|
50
+ | **Sheets** | 8 | get, update, append, clear, metadata, create, find-replace, run |
51
+ | **Docs** | 8 | info, cat, create, write, find-replace, structure, comments (generic), run |
52
+ | **Gmail** | 4 | search, get, send, run |
53
+ | **Calendar** | 7 | events, get, create, update, delete, respond, run |
54
+ | **Drive** | 9 | ls, search, get, mkdir, rename, move, delete, share, run |
55
+ | **Tasks** | 7 | lists, list, get, add, done, delete, run |
56
+ | **Contacts** | 5 | search, list, get, create, run |
57
+ | **Auth** | 5 | list, status, services, add, run |
160
58
 
161
- See `CLAUDE.md` for the full pattern.
59
+ All tools accept an optional `account` parameter to target a specific Google account.
162
60
 
163
61
  ## License
164
62
 
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}