groove-dev 0.16.4 → 0.17.1

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 (34) hide show
  1. package/README.md +18 -16
  2. package/node_modules/@groove-dev/daemon/integrations-registry.json +417 -0
  3. package/node_modules/@groove-dev/daemon/src/api.js +204 -0
  4. package/node_modules/@groove-dev/daemon/src/index.js +9 -0
  5. package/node_modules/@groove-dev/daemon/src/integrations.js +475 -0
  6. package/node_modules/@groove-dev/daemon/src/introducer.js +23 -0
  7. package/node_modules/@groove-dev/daemon/src/process.js +59 -0
  8. package/node_modules/@groove-dev/daemon/src/registry.js +2 -1
  9. package/node_modules/@groove-dev/daemon/src/scheduler.js +336 -0
  10. package/node_modules/@groove-dev/daemon/src/validate.js +10 -0
  11. package/node_modules/@groove-dev/gui/dist/assets/index-CEf7nLM2.js +156 -0
  12. package/node_modules/@groove-dev/gui/dist/index.html +1 -1
  13. package/node_modules/@groove-dev/gui/src/App.jsx +6 -0
  14. package/node_modules/@groove-dev/gui/src/components/SpawnPanel.jsx +98 -7
  15. package/node_modules/@groove-dev/gui/src/views/IntegrationsStore.jsx +1171 -0
  16. package/node_modules/@groove-dev/gui/src/views/ScheduleManager.jsx +614 -0
  17. package/package.json +2 -2
  18. package/packages/daemon/integrations-registry.json +417 -0
  19. package/packages/daemon/src/api.js +204 -0
  20. package/packages/daemon/src/index.js +9 -0
  21. package/packages/daemon/src/integrations.js +475 -0
  22. package/packages/daemon/src/introducer.js +23 -0
  23. package/packages/daemon/src/process.js +59 -0
  24. package/packages/daemon/src/registry.js +2 -1
  25. package/packages/daemon/src/scheduler.js +336 -0
  26. package/packages/daemon/src/validate.js +10 -0
  27. package/packages/gui/dist/assets/index-CEf7nLM2.js +156 -0
  28. package/packages/gui/dist/index.html +1 -1
  29. package/packages/gui/src/App.jsx +6 -0
  30. package/packages/gui/src/components/SpawnPanel.jsx +98 -7
  31. package/packages/gui/src/views/IntegrationsStore.jsx +1171 -0
  32. package/packages/gui/src/views/ScheduleManager.jsx +614 -0
  33. package/node_modules/@groove-dev/gui/dist/assets/index-B_VHpncx.js +0 -153
  34. package/packages/gui/dist/assets/index-B_VHpncx.js +0 -153
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # GROOVE
1
+ # groove
2
2
 
3
3
  **Orchestrate your AI coding agents. Stop losing context.**
4
4
 
@@ -12,7 +12,7 @@ npm i -g groove-dev
12
12
  groove start
13
13
  ```
14
14
 
15
- The GUI opens at `http://localhost:31415`. On a VPS? GROOVE detects it and tells you exactly what to do.
15
+ The GUI opens at `http://localhost:31415`. On a VPS? groove detects it and tells you exactly what to do.
16
16
 
17
17
  ---
18
18
 
@@ -27,7 +27,7 @@ AI coding agents waste your money and lose their way:
27
27
 
28
28
  ## The Solution
29
29
 
30
- GROOVE sits between you and your AI coding agents. It doesn't replace them — it makes them work together.
30
+ groove sits between you and your AI coding agents. It doesn't replace them — it makes them work together.
31
31
 
32
32
  ### Zero Cold-Start (The Journalist)
33
33
 
@@ -35,7 +35,7 @@ A background AI continuously watches all agent activity and synthesizes it into
35
35
 
36
36
  ### Infinite Sessions (Context Rotation)
37
37
 
38
- Instead of letting agents fill their context window until they degrade, GROOVE detects quality decline — error spikes, circular refactors, file churn — and automatically rotates: kill the session, spawn fresh, feed it the Journalist's context. The agent picks up exactly where it left off with a clean window. No compaction. No drift. Works at any codebase scale.
38
+ Instead of letting agents fill their context window until they degrade, groove detects quality decline — error spikes, circular refactors, file churn — and automatically rotates: kill the session, spawn fresh, feed it the Journalist's context. The agent picks up exactly where it left off with a clean window. No compaction. No drift. Works at any codebase scale.
39
39
 
40
40
  ### AI Project Manager
41
41
 
@@ -47,7 +47,7 @@ Spawn a planner, describe your project. The planner writes a detailed plan and r
47
47
 
48
48
  ### Workspaces (Large Codebase Support)
49
49
 
50
- GROOVE auto-detects monorepo workspaces (npm, pnpm, lerna) and lets you spawn each agent in its own subdirectory. A frontend agent only sees `packages/frontend/`. A backend agent only sees `packages/backend/`. No wasted context on irrelevant code.
50
+ groove auto-detects monorepo workspaces (npm, pnpm, lerna) and lets you spawn each agent in its own subdirectory. A frontend agent only sees `packages/frontend/`. A backend agent only sees `packages/backend/`. No wasted context on irrelevant code.
51
51
 
52
52
  - **Codebase indexer** — scans project structure on start, gives every agent instant orientation
53
53
  - **Architecture injection** — auto-detects `ARCHITECTURE.md` and injects it into every agent's context
@@ -63,16 +63,16 @@ GROOVE auto-detects monorepo workspaces (npm, pnpm, lerna) and lets you spawn ea
63
63
 
64
64
  ## Remote Access
65
65
 
66
- Run GROOVE on a VPS and manage your agents from anywhere. No ports exposed to the internet. No tokens. No custom auth code. Zero attack surface.
66
+ Run groove on a VPS and manage your agents from anywhere. No ports exposed to the internet. No tokens. No custom auth code. Zero attack surface.
67
67
 
68
68
  ### How It Works
69
69
 
70
- GROOVE never opens ports to the public internet. Instead, it uses battle-tested transport layers — SSH tunnels and WireGuard (Tailscale) — to keep your daemon private.
70
+ groove never opens ports to the public internet. Instead, it uses battle-tested transport layers — SSH tunnels and WireGuard (Tailscale) — to keep your daemon private.
71
71
 
72
72
  ```
73
73
  Your laptop Your VPS
74
74
  ┌──────────┐ SSH tunnel ┌──────────────────┐
75
- │ Browser │ ◄────────────────► │ GROOVE daemon │
75
+ │ Browser │ ◄────────────────► │ groove daemon │
76
76
  │ localhost│ encrypted │ 127.0.0.1:31415 │
77
77
  └──────────┘ └──────────────────┘
78
78
  Zero open ports
@@ -99,7 +99,7 @@ groove disconnect # close when done
99
99
 
100
100
  That's it. The GUI opens in your browser automatically.
101
101
 
102
- GROOVE auto-detects your environment — VS Code Remote, plain SSH, or local — and tells you exactly what to do. SSH config aliases work too: `groove connect my-vps`.
102
+ groove auto-detects your environment — VS Code Remote, plain SSH, or local — and tells you exactly what to do. SSH config aliases work too: `groove connect my-vps`.
103
103
 
104
104
  ### Tailscale / LAN Access
105
105
 
@@ -114,7 +114,7 @@ Open `http://<ip>:31415` from any device on the same network. Tailscale handles
114
114
 
115
115
  ### What's Blocked
116
116
 
117
- GROOVE will reject any attempt to expose the daemon directly to the internet:
117
+ groove will reject any attempt to expose the daemon directly to the internet:
118
118
 
119
119
  ```bash
120
120
  groove start --host 0.0.0.0 # REJECTED — not allowed
@@ -124,7 +124,7 @@ This is by design. Direct exposure requires custom auth, rate limiting, TLS mana
124
124
 
125
125
  ### Federation (Preview)
126
126
 
127
- Pair GROOVE daemons across machines with Ed25519 key exchange. The security layer is built — cross-server agent coordination (typed contracts, federated registry) is coming soon.
127
+ Pair groove daemons across machines with Ed25519 key exchange. The security layer is built — cross-server agent coordination (typed contracts, federated registry) is coming soon.
128
128
 
129
129
  ```bash
130
130
  groove federation pair 100.64.1.5 # pair two daemons
@@ -137,7 +137,7 @@ Every cross-server message is signed with Ed25519 keys generated during a pairin
137
137
  ```
138
138
  Server A Server B
139
139
  ┌──────────────┐ signed contract ┌──────────────┐
140
- GROOVE daemon│ ◄────────────────►│ GROOVE daemon│
140
+ groove daemon│ ◄────────────────►│ groove daemon│
141
141
  │ Ed25519 key │ verify + audit │ Ed25519 key │
142
142
  └──────────────┘ └──────────────┘
143
143
  ```
@@ -176,7 +176,7 @@ Append-only, `0600` permissions, auto-rotates at 5MB. When team auth is added, e
176
176
 
177
177
  **What we explicitly don't defend against:** Compromised SSH keys, root access to VPS, malicious AI provider responses (out of scope — we're a process manager).
178
178
 
179
- **The principle:** "There's nothing to attack" is better than "we have a security system and here's why it's good." GROOVE has zero auth code. The transport layer does all the work.
179
+ **The principle:** "There's nothing to attack" is better than "we have a security system and here's why it's good." groove has zero auth code. The transport layer does all the work.
180
180
 
181
181
  ---
182
182
 
@@ -189,7 +189,7 @@ Append-only, `0600` permissions, auto-rotates at 5MB. When team auth is added, e
189
189
  | **Gemini CLI** | API Key | 3.1 Pro, 3 Flash, 3.1 Flash Lite, 2.5 Pro, 2.5 Flash |
190
190
  | **Ollama** | Local | Any |
191
191
 
192
- GROOVE is a process manager — it spawns actual AI tool binaries. It never proxies API calls, never touches OAuth tokens, never impersonates any client. Your AI tools talk directly to their servers.
192
+ groove is a process manager — it spawns actual AI tool binaries. It never proxies API calls, never touches OAuth tokens, never impersonates any client. Your AI tools talk directly to their servers.
193
193
 
194
194
  Works in any terminal, any IDE, any OS. Technical and non-technical users alike.
195
195
 
@@ -198,15 +198,17 @@ Works in any terminal, any IDE, any OS. Technical and non-technical users alike.
198
198
  Open the dashboard after starting the daemon (local or remote):
199
199
 
200
200
  - **Agent Tree** — visual node graph with Bezier spline connections, role badges, live status
201
+ - **File Editor** — CodeMirror 6 with syntax highlighting, file tree, tabs, media viewer, and embedded terminal
201
202
  - **Chat** — instruct agents, query without disrupting, continue completed agents, streaming text
202
203
  - **Command Center** — gauge charts, live telemetry, token savings, model routing, adaptive thresholds
203
204
  - **Quick Launch** — planner recommends team, one-click to spawn all
205
+ - **Skills Store** — app-store marketplace for agent skills with ratings and verification
204
206
  - **PM Review Log** — full audit trail of AI Project Manager decisions
205
207
  - **Team Management** — save, load, export, import agent configurations
206
208
 
207
209
  ## Adaptive Model Routing
208
210
 
209
- GROOVE routes tasks to the cheapest model that can handle them. Planners get Opus (deep reasoning). Backends get Sonnet (balanced). Docs get Haiku (fast and cheap). The classifier learns from agent activity and adjusts over time.
211
+ groove routes tasks to the cheapest model that can handle them. Planners get Opus (deep reasoning). Backends get Sonnet (balanced). Docs get Haiku (fast and cheap). The classifier learns from agent activity and adjusts over time.
210
212
 
211
213
  | Tier | Cost | Used For |
212
214
  |------|------|----------|
@@ -218,7 +220,7 @@ GROOVE routes tasks to the cheapest model that can handle them. Planners get Opu
218
220
 
219
221
  ```
220
222
  ┌──────────────────────────────────────────────┐
221
- GROOVE DAEMON (:31415) │
223
+ groove DAEMON (:31415) │
222
224
  │ │
223
225
  │ Registry · Introducer · Lock Manager │
224
226
  │ Journalist · Rotator · Adaptive · Indexer │
@@ -0,0 +1,417 @@
1
+ [
2
+ {
3
+ "id": "slack",
4
+ "name": "Slack",
5
+ "description": "Send and read messages, manage channels, search history, post reactions and thread replies",
6
+ "category": "communication",
7
+ "icon": "slack",
8
+ "tags": ["chat", "messaging", "notifications", "team"],
9
+ "roles": ["cmo", "ea", "support", "fullstack"],
10
+ "npmPackage": "@modelcontextprotocol/server-slack",
11
+ "transport": "stdio",
12
+ "command": "npx",
13
+ "args": ["-y", "@modelcontextprotocol/server-slack"],
14
+ "authType": "api-key",
15
+ "envKeys": [
16
+ { "key": "SLACK_BOT_TOKEN", "label": "Bot Token", "placeholder": "xoxb-...", "required": true },
17
+ { "key": "SLACK_TEAM_ID", "label": "Team ID", "placeholder": "T01234567", "required": true }
18
+ ],
19
+ "setupUrl": "https://api.slack.com/apps",
20
+ "setupSteps": [
21
+ "Go to api.slack.com/apps and click 'Create New App'",
22
+ "Choose 'From scratch', name it 'Groove', pick your workspace",
23
+ "Go to 'OAuth & Permissions', add scopes: channels:read, channels:history, chat:write, users:read",
24
+ "Click 'Install to Workspace' and authorize",
25
+ "Copy the 'Bot User OAuth Token' (starts with xoxb-)",
26
+ "Your Team ID is in the workspace URL: app.slack.com/client/TXXXXXXX"
27
+ ],
28
+ "featured": true,
29
+ "downloads": 0,
30
+ "rating": 0,
31
+ "ratingCount": 0,
32
+ "verified": "mcp-official"
33
+ },
34
+ {
35
+ "id": "github",
36
+ "name": "GitHub",
37
+ "description": "Manage repos, issues, pull requests, code search, file operations, and workflows",
38
+ "category": "developer",
39
+ "icon": "github",
40
+ "tags": ["git", "repos", "issues", "pull-requests", "ci"],
41
+ "roles": ["backend", "frontend", "fullstack", "devops"],
42
+ "npmPackage": "@modelcontextprotocol/server-github",
43
+ "transport": "stdio",
44
+ "command": "npx",
45
+ "args": ["-y", "@modelcontextprotocol/server-github"],
46
+ "authType": "api-key",
47
+ "envKeys": [
48
+ { "key": "GITHUB_PERSONAL_ACCESS_TOKEN", "label": "Personal Access Token", "placeholder": "ghp_...", "required": true }
49
+ ],
50
+ "setupUrl": "https://github.com/settings/tokens/new",
51
+ "setupSteps": [
52
+ "Click the link below to create a new token on GitHub",
53
+ "Select scopes: repo, read:org, read:user",
54
+ "Click 'Generate token' and copy it"
55
+ ],
56
+ "featured": true,
57
+ "downloads": 0,
58
+ "rating": 0,
59
+ "ratingCount": 0,
60
+ "verified": "mcp-official"
61
+ },
62
+ {
63
+ "id": "stripe",
64
+ "name": "Stripe",
65
+ "description": "Manage customers, payments, subscriptions, invoices, and financial data",
66
+ "category": "finance",
67
+ "icon": "stripe",
68
+ "tags": ["payments", "billing", "subscriptions", "finance"],
69
+ "roles": ["cfo", "analyst", "fullstack"],
70
+ "npmPackage": "@stripe/agent-toolkit",
71
+ "transport": "stdio",
72
+ "command": "npx",
73
+ "args": ["-y", "@stripe/agent-toolkit", "mcp"],
74
+ "authType": "api-key",
75
+ "envKeys": [
76
+ { "key": "STRIPE_SECRET_KEY", "label": "Secret Key", "placeholder": "sk_...", "required": true }
77
+ ],
78
+ "setupUrl": "https://dashboard.stripe.com/apikeys",
79
+ "setupSteps": [
80
+ "Click the link below to open your Stripe API keys",
81
+ "Copy the 'Secret key' (starts with sk_live_ or sk_test_)",
82
+ "Use a test key (sk_test_) for safe experimentation"
83
+ ],
84
+ "featured": true,
85
+ "downloads": 0,
86
+ "rating": 0,
87
+ "ratingCount": 0,
88
+ "verified": "verified"
89
+ },
90
+ {
91
+ "id": "google-calendar",
92
+ "name": "Google Calendar",
93
+ "description": "Create, list, and update calendar events, check availability, manage schedules",
94
+ "category": "productivity",
95
+ "icon": "calendar",
96
+ "tags": ["calendar", "scheduling", "events", "meetings"],
97
+ "roles": ["ea", "cmo"],
98
+ "npmPackage": "@anthropic-ai/mcp-server-google-calendar",
99
+ "transport": "stdio",
100
+ "command": "npx",
101
+ "args": ["-y", "@anthropic-ai/mcp-server-google-calendar"],
102
+ "authType": "oauth-google",
103
+ "oauthScopes": ["https://www.googleapis.com/auth/calendar"],
104
+ "envKeys": [
105
+ { "key": "GOOGLE_CLIENT_ID", "label": "OAuth Client ID", "required": true, "hidden": true },
106
+ { "key": "GOOGLE_CLIENT_SECRET", "label": "OAuth Client Secret", "required": true, "hidden": true },
107
+ { "key": "GOOGLE_REFRESH_TOKEN", "label": "Refresh Token", "required": true, "hidden": true }
108
+ ],
109
+ "setupSteps": [
110
+ "Click 'Connect with Google' below",
111
+ "Sign in and authorize Groove to access your calendar",
112
+ "That's it — your credentials are stored securely"
113
+ ],
114
+ "featured": false,
115
+ "downloads": 0,
116
+ "rating": 0,
117
+ "ratingCount": 0,
118
+ "verified": "community"
119
+ },
120
+ {
121
+ "id": "gmail",
122
+ "name": "Gmail",
123
+ "description": "Send, read, search, and draft emails via Gmail",
124
+ "category": "communication",
125
+ "icon": "email",
126
+ "tags": ["email", "inbox", "messaging", "notifications"],
127
+ "roles": ["ea", "cmo", "support"],
128
+ "npmPackage": "@anthropic-ai/mcp-server-gmail",
129
+ "transport": "stdio",
130
+ "command": "npx",
131
+ "args": ["-y", "@anthropic-ai/mcp-server-gmail"],
132
+ "authType": "oauth-google",
133
+ "oauthScopes": ["https://www.googleapis.com/auth/gmail.modify"],
134
+ "envKeys": [
135
+ { "key": "GOOGLE_CLIENT_ID", "label": "OAuth Client ID", "required": true, "hidden": true },
136
+ { "key": "GOOGLE_CLIENT_SECRET", "label": "OAuth Client Secret", "required": true, "hidden": true },
137
+ { "key": "GOOGLE_REFRESH_TOKEN", "label": "Refresh Token", "required": true, "hidden": true }
138
+ ],
139
+ "setupSteps": [
140
+ "Click 'Connect with Google' below",
141
+ "Sign in and authorize Groove to access your email",
142
+ "That's it — your credentials are stored securely"
143
+ ],
144
+ "featured": false,
145
+ "downloads": 0,
146
+ "rating": 0,
147
+ "ratingCount": 0,
148
+ "verified": "community"
149
+ },
150
+ {
151
+ "id": "postgres",
152
+ "name": "PostgreSQL",
153
+ "description": "Query databases, inspect schemas, run SQL, and analyze data",
154
+ "category": "database",
155
+ "icon": "database",
156
+ "tags": ["sql", "database", "queries", "analytics"],
157
+ "roles": ["analyst", "backend", "cfo"],
158
+ "npmPackage": "@modelcontextprotocol/server-postgres",
159
+ "transport": "stdio",
160
+ "command": "npx",
161
+ "args": ["-y", "@modelcontextprotocol/server-postgres"],
162
+ "authType": "api-key",
163
+ "envKeys": [
164
+ { "key": "POSTGRES_CONNECTION_STRING", "label": "Connection String", "placeholder": "postgresql://user:pass@host:5432/db", "required": true }
165
+ ],
166
+ "setupSteps": [
167
+ "Enter your PostgreSQL connection string",
168
+ "Format: postgresql://username:password@host:port/database"
169
+ ],
170
+ "featured": false,
171
+ "downloads": 0,
172
+ "rating": 0,
173
+ "ratingCount": 0,
174
+ "verified": "mcp-official"
175
+ },
176
+ {
177
+ "id": "brave-search",
178
+ "name": "Brave Search",
179
+ "description": "Web search and local search via Brave Search API",
180
+ "category": "analytics",
181
+ "icon": "search",
182
+ "tags": ["search", "web", "research", "data"],
183
+ "roles": ["cmo", "analyst", "planner"],
184
+ "npmPackage": "@modelcontextprotocol/server-brave-search",
185
+ "transport": "stdio",
186
+ "command": "npx",
187
+ "args": ["-y", "@modelcontextprotocol/server-brave-search"],
188
+ "authType": "api-key",
189
+ "envKeys": [
190
+ { "key": "BRAVE_API_KEY", "label": "API Key", "placeholder": "BSA...", "required": true }
191
+ ],
192
+ "setupUrl": "https://brave.com/search/api/",
193
+ "setupSteps": [
194
+ "Click the link below to get a Brave Search API key",
195
+ "Sign up for a free plan (2,000 queries/month)",
196
+ "Copy your API key"
197
+ ],
198
+ "featured": false,
199
+ "downloads": 0,
200
+ "rating": 0,
201
+ "ratingCount": 0,
202
+ "verified": "mcp-official"
203
+ },
204
+ {
205
+ "id": "google-drive",
206
+ "name": "Google Drive",
207
+ "description": "Search, read, and manage files in Google Drive",
208
+ "category": "productivity",
209
+ "icon": "drive",
210
+ "tags": ["files", "documents", "sheets", "storage"],
211
+ "roles": ["ea", "analyst", "cmo"],
212
+ "npmPackage": "@modelcontextprotocol/server-gdrive",
213
+ "transport": "stdio",
214
+ "command": "npx",
215
+ "args": ["-y", "@modelcontextprotocol/server-gdrive"],
216
+ "authType": "oauth-google",
217
+ "oauthScopes": ["https://www.googleapis.com/auth/drive.readonly"],
218
+ "envKeys": [
219
+ { "key": "GOOGLE_CLIENT_ID", "label": "OAuth Client ID", "required": true, "hidden": true },
220
+ { "key": "GOOGLE_CLIENT_SECRET", "label": "OAuth Client Secret", "required": true, "hidden": true },
221
+ { "key": "GOOGLE_REFRESH_TOKEN", "label": "Refresh Token", "required": true, "hidden": true }
222
+ ],
223
+ "setupSteps": [
224
+ "Click 'Connect with Google' below",
225
+ "Sign in and authorize Groove to access your Drive",
226
+ "That's it — your credentials are stored securely"
227
+ ],
228
+ "featured": false,
229
+ "downloads": 0,
230
+ "rating": 0,
231
+ "ratingCount": 0,
232
+ "verified": "mcp-official"
233
+ },
234
+ {
235
+ "id": "linear",
236
+ "name": "Linear",
237
+ "description": "Create and manage issues, projects, and sprints in Linear",
238
+ "category": "productivity",
239
+ "icon": "linear",
240
+ "tags": ["issues", "project-management", "tickets", "sprints"],
241
+ "roles": ["fullstack", "backend", "devops"],
242
+ "npmPackage": "@ibraheem4/linear-mcp-server",
243
+ "transport": "stdio",
244
+ "command": "npx",
245
+ "args": ["-y", "@ibraheem4/linear-mcp-server"],
246
+ "authType": "api-key",
247
+ "envKeys": [
248
+ { "key": "LINEAR_API_KEY", "label": "API Key", "required": true }
249
+ ],
250
+ "setupUrl": "https://linear.app/settings/api",
251
+ "setupSteps": [
252
+ "Click the link below to open Linear API settings",
253
+ "Click 'Create key', give it a label like 'Groove'",
254
+ "Copy the API key"
255
+ ],
256
+ "featured": false,
257
+ "downloads": 0,
258
+ "rating": 0,
259
+ "ratingCount": 0,
260
+ "verified": "community"
261
+ },
262
+ {
263
+ "id": "notion",
264
+ "name": "Notion",
265
+ "description": "Read, create, and update Notion pages and databases",
266
+ "category": "productivity",
267
+ "icon": "notion",
268
+ "tags": ["wiki", "docs", "notes", "databases"],
269
+ "roles": ["ea", "cmo", "analyst"],
270
+ "npmPackage": "@notionhq/notion-mcp-server",
271
+ "transport": "stdio",
272
+ "command": "npx",
273
+ "args": ["-y", "@notionhq/notion-mcp-server"],
274
+ "authType": "api-key",
275
+ "envKeys": [
276
+ { "key": "NOTION_API_KEY", "label": "Integration Token", "placeholder": "ntn_...", "required": true }
277
+ ],
278
+ "setupUrl": "https://www.notion.so/my-integrations",
279
+ "setupSteps": [
280
+ "Click the link below to open Notion integrations",
281
+ "Click 'New integration', name it 'Groove'",
282
+ "Copy the 'Internal Integration Secret'",
283
+ "Share the pages/databases you want accessible with the integration"
284
+ ],
285
+ "featured": false,
286
+ "downloads": 0,
287
+ "rating": 0,
288
+ "ratingCount": 0,
289
+ "verified": "community"
290
+ },
291
+ {
292
+ "id": "discord",
293
+ "name": "Discord",
294
+ "description": "Send and read messages, manage channels and servers on Discord",
295
+ "category": "communication",
296
+ "icon": "discord",
297
+ "tags": ["chat", "community", "messaging", "voice"],
298
+ "roles": ["cmo", "support"],
299
+ "npmPackage": "mcp-discord",
300
+ "transport": "stdio",
301
+ "command": "npx",
302
+ "args": ["-y", "mcp-discord"],
303
+ "authType": "api-key",
304
+ "envKeys": [
305
+ { "key": "DISCORD_BOT_TOKEN", "label": "Bot Token", "required": true }
306
+ ],
307
+ "setupUrl": "https://discord.com/developers/applications",
308
+ "setupSteps": [
309
+ "Click the link below to open Discord Developer Portal",
310
+ "Click 'New Application', name it 'Groove'",
311
+ "Go to 'Bot' tab, click 'Reset Token', copy it",
312
+ "Enable 'Message Content Intent' under Privileged Gateway Intents",
313
+ "Go to OAuth2 > URL Generator, select 'bot' scope, invite to your server"
314
+ ],
315
+ "featured": false,
316
+ "downloads": 0,
317
+ "rating": 0,
318
+ "ratingCount": 0,
319
+ "verified": "community"
320
+ },
321
+ {
322
+ "id": "home-assistant",
323
+ "name": "Home Assistant",
324
+ "description": "Control smart home devices, query states, and manage automations",
325
+ "category": "smart-home",
326
+ "icon": "home",
327
+ "tags": ["iot", "smart-home", "automation", "devices"],
328
+ "roles": ["home"],
329
+ "npmPackage": "mcp-home-assistant",
330
+ "transport": "stdio",
331
+ "command": "npx",
332
+ "args": ["-y", "mcp-home-assistant"],
333
+ "authType": "api-key",
334
+ "envKeys": [
335
+ { "key": "HOME_ASSISTANT_URL", "label": "HA URL", "placeholder": "http://homeassistant.local:8123", "required": true },
336
+ { "key": "HOME_ASSISTANT_TOKEN", "label": "Long-Lived Access Token", "required": true }
337
+ ],
338
+ "setupSteps": [
339
+ "Enter your Home Assistant URL (usually http://homeassistant.local:8123)",
340
+ "In HA: Profile (bottom left) > Security > Long-Lived Access Tokens",
341
+ "Click 'Create Token', name it 'Groove', copy the token"
342
+ ],
343
+ "featured": false,
344
+ "downloads": 0,
345
+ "rating": 0,
346
+ "ratingCount": 0,
347
+ "verified": "community"
348
+ },
349
+ {
350
+ "id": "filesystem",
351
+ "name": "Filesystem",
352
+ "description": "Read, write, search, and manage files on the local filesystem",
353
+ "category": "developer",
354
+ "icon": "folder",
355
+ "tags": ["files", "filesystem", "local", "storage"],
356
+ "roles": ["backend", "fullstack", "devops"],
357
+ "npmPackage": "@modelcontextprotocol/server-filesystem",
358
+ "transport": "stdio",
359
+ "command": "npx",
360
+ "args": ["-y", "@modelcontextprotocol/server-filesystem"],
361
+ "authType": "none",
362
+ "envKeys": [],
363
+ "featured": false,
364
+ "downloads": 0,
365
+ "rating": 0,
366
+ "ratingCount": 0,
367
+ "verified": "mcp-official"
368
+ },
369
+ {
370
+ "id": "google-maps",
371
+ "name": "Google Maps",
372
+ "description": "Geocoding, directions, place search, and distance calculations",
373
+ "category": "analytics",
374
+ "icon": "map",
375
+ "tags": ["maps", "location", "directions", "places"],
376
+ "roles": ["analyst", "ea"],
377
+ "npmPackage": "@modelcontextprotocol/server-google-maps",
378
+ "transport": "stdio",
379
+ "command": "npx",
380
+ "args": ["-y", "@modelcontextprotocol/server-google-maps"],
381
+ "authType": "api-key",
382
+ "envKeys": [
383
+ { "key": "GOOGLE_MAPS_API_KEY", "label": "API Key", "required": true }
384
+ ],
385
+ "setupUrl": "https://console.cloud.google.com/apis/credentials",
386
+ "setupSteps": [
387
+ "Click the link below to open Google Cloud Console",
388
+ "Create or select a project, then 'Create Credentials' > 'API Key'",
389
+ "Enable the Maps JavaScript API, Geocoding API, and Places API"
390
+ ],
391
+ "featured": false,
392
+ "downloads": 0,
393
+ "rating": 0,
394
+ "ratingCount": 0,
395
+ "verified": "mcp-official"
396
+ },
397
+ {
398
+ "id": "sqlite",
399
+ "name": "SQLite",
400
+ "description": "Query and manage SQLite databases, inspect schemas, run SQL",
401
+ "category": "database",
402
+ "icon": "database",
403
+ "tags": ["sql", "database", "local", "lightweight"],
404
+ "roles": ["analyst", "backend"],
405
+ "npmPackage": "@modelcontextprotocol/server-sqlite",
406
+ "transport": "stdio",
407
+ "command": "npx",
408
+ "args": ["-y", "@modelcontextprotocol/server-sqlite"],
409
+ "authType": "none",
410
+ "envKeys": [],
411
+ "featured": false,
412
+ "downloads": 0,
413
+ "rating": 0,
414
+ "ratingCount": 0,
415
+ "verified": "mcp-official"
416
+ }
417
+ ]