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.
- package/README.md +18 -16
- package/node_modules/@groove-dev/daemon/integrations-registry.json +417 -0
- package/node_modules/@groove-dev/daemon/src/api.js +204 -0
- package/node_modules/@groove-dev/daemon/src/index.js +9 -0
- package/node_modules/@groove-dev/daemon/src/integrations.js +475 -0
- package/node_modules/@groove-dev/daemon/src/introducer.js +23 -0
- package/node_modules/@groove-dev/daemon/src/process.js +59 -0
- package/node_modules/@groove-dev/daemon/src/registry.js +2 -1
- package/node_modules/@groove-dev/daemon/src/scheduler.js +336 -0
- package/node_modules/@groove-dev/daemon/src/validate.js +10 -0
- package/node_modules/@groove-dev/gui/dist/assets/index-CEf7nLM2.js +156 -0
- package/node_modules/@groove-dev/gui/dist/index.html +1 -1
- package/node_modules/@groove-dev/gui/src/App.jsx +6 -0
- package/node_modules/@groove-dev/gui/src/components/SpawnPanel.jsx +98 -7
- package/node_modules/@groove-dev/gui/src/views/IntegrationsStore.jsx +1171 -0
- package/node_modules/@groove-dev/gui/src/views/ScheduleManager.jsx +614 -0
- package/package.json +2 -2
- package/packages/daemon/integrations-registry.json +417 -0
- package/packages/daemon/src/api.js +204 -0
- package/packages/daemon/src/index.js +9 -0
- package/packages/daemon/src/integrations.js +475 -0
- package/packages/daemon/src/introducer.js +23 -0
- package/packages/daemon/src/process.js +59 -0
- package/packages/daemon/src/registry.js +2 -1
- package/packages/daemon/src/scheduler.js +336 -0
- package/packages/daemon/src/validate.js +10 -0
- package/packages/gui/dist/assets/index-CEf7nLM2.js +156 -0
- package/packages/gui/dist/index.html +1 -1
- package/packages/gui/src/App.jsx +6 -0
- package/packages/gui/src/components/SpawnPanel.jsx +98 -7
- package/packages/gui/src/views/IntegrationsStore.jsx +1171 -0
- package/packages/gui/src/views/ScheduleManager.jsx +614 -0
- package/node_modules/@groove-dev/gui/dist/assets/index-B_VHpncx.js +0 -153
- package/packages/gui/dist/assets/index-B_VHpncx.js +0 -153
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
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?
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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 │ ◄────────────────► │
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
│
|
|
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."
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
│
|
|
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
|
+
]
|