hive-mcp-server 1.1.0 → 1.2.0
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 +73 -26
- package/dist/auth.d.ts +10 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +88 -0
- package/dist/auth.js.map +1 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +149 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +26 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +78 -0
- package/dist/config.js.map +1 -0
- package/dist/db.d.ts +1 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +13 -3
- package/dist/db.js.map +1 -1
- package/dist/index.js +86 -18
- package/dist/index.js.map +1 -1
- package/dist/tools/team.d.ts +5 -0
- package/dist/tools/team.d.ts.map +1 -0
- package/dist/tools/team.js +69 -0
- package/dist/tools/team.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -4,11 +4,13 @@ MCP server for AI dev session logs, development plans, and semantic search. Buil
|
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
- **
|
|
7
|
+
- **17 MCP tools** — Session tracking, Plan management, Index, Team management
|
|
8
|
+
- **Browser auth** — `hive-mcp login` opens browser, no passwords in env vars
|
|
9
|
+
- **Auto project detection** — Detects project from git remote or folder name
|
|
10
|
+
- **Multi-team** — Per-project team mapping, runtime switching
|
|
8
11
|
- **Semantic search** — Hybrid vector + full-text search with RRF fusion via pgvector
|
|
9
12
|
- **Multi-agent** — Works with Claude Code, Codex CLI, Gemini CLI, Cursor
|
|
10
13
|
- **Auto-embedding** — Automatically embeds session logs and plans (server-side, no API keys needed)
|
|
11
|
-
- **Simple auth** — Just your Hive email and password
|
|
12
14
|
|
|
13
15
|
## Quick Setup
|
|
14
16
|
|
|
@@ -18,7 +20,15 @@ MCP server for AI dev session logs, development plans, and semantic search. Buil
|
|
|
18
20
|
npm install -g hive-mcp-server
|
|
19
21
|
```
|
|
20
22
|
|
|
21
|
-
### 2.
|
|
23
|
+
### 2. Login (one-time)
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
hive-mcp login
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
This opens your browser for Hive authentication, then lets you select a team in your terminal. Credentials are saved to `~/.hive-mcp/config.json`.
|
|
30
|
+
|
|
31
|
+
### 3. Configure Claude Code
|
|
22
32
|
|
|
23
33
|
Add to your project's `.claude/mcp.json`:
|
|
24
34
|
|
|
@@ -26,26 +36,46 @@ Add to your project's `.claude/mcp.json`:
|
|
|
26
36
|
{
|
|
27
37
|
"mcpServers": {
|
|
28
38
|
"hive": {
|
|
29
|
-
"command": "hive-mcp"
|
|
30
|
-
"env": {
|
|
31
|
-
"HIVE_EMAIL": "your-email@example.com",
|
|
32
|
-
"HIVE_PASSWORD": "your-password"
|
|
33
|
-
}
|
|
39
|
+
"command": "hive-mcp"
|
|
34
40
|
}
|
|
35
41
|
}
|
|
36
42
|
}
|
|
37
43
|
```
|
|
38
44
|
|
|
39
|
-
That's it! The server
|
|
45
|
+
That's it! No env vars needed. The server auto-detects your project and team.
|
|
40
46
|
|
|
41
|
-
###
|
|
47
|
+
### Or use npx (no install)
|
|
42
48
|
|
|
43
49
|
```json
|
|
44
50
|
{
|
|
45
51
|
"mcpServers": {
|
|
46
52
|
"hive": {
|
|
47
53
|
"command": "npx",
|
|
48
|
-
"args": ["-y", "hive-mcp-server"]
|
|
54
|
+
"args": ["-y", "hive-mcp-server"]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## CLI Commands
|
|
61
|
+
|
|
62
|
+
| Command | Description |
|
|
63
|
+
| ----------------- | ---------------------------------------- |
|
|
64
|
+
| `hive-mcp login` | Browser auth + team selection |
|
|
65
|
+
| `hive-mcp logout` | Clear saved credentials |
|
|
66
|
+
| `hive-mcp team` | Re-select team for current project |
|
|
67
|
+
| `hive-mcp status` | Show login/team/project status |
|
|
68
|
+
| `hive-mcp` | Start MCP server (called by Claude Code) |
|
|
69
|
+
|
|
70
|
+
## Legacy Setup (env vars)
|
|
71
|
+
|
|
72
|
+
For backward compatibility, you can still use environment variables:
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"mcpServers": {
|
|
77
|
+
"hive": {
|
|
78
|
+
"command": "hive-mcp",
|
|
49
79
|
"env": {
|
|
50
80
|
"HIVE_EMAIL": "your-email@example.com",
|
|
51
81
|
"HIVE_PASSWORD": "your-password"
|
|
@@ -55,26 +85,35 @@ That's it! The server will auto-detect your teams and select the first one.
|
|
|
55
85
|
}
|
|
56
86
|
```
|
|
57
87
|
|
|
58
|
-
|
|
88
|
+
### Environment Variables
|
|
59
89
|
|
|
60
|
-
| Variable
|
|
61
|
-
|
|
|
62
|
-
| `HIVE_EMAIL`
|
|
63
|
-
| `HIVE_PASSWORD`
|
|
64
|
-
| `HIVE_TEAM_ID`
|
|
65
|
-
| `HIVE_PROJECT_ID`
|
|
90
|
+
| Variable | Required | Description |
|
|
91
|
+
| ----------------- | -------- | --------------------------- |
|
|
92
|
+
| `HIVE_EMAIL` | No\* | Your Hive account email |
|
|
93
|
+
| `HIVE_PASSWORD` | No\* | Your Hive account password |
|
|
94
|
+
| `HIVE_TEAM_ID` | No | Team UUID override |
|
|
95
|
+
| `HIVE_PROJECT_ID` | No | Project identifier override |
|
|
96
|
+
|
|
97
|
+
\* Required only if not using `hive-mcp login`.
|
|
66
98
|
|
|
67
99
|
## How It Works
|
|
68
100
|
|
|
69
|
-
1.
|
|
70
|
-
2. Auto-detects
|
|
71
|
-
3. Session
|
|
72
|
-
4.
|
|
73
|
-
|
|
101
|
+
1. **Login**: `hive-mcp login` opens browser → authenticate → select team → save tokens
|
|
102
|
+
2. **Auto-detect**: MCP server starts → detects project from git remote → maps to saved team
|
|
103
|
+
3. **Session auth**: Restores Supabase session from saved tokens (auto-refreshes)
|
|
104
|
+
4. **Multi-project**: Different projects can map to different teams automatically
|
|
105
|
+
|
|
106
|
+
### Team Resolution Priority
|
|
107
|
+
|
|
108
|
+
1. `config.projects[projectId].teamId` — per-project mapping
|
|
109
|
+
2. `config.defaultTeamId` — default team
|
|
110
|
+
3. `HIVE_TEAM_ID` env var — legacy override
|
|
111
|
+
4. Auto-select first team
|
|
74
112
|
|
|
75
113
|
## Database Setup
|
|
76
114
|
|
|
77
115
|
Apply the migrations to your Supabase project:
|
|
116
|
+
|
|
78
117
|
- `supabase/migrations/013_dev_logs_semantic.sql` — Tables, RPCs, indexes
|
|
79
118
|
- `supabase/migrations/014_mcp_auth_grants.sql` — Auth grants for user JWT
|
|
80
119
|
|
|
@@ -82,7 +121,7 @@ See the [Hive repo](https://github.com/StudioRaming/hive) for details.
|
|
|
82
121
|
|
|
83
122
|
## Tools
|
|
84
123
|
|
|
85
|
-
### Session Tools
|
|
124
|
+
### Session Tools (6)
|
|
86
125
|
|
|
87
126
|
| Tool | Description |
|
|
88
127
|
| ---------------- | ---------------------------------------------- |
|
|
@@ -93,7 +132,7 @@ See the [Hive repo](https://github.com/StudioRaming/hive) for details.
|
|
|
93
132
|
| `session_read` | Read session by ID or seq number |
|
|
94
133
|
| `session_search` | Semantic + full-text hybrid search |
|
|
95
134
|
|
|
96
|
-
### Plan Tools
|
|
135
|
+
### Plan Tools (6)
|
|
97
136
|
|
|
98
137
|
| Tool | Description |
|
|
99
138
|
| -------------- | -------------------------------------------- |
|
|
@@ -104,13 +143,21 @@ See the [Hive repo](https://github.com/StudioRaming/hive) for details.
|
|
|
104
143
|
| `plan_check` | Toggle checklist items |
|
|
105
144
|
| `plan_archive` | Archive or delete a plan |
|
|
106
145
|
|
|
107
|
-
### Index Tools
|
|
146
|
+
### Index Tools (2)
|
|
108
147
|
|
|
109
148
|
| Tool | Description |
|
|
110
149
|
| --------------- | -------------------------------------- |
|
|
111
150
|
| `index_read` | Session index (like .session-index.md) |
|
|
112
151
|
| `index_current` | Current active session |
|
|
113
152
|
|
|
153
|
+
### Team Tools (3)
|
|
154
|
+
|
|
155
|
+
| Tool | Description |
|
|
156
|
+
| -------------- | -------------------------------------------- |
|
|
157
|
+
| `team_list` | List teams with current team highlighted |
|
|
158
|
+
| `team_switch` | Switch team (in-memory or persist to config) |
|
|
159
|
+
| `project_info` | Show current project/team/auth status |
|
|
160
|
+
|
|
114
161
|
## License
|
|
115
162
|
|
|
116
163
|
MIT
|
package/dist/auth.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface AuthResult {
|
|
2
|
+
accessToken: string;
|
|
3
|
+
refreshToken: string;
|
|
4
|
+
email: string;
|
|
5
|
+
expiresAt: number;
|
|
6
|
+
}
|
|
7
|
+
/** Start callback server, open browser, wait for auth token */
|
|
8
|
+
export declare function startAuthFlow(): Promise<AuthResult>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAMA,UAAU,UAAU;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CA2FnD"}
|
package/dist/auth.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { createServer } from 'node:http';
|
|
2
|
+
import { exec } from 'node:child_process';
|
|
3
|
+
import { platform } from 'node:os';
|
|
4
|
+
const HIVE_ORIGIN = 'https://hive-jade.vercel.app';
|
|
5
|
+
/** Start callback server, open browser, wait for auth token */
|
|
6
|
+
export function startAuthFlow() {
|
|
7
|
+
return new Promise((resolve, reject) => {
|
|
8
|
+
const timeout = setTimeout(() => {
|
|
9
|
+
server.close();
|
|
10
|
+
reject(new Error('Auth timed out after 5 minutes. Please try again.'));
|
|
11
|
+
}, 5 * 60 * 1000);
|
|
12
|
+
const server = createServer((req, res) => {
|
|
13
|
+
// CORS preflight
|
|
14
|
+
if (req.method === 'OPTIONS') {
|
|
15
|
+
res.writeHead(204, {
|
|
16
|
+
'Access-Control-Allow-Origin': HIVE_ORIGIN,
|
|
17
|
+
'Access-Control-Allow-Methods': 'POST',
|
|
18
|
+
'Access-Control-Allow-Headers': 'Content-Type',
|
|
19
|
+
});
|
|
20
|
+
res.end();
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (req.method === 'POST' && req.url === '/callback') {
|
|
24
|
+
let body = '';
|
|
25
|
+
req.on('data', (chunk) => {
|
|
26
|
+
body += chunk.toString();
|
|
27
|
+
});
|
|
28
|
+
req.on('end', () => {
|
|
29
|
+
try {
|
|
30
|
+
const data = JSON.parse(body);
|
|
31
|
+
if (!data.access_token || !data.refresh_token || !data.email) {
|
|
32
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
33
|
+
res.end(JSON.stringify({ error: 'Missing required fields' }));
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
res.writeHead(200, {
|
|
37
|
+
'Access-Control-Allow-Origin': HIVE_ORIGIN,
|
|
38
|
+
'Content-Type': 'application/json',
|
|
39
|
+
});
|
|
40
|
+
res.end(JSON.stringify({ ok: true }));
|
|
41
|
+
clearTimeout(timeout);
|
|
42
|
+
server.close();
|
|
43
|
+
resolve({
|
|
44
|
+
accessToken: data.access_token,
|
|
45
|
+
refreshToken: data.refresh_token,
|
|
46
|
+
email: data.email,
|
|
47
|
+
expiresAt: data.expires_at ?? Math.floor(Date.now() / 1000) + 3600,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
52
|
+
res.end(JSON.stringify({ error: 'Invalid JSON' }));
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
res.writeHead(404);
|
|
58
|
+
res.end();
|
|
59
|
+
});
|
|
60
|
+
// Use port 0 to get a random available port
|
|
61
|
+
server.listen(0, '127.0.0.1', () => {
|
|
62
|
+
const addr = server.address();
|
|
63
|
+
if (!addr || typeof addr === 'string') {
|
|
64
|
+
reject(new Error('Failed to start callback server'));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const port = addr.port;
|
|
68
|
+
const url = `${HIVE_ORIGIN}/mcp-auth?port=${port}`;
|
|
69
|
+
console.log(`\nOpening browser for authentication...`);
|
|
70
|
+
console.log(`If the browser doesn't open, visit: ${url}\n`);
|
|
71
|
+
openBrowser(url);
|
|
72
|
+
});
|
|
73
|
+
server.on('error', (err) => {
|
|
74
|
+
clearTimeout(timeout);
|
|
75
|
+
reject(new Error(`Callback server error: ${err.message}`));
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function openBrowser(url) {
|
|
80
|
+
const os = platform();
|
|
81
|
+
const cmd = os === 'darwin' ? `open "${url}"` : os === 'win32' ? `start "" "${url}"` : `xdg-open "${url}"`;
|
|
82
|
+
exec(cmd, (err) => {
|
|
83
|
+
if (err) {
|
|
84
|
+
console.log(`Could not open browser automatically.`);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA6C,MAAM,WAAW,CAAA;AACnF,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC,MAAM,WAAW,GAAG,8BAA8B,CAAA;AASlD,+DAA+D;AAC/D,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,UAAU,CACxB,GAAG,EAAE;YACH,MAAM,CAAC,KAAK,EAAE,CAAA;YACd,MAAM,CAAC,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAA;QACxE,CAAC,EACD,CAAC,GAAG,EAAE,GAAG,IAAI,CACd,CAAA;QAED,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAoB,EAAE,GAAmB,EAAE,EAAE;YACxE,iBAAiB;YACjB,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;oBACjB,6BAA6B,EAAE,WAAW;oBAC1C,8BAA8B,EAAE,MAAM;oBACtC,8BAA8B,EAAE,cAAc;iBAC/C,CAAC,CAAA;gBACF,GAAG,CAAC,GAAG,EAAE,CAAA;gBACT,OAAM;YACR,CAAC;YAED,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;gBACrD,IAAI,IAAI,GAAG,EAAE,CAAA;gBACb,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC/B,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;gBAC1B,CAAC,CAAC,CAAA;gBACF,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBACjB,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAK3B,CAAA;wBAED,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;4BAC7D,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAA;4BAC1D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAA;4BAC7D,OAAM;wBACR,CAAC;wBAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;4BACjB,6BAA6B,EAAE,WAAW;4BAC1C,cAAc,EAAE,kBAAkB;yBACnC,CAAC,CAAA;wBACF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;wBAErC,YAAY,CAAC,OAAO,CAAC,CAAA;wBACrB,MAAM,CAAC,KAAK,EAAE,CAAA;wBAEd,OAAO,CAAC;4BACN,WAAW,EAAE,IAAI,CAAC,YAAY;4BAC9B,YAAY,EAAE,IAAI,CAAC,aAAa;4BAChC,KAAK,EAAE,IAAI,CAAC,KAAK;4BACjB,SAAS,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI;yBACnE,CAAC,CAAA;oBACJ,CAAC;oBAAC,MAAM,CAAC;wBACP,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAA;wBAC1D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAA;oBACpD,CAAC;gBACH,CAAC,CAAC,CAAA;gBACF,OAAM;YACR,CAAC;YAED,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YAClB,GAAG,CAAC,GAAG,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;QAEF,4CAA4C;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;YACjC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;YAC7B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAA;gBACpD,OAAM;YACR,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACtB,MAAM,GAAG,GAAG,GAAG,WAAW,kBAAkB,IAAI,EAAE,CAAA;YAElD,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;YACtD,OAAO,CAAC,GAAG,CAAC,uCAAuC,GAAG,IAAI,CAAC,CAAA;YAE3D,WAAW,CAAC,GAAG,CAAC,CAAA;QAClB,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,YAAY,CAAC,OAAO,CAAC,CAAA;YACrB,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IACrB,MAAM,GAAG,GACP,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,aAAa,GAAG,GAAG,CAAA;IAEhG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;QAChB,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAA;QACtD,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AA2CA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CA0D9C;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAG/C;AAED,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA4C7C;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA2B/C"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { createClient } from '@supabase/supabase-js';
|
|
2
|
+
import { readConfig, writeConfig, deleteConfig, detectProjectId, resolveTeamForProject, } from './config.js';
|
|
3
|
+
import { startAuthFlow } from './auth.js';
|
|
4
|
+
import * as readline from 'node:readline';
|
|
5
|
+
// Hive Supabase project (public, safe to embed)
|
|
6
|
+
const HIVE_SUPABASE_URL = 'https://rainckslfkbmapqfkiaq.supabase.co';
|
|
7
|
+
const HIVE_ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJhaW5ja3NsZmtibWFwcWZraWFxIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzIwMzczNjMsImV4cCI6MjA4NzYxMzM2M30.vvnfWQQui9AlbLjD0PgzCizybETy3IhtzQto-zSpD7o';
|
|
8
|
+
async function getTeams(accessToken, refreshToken) {
|
|
9
|
+
const db = createClient(HIVE_SUPABASE_URL, HIVE_ANON_KEY, {
|
|
10
|
+
auth: { persistSession: false, autoRefreshToken: false },
|
|
11
|
+
});
|
|
12
|
+
await db.auth.setSession({ access_token: accessToken, refresh_token: refreshToken });
|
|
13
|
+
const { data, error } = await db.from('team_members').select('team_id, role, teams(name)');
|
|
14
|
+
if (error)
|
|
15
|
+
throw new Error(`Failed to get teams: ${error.message}`);
|
|
16
|
+
return (data ?? []).map((row) => ({
|
|
17
|
+
team_id: row.team_id,
|
|
18
|
+
team_name: row.teams?.name ?? 'unknown',
|
|
19
|
+
role: row.role,
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
function prompt(question) {
|
|
23
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
24
|
+
return new Promise((resolve) => {
|
|
25
|
+
rl.question(question, (answer) => {
|
|
26
|
+
rl.close();
|
|
27
|
+
resolve(answer.trim());
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export async function cmdLogin() {
|
|
32
|
+
console.log('Hive MCP — Browser Login\n');
|
|
33
|
+
// Start browser auth flow
|
|
34
|
+
const authResult = await startAuthFlow();
|
|
35
|
+
console.log(`\n✓ Authenticated as ${authResult.email}`);
|
|
36
|
+
// Get teams
|
|
37
|
+
const teams = await getTeams(authResult.accessToken, authResult.refreshToken);
|
|
38
|
+
if (teams.length === 0) {
|
|
39
|
+
console.log('✗ No teams found for this account.');
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
// Select team
|
|
43
|
+
let selectedTeam;
|
|
44
|
+
if (teams.length === 1) {
|
|
45
|
+
selectedTeam = teams[0];
|
|
46
|
+
console.log(`✓ Auto-selected team: ${selectedTeam.team_name}`);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
console.log('\nYour teams:');
|
|
50
|
+
teams.forEach((t, i) => {
|
|
51
|
+
console.log(` ${i + 1}. ${t.team_name} (${t.role})`);
|
|
52
|
+
});
|
|
53
|
+
const answer = await prompt(`\nSelect team [1-${teams.length}]: `);
|
|
54
|
+
const idx = parseInt(answer, 10) - 1;
|
|
55
|
+
if (isNaN(idx) || idx < 0 || idx >= teams.length) {
|
|
56
|
+
console.log('✗ Invalid selection.');
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
selectedTeam = teams[idx];
|
|
60
|
+
}
|
|
61
|
+
// Detect project and save config
|
|
62
|
+
const projectId = detectProjectId();
|
|
63
|
+
const existing = readConfig();
|
|
64
|
+
const config = {
|
|
65
|
+
...existing,
|
|
66
|
+
auth: {
|
|
67
|
+
accessToken: authResult.accessToken,
|
|
68
|
+
refreshToken: authResult.refreshToken,
|
|
69
|
+
email: authResult.email,
|
|
70
|
+
expiresAt: authResult.expiresAt,
|
|
71
|
+
},
|
|
72
|
+
defaultTeamId: selectedTeam.team_id,
|
|
73
|
+
defaultTeamName: selectedTeam.team_name,
|
|
74
|
+
projects: {
|
|
75
|
+
...existing.projects,
|
|
76
|
+
[projectId]: { teamId: selectedTeam.team_id, teamName: selectedTeam.team_name },
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
writeConfig(config);
|
|
80
|
+
console.log(`\n✓ Logged in as ${authResult.email} (team: ${selectedTeam.team_name})`);
|
|
81
|
+
console.log(` Project: ${projectId}`);
|
|
82
|
+
console.log(` Config saved to ~/.hive-mcp/config.json`);
|
|
83
|
+
}
|
|
84
|
+
export async function cmdLogout() {
|
|
85
|
+
deleteConfig();
|
|
86
|
+
console.log('✓ Logged out. Config cleared.');
|
|
87
|
+
}
|
|
88
|
+
export async function cmdTeam() {
|
|
89
|
+
const config = readConfig();
|
|
90
|
+
if (!config.auth?.accessToken) {
|
|
91
|
+
console.log('✗ Not logged in. Run: hive-mcp login');
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
const teams = await getTeams(config.auth.accessToken, config.auth.refreshToken);
|
|
95
|
+
if (teams.length === 0) {
|
|
96
|
+
console.log('✗ No teams found.');
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
const projectId = detectProjectId();
|
|
100
|
+
const currentTeam = resolveTeamForProject(config, projectId);
|
|
101
|
+
console.log(`Current project: ${projectId}`);
|
|
102
|
+
if (currentTeam) {
|
|
103
|
+
console.log(`Current team: ${currentTeam.teamName}\n`);
|
|
104
|
+
}
|
|
105
|
+
console.log('Your teams:');
|
|
106
|
+
teams.forEach((t, i) => {
|
|
107
|
+
const marker = currentTeam?.teamId === t.team_id ? ' ← current' : '';
|
|
108
|
+
console.log(` ${i + 1}. ${t.team_name} (${t.role})${marker}`);
|
|
109
|
+
});
|
|
110
|
+
const answer = await prompt(`\nSelect team for "${projectId}" [1-${teams.length}]: `);
|
|
111
|
+
const idx = parseInt(answer, 10) - 1;
|
|
112
|
+
if (isNaN(idx) || idx < 0 || idx >= teams.length) {
|
|
113
|
+
console.log('✗ Invalid selection.');
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
const selected = teams[idx];
|
|
117
|
+
config.projects = {
|
|
118
|
+
...config.projects,
|
|
119
|
+
[projectId]: { teamId: selected.team_id, teamName: selected.team_name },
|
|
120
|
+
};
|
|
121
|
+
config.defaultTeamId = selected.team_id;
|
|
122
|
+
config.defaultTeamName = selected.team_name;
|
|
123
|
+
writeConfig(config);
|
|
124
|
+
console.log(`\n✓ Team updated: ${selected.team_name} (project: ${projectId})`);
|
|
125
|
+
}
|
|
126
|
+
export async function cmdStatus() {
|
|
127
|
+
const config = readConfig();
|
|
128
|
+
const projectId = detectProjectId();
|
|
129
|
+
console.log('Hive MCP Status\n');
|
|
130
|
+
if (!config.auth?.email) {
|
|
131
|
+
console.log('Auth: Not logged in');
|
|
132
|
+
console.log(' Run: hive-mcp login');
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
const expired = config.auth.expiresAt < Math.floor(Date.now() / 1000);
|
|
136
|
+
console.log(`Auth: ${config.auth.email}${expired ? ' (token expired, will auto-refresh)' : ''}`);
|
|
137
|
+
}
|
|
138
|
+
const team = resolveTeamForProject(config, projectId);
|
|
139
|
+
console.log(`Team: ${team?.teamName ?? 'not set'}`);
|
|
140
|
+
console.log(`Project: ${projectId}`);
|
|
141
|
+
if (config.projects && Object.keys(config.projects).length > 0) {
|
|
142
|
+
console.log('\nProject mappings:');
|
|
143
|
+
for (const [proj, mapping] of Object.entries(config.projects)) {
|
|
144
|
+
const marker = proj === projectId ? ' ← current' : '';
|
|
145
|
+
console.log(` ${proj} → ${mapping.teamName}${marker}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface StoredConfig {
|
|
2
|
+
auth?: {
|
|
3
|
+
accessToken: string;
|
|
4
|
+
refreshToken: string;
|
|
5
|
+
email: string;
|
|
6
|
+
expiresAt: number;
|
|
7
|
+
};
|
|
8
|
+
defaultTeamId?: string;
|
|
9
|
+
defaultTeamName?: string;
|
|
10
|
+
projects?: Record<string, {
|
|
11
|
+
teamId: string;
|
|
12
|
+
teamName: string;
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
15
|
+
export declare function getConfigDir(): string;
|
|
16
|
+
export declare function readConfig(): StoredConfig;
|
|
17
|
+
export declare function writeConfig(config: StoredConfig): void;
|
|
18
|
+
export declare function deleteConfig(): void;
|
|
19
|
+
/** Detect project ID from git remote or folder name */
|
|
20
|
+
export declare function detectProjectId(): string;
|
|
21
|
+
/** Resolve team ID for a project */
|
|
22
|
+
export declare function resolveTeamForProject(config: StoredConfig, projectId: string): {
|
|
23
|
+
teamId: string;
|
|
24
|
+
teamName: string;
|
|
25
|
+
} | null;
|
|
26
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE;QACL,WAAW,EAAE,MAAM,CAAA;QACnB,YAAY,EAAE,MAAM,CAAA;QACpB,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAChE;AAKD,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,UAAU,IAAI,YAAY,CAQzC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAKtD;AAED,wBAAgB,YAAY,IAAI,IAAI,CAQnC;AAED,uDAAuD;AACvD,wBAAgB,eAAe,IAAI,MAAM,CAuBxC;AAED,oCAAoC;AACpC,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,GAChB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAe7C"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
2
|
+
import { join, basename } from 'node:path';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { execSync } from 'node:child_process';
|
|
5
|
+
const CONFIG_DIR = join(homedir(), '.hive-mcp');
|
|
6
|
+
const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
|
|
7
|
+
export function getConfigDir() {
|
|
8
|
+
return CONFIG_DIR;
|
|
9
|
+
}
|
|
10
|
+
export function readConfig() {
|
|
11
|
+
try {
|
|
12
|
+
if (!existsSync(CONFIG_FILE))
|
|
13
|
+
return {};
|
|
14
|
+
const raw = readFileSync(CONFIG_FILE, 'utf-8');
|
|
15
|
+
return JSON.parse(raw);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function writeConfig(config) {
|
|
22
|
+
if (!existsSync(CONFIG_DIR)) {
|
|
23
|
+
mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });
|
|
24
|
+
}
|
|
25
|
+
writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2), { mode: 0o600 });
|
|
26
|
+
}
|
|
27
|
+
export function deleteConfig() {
|
|
28
|
+
try {
|
|
29
|
+
if (existsSync(CONFIG_FILE)) {
|
|
30
|
+
writeFileSync(CONFIG_FILE, '{}', { mode: 0o600 });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// ignore
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/** Detect project ID from git remote or folder name */
|
|
38
|
+
export function detectProjectId() {
|
|
39
|
+
// Env override
|
|
40
|
+
const envProject = process.env['HIVE_PROJECT_ID'];
|
|
41
|
+
if (envProject)
|
|
42
|
+
return envProject;
|
|
43
|
+
// Try git remote
|
|
44
|
+
try {
|
|
45
|
+
const url = execSync('git remote get-url origin', {
|
|
46
|
+
encoding: 'utf-8',
|
|
47
|
+
timeout: 3000,
|
|
48
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
49
|
+
}).trim();
|
|
50
|
+
// https://github.com/StudioRaming/hive.git → hive
|
|
51
|
+
// git@github.com:StudioRaming/vdesk.git → vdesk
|
|
52
|
+
const match = url.match(/[/:]([^/:]+?)(?:\.git)?$/);
|
|
53
|
+
if (match?.[1])
|
|
54
|
+
return match[1];
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// no git or no remote
|
|
58
|
+
}
|
|
59
|
+
// Fallback: folder name
|
|
60
|
+
return basename(process.cwd());
|
|
61
|
+
}
|
|
62
|
+
/** Resolve team ID for a project */
|
|
63
|
+
export function resolveTeamForProject(config, projectId) {
|
|
64
|
+
// 1. Project-specific mapping
|
|
65
|
+
const projectMapping = config.projects?.[projectId];
|
|
66
|
+
if (projectMapping)
|
|
67
|
+
return projectMapping;
|
|
68
|
+
// 2. Default team
|
|
69
|
+
if (config.defaultTeamId) {
|
|
70
|
+
return { teamId: config.defaultTeamId, teamName: config.defaultTeamName ?? 'unknown' };
|
|
71
|
+
}
|
|
72
|
+
// 3. Env var fallback
|
|
73
|
+
const envTeamId = process.env['HIVE_TEAM_ID'];
|
|
74
|
+
if (envTeamId)
|
|
75
|
+
return { teamId: envTeamId, teamName: 'env' };
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/db.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type SupabaseClient } from '@supabase/supabase-js';
|
|
|
2
2
|
import type { ServerConfig, DevSession, DevPlan, MemoryChunk, HybridSearchResult } from './types.js';
|
|
3
3
|
export declare function getSupabase(config: ServerConfig): SupabaseClient;
|
|
4
4
|
export declare function signIn(db: SupabaseClient, email: string, password: string): Promise<string>;
|
|
5
|
+
export declare function setSession(db: SupabaseClient, accessToken: string, refreshToken: string): Promise<string>;
|
|
5
6
|
export declare function getUserTeams(db: SupabaseClient): Promise<Array<{
|
|
6
7
|
team_id: string;
|
|
7
8
|
team_name: string;
|
package/dist/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAIpG,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc,CAOhE;AAGD,wBAAsB,MAAM,
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/dist/db.js
CHANGED
|
@@ -15,11 +15,21 @@ export async function signIn(db, email, password) {
|
|
|
15
15
|
throw new Error(`Auth failed: ${error.message}`);
|
|
16
16
|
return data.session.access_token;
|
|
17
17
|
}
|
|
18
|
+
// Set session from stored tokens (browser auth flow)
|
|
19
|
+
export async function setSession(db, accessToken, refreshToken) {
|
|
20
|
+
const { data, error } = await db.auth.setSession({
|
|
21
|
+
access_token: accessToken,
|
|
22
|
+
refresh_token: refreshToken,
|
|
23
|
+
});
|
|
24
|
+
if (error)
|
|
25
|
+
throw new Error(`Session restore failed: ${error.message}`);
|
|
26
|
+
if (!data.session)
|
|
27
|
+
throw new Error('Session restore returned no session');
|
|
28
|
+
return data.session.access_token;
|
|
29
|
+
}
|
|
18
30
|
// Get user's teams
|
|
19
31
|
export async function getUserTeams(db) {
|
|
20
|
-
const { data, error } = await db
|
|
21
|
-
.from('team_members')
|
|
22
|
-
.select('team_id, role, teams(name)');
|
|
32
|
+
const { data, error } = await db.from('team_members').select('team_id, role, teams(name)');
|
|
23
33
|
if (error)
|
|
24
34
|
throw new Error(`Failed to get teams: ${error.message}`);
|
|
25
35
|
return (data ?? []).map((row) => ({
|
package/dist/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAuB,MAAM,uBAAuB,CAAA;AAGzE,IAAI,MAAM,GAA0B,IAAI,CAAA;AAExC,MAAM,UAAU,WAAW,CAAC,MAAoB;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,eAAe,EAAE;YAChE,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE;SACxD,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,KAAK,UAAU,MAAM,
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,41 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { FastMCP } from 'fastmcp';
|
|
3
|
-
import { getSupabase, signIn, getUserTeams } from './db.js';
|
|
3
|
+
import { getSupabase, signIn, setSession, getUserTeams } from './db.js';
|
|
4
4
|
import { initEmbedder } from './embed.js';
|
|
5
5
|
import { registerSessionTools } from './tools/session.js';
|
|
6
6
|
import { registerPlanTools } from './tools/plan.js';
|
|
7
7
|
import { registerIndexTools } from './tools/index.js';
|
|
8
|
+
import { registerTeamTools } from './tools/team.js';
|
|
9
|
+
import { readConfig, detectProjectId, resolveTeamForProject } from './config.js';
|
|
10
|
+
import { cmdLogin, cmdLogout, cmdTeam, cmdStatus } from './cli.js';
|
|
8
11
|
// Hive Supabase project (public, safe to embed)
|
|
9
12
|
const HIVE_SUPABASE_URL = 'https://rainckslfkbmapqfkiaq.supabase.co';
|
|
10
13
|
const HIVE_ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJhaW5ja3NsZmtibWFwcWZraWFxIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzIwMzczNjMsImV4cCI6MjA4NzYxMzM2M30.vvnfWQQui9AlbLjD0PgzCizybETy3IhtzQto-zSpD7o';
|
|
11
|
-
|
|
14
|
+
/** Resolve config from config.json (browser auth) or env vars (legacy) */
|
|
15
|
+
function resolveConfig() {
|
|
16
|
+
const stored = readConfig();
|
|
17
|
+
const projectId = detectProjectId();
|
|
18
|
+
// Browser auth: config.json has tokens
|
|
19
|
+
if (stored.auth?.accessToken && stored.auth?.refreshToken) {
|
|
20
|
+
const team = resolveTeamForProject(stored, projectId);
|
|
21
|
+
return {
|
|
22
|
+
supabaseUrl: HIVE_SUPABASE_URL,
|
|
23
|
+
supabaseAnonKey: HIVE_ANON_KEY,
|
|
24
|
+
email: stored.auth.email,
|
|
25
|
+
password: '', // not needed with token auth
|
|
26
|
+
teamId: team?.teamId ?? '',
|
|
27
|
+
projectId,
|
|
28
|
+
accessToken: stored.auth.accessToken,
|
|
29
|
+
refreshToken: stored.auth.refreshToken,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
// Legacy: env vars
|
|
12
33
|
const email = process.env['HIVE_EMAIL'];
|
|
13
34
|
const password = process.env['HIVE_PASSWORD'];
|
|
14
35
|
if (!email || !password) {
|
|
15
|
-
|
|
36
|
+
console.error('[hive-mcp] No auth found. Run: hive-mcp login');
|
|
37
|
+
console.error('[hive-mcp] Or set HIVE_EMAIL and HIVE_PASSWORD env vars.');
|
|
38
|
+
process.exit(1);
|
|
16
39
|
}
|
|
17
40
|
return {
|
|
18
41
|
supabaseUrl: process.env['SUPABASE_URL'] ?? HIVE_SUPABASE_URL,
|
|
@@ -20,18 +43,30 @@ function getConfig() {
|
|
|
20
43
|
email,
|
|
21
44
|
password,
|
|
22
45
|
teamId: process.env['HIVE_TEAM_ID'] ?? '',
|
|
23
|
-
projectId
|
|
46
|
+
projectId,
|
|
24
47
|
accessToken: null,
|
|
48
|
+
refreshToken: null,
|
|
25
49
|
};
|
|
26
50
|
}
|
|
27
|
-
async function
|
|
28
|
-
const config =
|
|
51
|
+
async function startMcpServer() {
|
|
52
|
+
const config = resolveConfig();
|
|
29
53
|
const db = getSupabase(config);
|
|
30
|
-
// Authenticate
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
54
|
+
// Authenticate
|
|
55
|
+
let token;
|
|
56
|
+
if (config.accessToken && config.refreshToken) {
|
|
57
|
+
// Browser auth: restore session from stored tokens
|
|
58
|
+
console.error('[hive-mcp] Restoring session from saved tokens...');
|
|
59
|
+
token = await setSession(db, config.accessToken, config.refreshToken);
|
|
60
|
+
config.accessToken = token;
|
|
61
|
+
console.error('[hive-mcp] Session restored successfully');
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// Legacy: email/password sign-in
|
|
65
|
+
console.error('[hive-mcp] Signing in with email/password...');
|
|
66
|
+
token = await signIn(db, config.email, config.password);
|
|
67
|
+
config.accessToken = token;
|
|
68
|
+
console.error('[hive-mcp] Authenticated successfully');
|
|
69
|
+
}
|
|
35
70
|
// Resolve team ID
|
|
36
71
|
if (!config.teamId) {
|
|
37
72
|
const teams = await getUserTeams(db);
|
|
@@ -42,24 +77,57 @@ async function main() {
|
|
|
42
77
|
console.error(`[hive-mcp] Auto-selected team: ${teams[0].team_name} (${config.teamId})`);
|
|
43
78
|
if (teams.length > 1) {
|
|
44
79
|
console.error(`[hive-mcp] Available teams: ${teams.map((t) => `${t.team_name} (${t.team_id})`).join(', ')}`);
|
|
45
|
-
console.error('[hive-mcp]
|
|
80
|
+
console.error('[hive-mcp] Run: hive-mcp team — to select a different team');
|
|
46
81
|
}
|
|
47
82
|
}
|
|
83
|
+
console.error(`[hive-mcp] Project: ${config.projectId}`);
|
|
48
84
|
// Init embedder with Edge Function endpoint
|
|
49
85
|
initEmbedder(config.supabaseUrl, token);
|
|
50
86
|
const server = new FastMCP({
|
|
51
87
|
name: 'hive',
|
|
52
|
-
version: '1.0
|
|
88
|
+
version: '1.2.0',
|
|
53
89
|
});
|
|
54
|
-
// Register all 14 tools
|
|
90
|
+
// Register all tools (14 existing + 3 new team tools)
|
|
55
91
|
registerSessionTools(server, db, config);
|
|
56
92
|
registerPlanTools(server, db, config);
|
|
57
93
|
registerIndexTools(server, db, config);
|
|
94
|
+
registerTeamTools(server, db, config);
|
|
58
95
|
// Start with stdio transport
|
|
59
96
|
server.start({ transportType: 'stdio' });
|
|
60
97
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
98
|
+
// CLI router
|
|
99
|
+
const command = process.argv[2];
|
|
100
|
+
switch (command) {
|
|
101
|
+
case 'login':
|
|
102
|
+
cmdLogin().catch((err) => {
|
|
103
|
+
console.error(`Error: ${err.message}`);
|
|
104
|
+
process.exit(1);
|
|
105
|
+
});
|
|
106
|
+
break;
|
|
107
|
+
case 'logout':
|
|
108
|
+
cmdLogout().catch((err) => {
|
|
109
|
+
console.error(`Error: ${err.message}`);
|
|
110
|
+
process.exit(1);
|
|
111
|
+
});
|
|
112
|
+
break;
|
|
113
|
+
case 'team':
|
|
114
|
+
cmdTeam().catch((err) => {
|
|
115
|
+
console.error(`Error: ${err.message}`);
|
|
116
|
+
process.exit(1);
|
|
117
|
+
});
|
|
118
|
+
break;
|
|
119
|
+
case 'status':
|
|
120
|
+
cmdStatus().catch((err) => {
|
|
121
|
+
console.error(`Error: ${err.message}`);
|
|
122
|
+
process.exit(1);
|
|
123
|
+
});
|
|
124
|
+
break;
|
|
125
|
+
default:
|
|
126
|
+
// No command = start MCP server (called by Claude Code)
|
|
127
|
+
startMcpServer().catch((err) => {
|
|
128
|
+
console.error(`[hive-mcp] Fatal: ${err.message}`);
|
|
129
|
+
process.exit(1);
|
|
130
|
+
});
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
65
133
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FastMCP } from 'fastmcp';
|
|
2
|
+
import type { SupabaseClient } from '@supabase/supabase-js';
|
|
3
|
+
import type { ServerConfig } from '../types.js';
|
|
4
|
+
export declare function registerTeamTools(server: FastMCP, db: SupabaseClient, config: ServerConfig): void;
|
|
5
|
+
//# sourceMappingURL=team.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../src/tools/team.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI/C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,QAwE1F"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { getUserTeams } from '../db.js';
|
|
3
|
+
import { readConfig, writeConfig, detectProjectId } from '../config.js';
|
|
4
|
+
export function registerTeamTools(server, db, config) {
|
|
5
|
+
// === team_list ===
|
|
6
|
+
server.addTool({
|
|
7
|
+
name: 'team_list',
|
|
8
|
+
description: 'List all teams the user belongs to, with current team highlighted.',
|
|
9
|
+
parameters: z.object({}),
|
|
10
|
+
execute: async () => {
|
|
11
|
+
const teams = await getUserTeams(db);
|
|
12
|
+
const lines = teams.map((t) => {
|
|
13
|
+
const marker = t.team_id === config.teamId ? ' ← current' : '';
|
|
14
|
+
return `- ${t.team_name} (${t.role}) [${t.team_id}]${marker}`;
|
|
15
|
+
});
|
|
16
|
+
return lines.join('\n') || 'No teams found.';
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
// === team_switch ===
|
|
20
|
+
server.addTool({
|
|
21
|
+
name: 'team_switch',
|
|
22
|
+
description: 'Switch to a different team. Use persist=true to save the mapping for the current project.',
|
|
23
|
+
parameters: z.object({
|
|
24
|
+
team_id: z.string().describe('Team UUID to switch to'),
|
|
25
|
+
persist: z.boolean().default(false).describe('Save mapping to config.json'),
|
|
26
|
+
}),
|
|
27
|
+
execute: async (args) => {
|
|
28
|
+
// Verify team exists
|
|
29
|
+
const teams = await getUserTeams(db);
|
|
30
|
+
const target = teams.find((t) => t.team_id === args.team_id);
|
|
31
|
+
if (!target) {
|
|
32
|
+
return `Error: Team ${args.team_id} not found. Use team_list to see available teams.`;
|
|
33
|
+
}
|
|
34
|
+
// Update in-memory config
|
|
35
|
+
const oldTeam = config.teamId;
|
|
36
|
+
config.teamId = target.team_id;
|
|
37
|
+
// Persist if requested
|
|
38
|
+
if (args.persist) {
|
|
39
|
+
const stored = readConfig();
|
|
40
|
+
const projectId = detectProjectId();
|
|
41
|
+
stored.projects = {
|
|
42
|
+
...stored.projects,
|
|
43
|
+
[projectId]: { teamId: target.team_id, teamName: target.team_name },
|
|
44
|
+
};
|
|
45
|
+
stored.defaultTeamId = target.team_id;
|
|
46
|
+
stored.defaultTeamName = target.team_name;
|
|
47
|
+
writeConfig(stored);
|
|
48
|
+
}
|
|
49
|
+
return `Switched team: ${oldTeam} → ${target.team_name} (${target.team_id})${args.persist ? ' [saved]' : ' [session only]'}`;
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
// === project_info ===
|
|
53
|
+
server.addTool({
|
|
54
|
+
name: 'project_info',
|
|
55
|
+
description: 'Show current project ID, team ID, and team name. Use this to confirm which team/project sessions are being recorded to.',
|
|
56
|
+
parameters: z.object({}),
|
|
57
|
+
execute: async () => {
|
|
58
|
+
const teams = await getUserTeams(db);
|
|
59
|
+
const currentTeam = teams.find((t) => t.team_id === config.teamId);
|
|
60
|
+
return [
|
|
61
|
+
`Project: ${config.projectId}`,
|
|
62
|
+
`Team: ${currentTeam?.team_name ?? 'unknown'} (${config.teamId})`,
|
|
63
|
+
`Email: ${config.email || 'n/a'}`,
|
|
64
|
+
`Auth: ${config.accessToken ? 'authenticated' : 'not authenticated'}`,
|
|
65
|
+
].join('\n');
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=team.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/tools/team.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hive-mcp-server",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Hive MCP server
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"description": "Hive MCP server — AI dev session logs, plans, and semantic search via Supabase pgvector",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|