@vibescope/mcp-server 0.2.2 → 0.2.3
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 +4 -32
- package/dist/api-client.js +5 -1
- package/package.json +1 -1
- package/src/api-client.test.ts +8 -3
- package/src/api-client.ts +5 -1
- package/src/handlers/session.ts +7 -13
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ Use directly in your MCP config without installing:
|
|
|
13
13
|
"mcpServers": {
|
|
14
14
|
"vibescope": {
|
|
15
15
|
"command": "npx",
|
|
16
|
-
"args": ["-y", "-p", "@vibescope/mcp-server", "vibescope-mcp"],
|
|
16
|
+
"args": ["-y", "-p", "@vibescope/mcp-server@latest", "vibescope-mcp"],
|
|
17
17
|
"env": {
|
|
18
18
|
"VIBESCOPE_API_KEY": "your-api-key"
|
|
19
19
|
}
|
|
@@ -25,7 +25,7 @@ Use directly in your MCP config without installing:
|
|
|
25
25
|
### Option 2: Global Install
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
npm install -g @vibescope/mcp-server
|
|
28
|
+
npm install -g @vibescope/mcp-server@latest
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
Then configure:
|
|
@@ -43,40 +43,12 @@ Then configure:
|
|
|
43
43
|
}
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
### Option 3: From Source (Development)
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
# Clone the repo
|
|
50
|
-
git clone https://github.com/Nonatomic/Vibescope.git
|
|
51
|
-
cd Vibescope
|
|
52
|
-
|
|
53
|
-
# Install dependencies and build
|
|
54
|
-
pnpm install
|
|
55
|
-
pnpm build
|
|
56
|
-
|
|
57
|
-
# Point your MCP config to the built file
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
```json
|
|
61
|
-
{
|
|
62
|
-
"mcpServers": {
|
|
63
|
-
"vibescope": {
|
|
64
|
-
"command": "node",
|
|
65
|
-
"args": ["/path/to/Vibescope/packages/mcp-server/dist/index.js"],
|
|
66
|
-
"env": {
|
|
67
|
-
"VIBESCOPE_API_KEY": "your-api-key"
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
```
|
|
73
|
-
|
|
74
46
|
## Quick Start with Claude Code
|
|
75
47
|
|
|
76
48
|
The easiest way to get started:
|
|
77
49
|
|
|
78
50
|
```bash
|
|
79
|
-
claude mcp add vibescope npx @vibescope/mcp-server \
|
|
51
|
+
claude mcp add vibescope npx @vibescope/mcp-server@latest \
|
|
80
52
|
--env VIBESCOPE_API_KEY=your_key
|
|
81
53
|
```
|
|
82
54
|
|
|
@@ -88,7 +60,7 @@ claude mcp add vibescope npx @vibescope/mcp-server \
|
|
|
88
60
|
|
|
89
61
|
## Available Tools
|
|
90
62
|
|
|
91
|
-
The MCP server provides **
|
|
63
|
+
The MCP server provides **140+ tools** for AI agents. Here are the key tools by category:
|
|
92
64
|
|
|
93
65
|
### Session
|
|
94
66
|
| Tool | Description |
|
package/dist/api-client.js
CHANGED
|
@@ -118,7 +118,11 @@ export class VibescopeApiClient {
|
|
|
118
118
|
return this.request('PATCH', `/api/mcp/tasks/${taskId}`, updates);
|
|
119
119
|
}
|
|
120
120
|
async completeTask(taskId, params) {
|
|
121
|
-
|
|
121
|
+
// Use proxy endpoint for consistency - direct endpoint had routing issues on Vercel
|
|
122
|
+
return this.proxy('complete_task', {
|
|
123
|
+
task_id: taskId,
|
|
124
|
+
summary: params.summary,
|
|
125
|
+
}, params.session_id ? { session_id: params.session_id, persona: null, instance_id: '' } : undefined);
|
|
122
126
|
}
|
|
123
127
|
async deleteTask(taskId) {
|
|
124
128
|
return this.request('DELETE', `/api/mcp/tasks/${taskId}`);
|
package/package.json
CHANGED
package/src/api-client.test.ts
CHANGED
|
@@ -509,7 +509,7 @@ describe('VibescopeApiClient', () => {
|
|
|
509
509
|
});
|
|
510
510
|
|
|
511
511
|
describe('completeTask', () => {
|
|
512
|
-
it('should call
|
|
512
|
+
it('should call proxy endpoint', async () => {
|
|
513
513
|
mockFetch.mockResolvedValue(
|
|
514
514
|
createMockResponse({ success: true })
|
|
515
515
|
);
|
|
@@ -518,12 +518,17 @@ describe('VibescopeApiClient', () => {
|
|
|
518
518
|
summary: 'Task completed successfully',
|
|
519
519
|
});
|
|
520
520
|
|
|
521
|
+
// completeTask uses proxy endpoint for consistency (direct endpoint had Vercel routing issues)
|
|
521
522
|
expect(mockFetch).toHaveBeenCalledWith(
|
|
522
|
-
expect.stringContaining('/api/mcp/
|
|
523
|
+
expect.stringContaining('/api/mcp/proxy'),
|
|
523
524
|
expect.objectContaining({
|
|
524
525
|
method: 'POST',
|
|
525
526
|
body: JSON.stringify({
|
|
526
|
-
|
|
527
|
+
operation: 'complete_task',
|
|
528
|
+
args: {
|
|
529
|
+
task_id: 'task-123',
|
|
530
|
+
summary: 'Task completed successfully',
|
|
531
|
+
},
|
|
527
532
|
}),
|
|
528
533
|
})
|
|
529
534
|
);
|
package/src/api-client.ts
CHANGED
|
@@ -444,7 +444,11 @@ export class VibescopeApiClient {
|
|
|
444
444
|
next_action: string;
|
|
445
445
|
warnings?: string[];
|
|
446
446
|
}>> {
|
|
447
|
-
|
|
447
|
+
// Use proxy endpoint for consistency - direct endpoint had routing issues on Vercel
|
|
448
|
+
return this.proxy('complete_task', {
|
|
449
|
+
task_id: taskId,
|
|
450
|
+
summary: params.summary,
|
|
451
|
+
}, params.session_id ? { session_id: params.session_id, persona: null, instance_id: '' } : undefined);
|
|
448
452
|
}
|
|
449
453
|
|
|
450
454
|
async deleteTask(taskId: string): Promise<ApiResponse<{
|
package/src/handlers/session.ts
CHANGED
|
@@ -105,20 +105,15 @@ export const startWorkSession: Handler = async (args, ctx) => {
|
|
|
105
105
|
});
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
// Check for
|
|
109
|
-
const
|
|
108
|
+
// Check for unanswered questions - these MUST be handled first
|
|
109
|
+
const hasUnansweredQuestions = data.unanswered_questions_count && data.unanswered_questions_count > 0;
|
|
110
110
|
|
|
111
|
-
// Build result
|
|
111
|
+
// Build result
|
|
112
112
|
const result: Record<string, unknown> = {
|
|
113
113
|
session_started: true,
|
|
114
114
|
};
|
|
115
115
|
|
|
116
|
-
//
|
|
117
|
-
if (data.URGENT_QUESTIONS) {
|
|
118
|
-
result.URGENT_QUESTIONS = data.URGENT_QUESTIONS;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// Directive comes right after urgent questions
|
|
116
|
+
// Directive comes first
|
|
122
117
|
result.directive = data.directive || 'ACTION_REQUIRED: Start working immediately.';
|
|
123
118
|
result.auto_continue = true;
|
|
124
119
|
|
|
@@ -133,10 +128,9 @@ export const startWorkSession: Handler = async (args, ctx) => {
|
|
|
133
128
|
result.next_task = data.next_task;
|
|
134
129
|
}
|
|
135
130
|
|
|
136
|
-
// Add
|
|
137
|
-
if (
|
|
138
|
-
result.
|
|
139
|
-
result.pending_requests_count = data.pending_requests.length;
|
|
131
|
+
// Add unanswered questions count (not full array - agent can fetch details when needed)
|
|
132
|
+
if (hasUnansweredQuestions) {
|
|
133
|
+
result.unanswered_questions_count = data.unanswered_questions_count;
|
|
140
134
|
}
|
|
141
135
|
|
|
142
136
|
// Add active tasks for full mode
|