@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 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 **130 tools** for AI agents. Here are the key tools by category:
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 |
@@ -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
- return this.request('POST', `/api/mcp/tasks/${taskId}/complete`, params);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibescope/mcp-server",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "MCP server for Vibescope - AI project tracking tools",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -509,7 +509,7 @@ describe('VibescopeApiClient', () => {
509
509
  });
510
510
 
511
511
  describe('completeTask', () => {
512
- it('should call correct endpoint', async () => {
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/tasks/task-123/complete'),
523
+ expect.stringContaining('/api/mcp/proxy'),
523
524
  expect.objectContaining({
524
525
  method: 'POST',
525
526
  body: JSON.stringify({
526
- summary: 'Task completed successfully',
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
- return this.request('POST', `/api/mcp/tasks/${taskId}/complete`, params);
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<{
@@ -105,20 +105,15 @@ export const startWorkSession: Handler = async (args, ctx) => {
105
105
  });
106
106
  }
107
107
 
108
- // Check for urgent questions - these MUST be handled first
109
- const hasUrgentQuestions = data.URGENT_QUESTIONS || (data.pending_requests && data.pending_requests.length > 0);
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 - URGENT_QUESTIONS at absolute top for maximum visibility
111
+ // Build result
112
112
  const result: Record<string, unknown> = {
113
113
  session_started: true,
114
114
  };
115
115
 
116
- // URGENT_QUESTIONS must be the FIRST thing the agent sees
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 pending requests (questions from user) - these take priority
137
- if (data.pending_requests && data.pending_requests.length > 0) {
138
- result.pending_requests = data.pending_requests;
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