couchloop-eq-mcp 1.0.0 → 1.0.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 +50 -317
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,358 +1,91 @@
|
|
|
1
|
-
# CouchLoop MCP Server
|
|
1
|
+
# CouchLoop EQ — MCP Server
|
|
2
2
|
|
|
3
3
|
Turn conversations into guided journeys that remember where you left off.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://raw.githubusercontent.com/wisenbergg/couchloop-mcp/main/assets/logo/couchloop_EQ-IconLogo.png" alt="CouchLoop EQ" width="120" />
|
|
7
|
+
</p>
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
## What is CouchLoop EQ?
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
- State management infrastructure for AI conversations
|
|
11
|
-
- Journey/workflow orchestration layer
|
|
12
|
-
- Session persistence and resumption
|
|
13
|
-
- MCP (Model Context Protocol) server for ChatGPT and Claude
|
|
11
|
+
CouchLoop EQ is an MCP (Model Context Protocol) server that adds stateful, resumable conversation experiences to AI assistants like ChatGPT and Claude. It manages sessions, tracks progress through guided journeys, and remembers where you left off—even across multiple conversations.
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
- A chatbot or conversational AI
|
|
17
|
-
- A therapy/clinical tool (no PHI)
|
|
18
|
-
- A UI layer (headless, works behind existing chat interfaces)
|
|
13
|
+
## Installation
|
|
19
14
|
|
|
20
|
-
## Features
|
|
21
|
-
|
|
22
|
-
- **7 MCP Tools** for session management, checkpoints, journeys, and insights
|
|
23
|
-
- **5 MCP Resources** for read-only context access
|
|
24
|
-
- **3 Pre-built Journeys**: Daily Reflection, Gratitude Practice, Weekly Review
|
|
25
|
-
- **Stateful Sessions** that can be paused and resumed
|
|
26
|
-
- **Progress Tracking** with checkpoints and step advancement
|
|
27
|
-
- **User Context** management with preferences and history
|
|
28
|
-
- **OAuth 2.0** authentication for ChatGPT App Store
|
|
29
|
-
|
|
30
|
-
## Quick Start
|
|
31
|
-
|
|
32
|
-
### Prerequisites
|
|
33
|
-
|
|
34
|
-
- Node.js 18+
|
|
35
|
-
- PostgreSQL database (via Supabase)
|
|
36
|
-
- npm or yarn
|
|
37
|
-
|
|
38
|
-
### Installation
|
|
39
|
-
|
|
40
|
-
1. Clone the repository:
|
|
41
|
-
```bash
|
|
42
|
-
git clone https://github.com/wisenbergg/couchloop-mcp.git
|
|
43
|
-
cd couchloop-mcp
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
2. Install dependencies:
|
|
47
|
-
```bash
|
|
48
|
-
npm install
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
3. Set up environment variables:
|
|
52
|
-
```bash
|
|
53
|
-
cp .env.example .env
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
Edit `.env` with your configuration:
|
|
57
|
-
|
|
58
|
-
### Supabase Setup
|
|
59
|
-
|
|
60
|
-
1. Create a new project at [supabase.com](https://supabase.com)
|
|
61
|
-
2. Get your credentials from Project Settings > API:
|
|
62
|
-
- `SUPABASE_URL`: Your project URL
|
|
63
|
-
- `SUPABASE_ANON_KEY`: Your anon/public key
|
|
64
|
-
- `SUPABASE_SERVICE_ROLE_KEY`: Your service role key
|
|
65
|
-
3. Get database URL from Project Settings > Database:
|
|
66
|
-
- `DATABASE_URL`: Your PostgreSQL connection string
|
|
67
|
-
|
|
68
|
-
### Environment Configuration
|
|
69
|
-
|
|
70
|
-
```env
|
|
71
|
-
# Database (Supabase)
|
|
72
|
-
DATABASE_URL=postgresql://postgres:[password]@db.[project].supabase.co:5432/postgres
|
|
73
|
-
SUPABASE_URL=https://[project].supabase.co
|
|
74
|
-
SUPABASE_ANON_KEY=your-anon-key
|
|
75
|
-
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
|
|
76
|
-
|
|
77
|
-
# OAuth (for ChatGPT App Store)
|
|
78
|
-
OAUTH_CLIENT_ID=couchloop_chatgpt
|
|
79
|
-
OAUTH_CLIENT_SECRET=generate-a-secure-secret
|
|
80
|
-
OAUTH_REDIRECT_URI=https://chat.openai.com/aip/plugin/oauth/callback
|
|
81
|
-
JWT_SECRET=minimum-32-character-secret-key-here
|
|
82
|
-
|
|
83
|
-
# Server
|
|
84
|
-
PORT=3000
|
|
85
|
-
NODE_ENV=development
|
|
86
|
-
LOG_LEVEL=info
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### Database Setup
|
|
90
|
-
|
|
91
|
-
1. Push schema to database:
|
|
92
15
|
```bash
|
|
93
|
-
npm
|
|
16
|
+
npm install -g couchloop-eq-mcp
|
|
94
17
|
```
|
|
95
18
|
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
npm run db:seed
|
|
99
|
-
```
|
|
19
|
+
## Setup
|
|
100
20
|
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
npm run db:studio
|
|
104
|
-
```
|
|
21
|
+
### For Claude Desktop
|
|
105
22
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
#### Development Mode
|
|
109
|
-
```bash
|
|
110
|
-
npm run dev
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
#### Production Mode
|
|
114
|
-
```bash
|
|
115
|
-
npm run build
|
|
116
|
-
npm start
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
## MCP Tools
|
|
120
|
-
|
|
121
|
-
### Session Management
|
|
122
|
-
|
|
123
|
-
#### `create_session`
|
|
124
|
-
Start a new guided session, optionally with a journey.
|
|
23
|
+
Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`):
|
|
125
24
|
|
|
126
25
|
```json
|
|
127
26
|
{
|
|
128
|
-
"
|
|
129
|
-
|
|
27
|
+
"mcpServers": {
|
|
28
|
+
"couchloop-eq": {
|
|
29
|
+
"command": "couchloop-eq-mcp",
|
|
30
|
+
"env": {
|
|
31
|
+
"COUCHLOOP_API_KEY": "your-api-key"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
130
35
|
}
|
|
131
36
|
```
|
|
132
37
|
|
|
133
|
-
|
|
134
|
-
Resume a previously paused session.
|
|
38
|
+
### For ChatGPT
|
|
135
39
|
|
|
136
|
-
|
|
137
|
-
{
|
|
138
|
-
"session_id": "uuid-here"
|
|
139
|
-
}
|
|
140
|
-
```
|
|
40
|
+
CouchLoop EQ is available in the ChatGPT App Store. Search for "CouchLoop EQ" and connect with your account.
|
|
141
41
|
|
|
142
|
-
|
|
42
|
+
## Available Tools
|
|
143
43
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
#### `get_journey_status`
|
|
157
|
-
Get current progress in a session/journey.
|
|
158
|
-
|
|
159
|
-
```json
|
|
160
|
-
{
|
|
161
|
-
"session_id": "uuid-here"
|
|
162
|
-
}
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### Journeys
|
|
166
|
-
|
|
167
|
-
#### `list_journeys`
|
|
168
|
-
List available guided journeys.
|
|
169
|
-
|
|
170
|
-
```json
|
|
171
|
-
{
|
|
172
|
-
"tag": "reflection"
|
|
173
|
-
}
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
### Insights
|
|
177
|
-
|
|
178
|
-
#### `save_insight`
|
|
179
|
-
Capture a meaningful insight from the conversation.
|
|
180
|
-
|
|
181
|
-
```json
|
|
182
|
-
{
|
|
183
|
-
"content": "I notice I'm more energized in the mornings",
|
|
184
|
-
"session_id": "uuid-here",
|
|
185
|
-
"tags": ["self-awareness", "energy"]
|
|
186
|
-
}
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
#### `get_user_context`
|
|
190
|
-
Get relevant context about the user for personalization.
|
|
191
|
-
|
|
192
|
-
```json
|
|
193
|
-
{
|
|
194
|
-
"include_recent_insights": true,
|
|
195
|
-
"include_session_history": true
|
|
196
|
-
}
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
## MCP Resources
|
|
200
|
-
|
|
201
|
-
- `session://current` - Current active session state
|
|
202
|
-
- `journey://daily-reflection` - Daily Reflection journey definition
|
|
203
|
-
- `journey://gratitude-practice` - Gratitude Practice journey definition
|
|
204
|
-
- `journey://weekly-review` - Weekly Review journey definition
|
|
205
|
-
- `context://user` - User preferences and recent history
|
|
44
|
+
| Tool | Description |
|
|
45
|
+
|------|-------------|
|
|
46
|
+
| `create_session` | Start a new guided session, optionally with a journey |
|
|
47
|
+
| `resume_session` | Resume a previously paused session |
|
|
48
|
+
| `send_message` | Send a message through the therapeutic AI stack |
|
|
49
|
+
| `save_checkpoint` | Save progress or capture a key moment |
|
|
50
|
+
| `get_checkpoints` | Retrieve all checkpoints for a session |
|
|
51
|
+
| `list_journeys` | List available guided journeys |
|
|
52
|
+
| `get_journey_status` | Get current progress in a session/journey |
|
|
53
|
+
| `save_insight` | Capture a meaningful insight from the conversation |
|
|
54
|
+
| `get_insights` | Retrieve saved insights |
|
|
55
|
+
| `get_user_context` | Get relevant context for personalization |
|
|
206
56
|
|
|
207
57
|
## Available Journeys
|
|
208
58
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
-
|
|
212
|
-
- Identify memorable moment
|
|
213
|
-
- Release what's not needed
|
|
214
|
-
- Summarize and save insights
|
|
215
|
-
|
|
216
|
-
### Gratitude Practice (3 minutes)
|
|
217
|
-
Notice and name three things you appreciate.
|
|
218
|
-
- Something small that made today better
|
|
219
|
-
- Something about yourself you're grateful for
|
|
220
|
-
- Someone you appreciate
|
|
221
|
-
|
|
222
|
-
### Weekly Review (10 minutes)
|
|
223
|
-
Look back on your week and set intentions.
|
|
224
|
-
- Describe the week's tone
|
|
225
|
-
- Acknowledge accomplishments
|
|
226
|
-
- Notice challenges
|
|
227
|
-
- Set intention for next week
|
|
228
|
-
|
|
229
|
-
## Development
|
|
230
|
-
|
|
231
|
-
### Scripts
|
|
232
|
-
|
|
233
|
-
```bash
|
|
234
|
-
# Development with hot reload
|
|
235
|
-
npm run dev
|
|
236
|
-
|
|
237
|
-
# Build TypeScript
|
|
238
|
-
npm run build
|
|
239
|
-
|
|
240
|
-
# Run tests
|
|
241
|
-
npm test
|
|
59
|
+
- **Daily Reflection** (5 min) — A brief check-in to process your day
|
|
60
|
+
- **Gratitude Practice** (3 min) — Notice and name three things you appreciate
|
|
61
|
+
- **Weekly Review** (10 min) — Look back on your week and set intentions
|
|
242
62
|
|
|
243
|
-
|
|
244
|
-
npm run typecheck
|
|
63
|
+
## Example Usage
|
|
245
64
|
|
|
246
|
-
|
|
247
|
-
npm run lint
|
|
248
|
-
|
|
249
|
-
# Database operations
|
|
250
|
-
npm run db:push # Push schema to database
|
|
251
|
-
npm run db:seed # Seed journeys
|
|
252
|
-
npm run db:studio # Open Drizzle Studio
|
|
253
|
-
npm run db:migrate # Run migrations
|
|
254
|
-
|
|
255
|
-
# Setup helpers
|
|
256
|
-
npm run setup # Install deps and build
|
|
257
|
-
npm run setup:db # Initialize database
|
|
65
|
+
Start a daily reflection:
|
|
258
66
|
```
|
|
259
|
-
|
|
260
|
-
### Project Structure
|
|
261
|
-
|
|
67
|
+
"Start a daily reflection session"
|
|
262
68
|
```
|
|
263
|
-
src/
|
|
264
|
-
├── index.ts # MCP server entrypoint
|
|
265
|
-
├── tools/ # MCP tool implementations
|
|
266
|
-
├── resources/ # MCP resource handlers
|
|
267
|
-
├── workflows/ # Journey definitions and engine
|
|
268
|
-
├── db/ # Database schema and client
|
|
269
|
-
├── auth/ # OAuth 2.0 implementation
|
|
270
|
-
├── types/ # TypeScript type definitions
|
|
271
|
-
└── utils/ # Logging and error handling
|
|
272
|
-
api/
|
|
273
|
-
└── oauth/ # OAuth endpoints for Vercel
|
|
274
|
-
├── authorize.ts # Authorization endpoint
|
|
275
|
-
└── token.ts # Token exchange endpoint
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
## Deployment
|
|
279
|
-
|
|
280
|
-
### Vercel Deployment
|
|
281
69
|
|
|
282
|
-
|
|
283
|
-
```bash
|
|
284
|
-
npm install -g vercel
|
|
70
|
+
Resume where you left off:
|
|
285
71
|
```
|
|
286
|
-
|
|
287
|
-
2. Set up environment variables:
|
|
288
|
-
```bash
|
|
289
|
-
vercel env add DATABASE_URL
|
|
290
|
-
vercel env add SUPABASE_URL
|
|
291
|
-
vercel env add SUPABASE_ANON_KEY
|
|
292
|
-
vercel env add SUPABASE_SERVICE_ROLE_KEY
|
|
293
|
-
vercel env add OAUTH_CLIENT_ID
|
|
294
|
-
vercel env add OAUTH_CLIENT_SECRET
|
|
295
|
-
vercel env add OAUTH_REDIRECT_URI
|
|
296
|
-
vercel env add JWT_SECRET
|
|
72
|
+
"Resume my last session"
|
|
297
73
|
```
|
|
298
74
|
|
|
299
|
-
|
|
300
|
-
```bash
|
|
301
|
-
# Deploy to preview
|
|
302
|
-
npm run vercel
|
|
303
|
-
|
|
304
|
-
# Deploy to production
|
|
305
|
-
npm run vercel:prod
|
|
75
|
+
Save an insight:
|
|
306
76
|
```
|
|
307
|
-
|
|
308
|
-
4. Your OAuth endpoints will be available at:
|
|
309
|
-
- `https://your-app.vercel.app/api/oauth/authorize`
|
|
310
|
-
- `https://your-app.vercel.app/api/oauth/token`
|
|
311
|
-
|
|
312
|
-
### ChatGPT App Store Submission
|
|
313
|
-
|
|
314
|
-
1. Update OAuth redirect URI in `.env` to match ChatGPT's callback
|
|
315
|
-
2. Ensure all OAuth endpoints are working
|
|
316
|
-
3. Create test credentials for reviewers
|
|
317
|
-
4. Prepare privacy policy at `/docs/PRIVACY_POLICY.md`
|
|
318
|
-
5. Submit via ChatGPT developer portal with:
|
|
319
|
-
- App name: CouchLoop (or your chosen name)
|
|
320
|
-
- Description: Turn conversations into guided journeys
|
|
321
|
-
- OAuth authorization URL: `https://your-app.vercel.app/api/oauth/authorize`
|
|
322
|
-
- OAuth token URL: `https://your-app.vercel.app/api/oauth/token`
|
|
323
|
-
- Scopes: read, write
|
|
324
|
-
|
|
325
|
-
## Testing
|
|
326
|
-
|
|
327
|
-
Run the test suite:
|
|
328
|
-
|
|
329
|
-
```bash
|
|
330
|
-
npm test
|
|
77
|
+
"Save this insight: I notice I'm more energized in the mornings"
|
|
331
78
|
```
|
|
332
79
|
|
|
333
|
-
|
|
80
|
+
## Get Started
|
|
334
81
|
|
|
335
|
-
|
|
336
|
-
npm run test:watch
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
## Contributing
|
|
340
|
-
|
|
341
|
-
Contributions are welcome! Please read our contributing guidelines and submit PRs to the main branch.
|
|
342
|
-
|
|
343
|
-
## License
|
|
344
|
-
|
|
345
|
-
MIT License - see LICENSE file for details
|
|
82
|
+
Sign up for API access at [couchloop.com](https://couchloop.com)
|
|
346
83
|
|
|
347
84
|
## Support
|
|
348
85
|
|
|
349
|
-
-
|
|
350
|
-
-
|
|
86
|
+
- Issues: [github.com/wisenbergg/couchloop-mcp/issues](https://github.com/wisenbergg/couchloop-mcp/issues)
|
|
87
|
+
- Email: support@couchloop.com
|
|
351
88
|
|
|
352
|
-
##
|
|
89
|
+
## License
|
|
353
90
|
|
|
354
|
-
|
|
355
|
-
- [Model Context Protocol SDK](https://github.com/anthropics/mcp-sdk)
|
|
356
|
-
- [Supabase](https://supabase.com)
|
|
357
|
-
- [Drizzle ORM](https://orm.drizzle.team)
|
|
358
|
-
- [TypeScript](https://www.typescriptlang.org)
|
|
91
|
+
MIT
|
package/package.json
CHANGED