@brain-protocol/mcp 0.6.3 → 0.7.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 +24 -1
- package/dist/auth/device-login.d.ts +11 -0
- package/dist/auth/device-login.d.ts.map +1 -0
- package/dist/auth/device-login.js +123 -0
- package/dist/auth/device-login.js.map +1 -0
- package/dist/cli.d.ts +4 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +13 -2
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +52 -4
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +17 -2
- package/dist/server.js.map +1 -1
- package/dist/store/adapter.d.ts +6 -0
- package/dist/store/adapter.d.ts.map +1 -1
- package/dist/store/cloud.d.ts +12 -0
- package/dist/store/cloud.d.ts.map +1 -1
- package/dist/store/cloud.js +84 -11
- package/dist/store/cloud.js.map +1 -1
- package/dist/tools/brains.d.ts +15 -0
- package/dist/tools/brains.d.ts.map +1 -0
- package/dist/tools/brains.js +23 -0
- package/dist/tools/brains.js.map +1 -0
- package/dist/tools/consciousness.d.ts +30 -0
- package/dist/tools/consciousness.d.ts.map +1 -1
- package/dist/tools/consciousness.js +57 -16
- package/dist/tools/consciousness.js.map +1 -1
- package/dist/tools/index.d.ts +109 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +270 -54
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/sync.d.ts +11 -0
- package/dist/tools/sync.d.ts.map +1 -1
- package/dist/tools/sync.js +17 -10
- package/dist/tools/sync.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -102,6 +102,29 @@ Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
|
102
102
|
}
|
|
103
103
|
```
|
|
104
104
|
|
|
105
|
+
## Authentication
|
|
106
|
+
|
|
107
|
+
Authenticate with the Brain Protocol cloud API in one command:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npx @brain-protocol/mcp --login --cloud https://brain.api.vauban.tech
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
This opens your browser, you sign in with GitHub or Google, and the CLI receives an API key automatically. Credentials are stored in `~/.config/brain-protocol/credentials.json`.
|
|
114
|
+
|
|
115
|
+
After login, cloud mode works without explicit `--api-key`:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
npx @brain-protocol/mcp --cloud https://brain.api.vauban.tech
|
|
119
|
+
npx @brain-protocol/mcp --check # uses stored credentials
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
To clear stored credentials:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
npx @brain-protocol/mcp --logout
|
|
126
|
+
```
|
|
127
|
+
|
|
105
128
|
### Cloud Mode Configuration
|
|
106
129
|
|
|
107
130
|
For any IDE, add environment variables to connect to a Brain Protocol API server:
|
|
@@ -218,7 +241,7 @@ Verify your installation without starting the server:
|
|
|
218
241
|
|
|
219
242
|
```bash
|
|
220
243
|
npx @brain-protocol/mcp --check
|
|
221
|
-
# brain-protocol MCP v0.6.
|
|
244
|
+
# brain-protocol MCP v0.6.3
|
|
222
245
|
# Mode: local (~/.local/share/brain-protocol/brain.db)
|
|
223
246
|
# Entries: 42 | Edges: 15
|
|
224
247
|
# Status: ready
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface StoredCredentials {
|
|
2
|
+
api_key: string;
|
|
3
|
+
api_url: string;
|
|
4
|
+
created_at: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function getStoredCredentials(): StoredCredentials | null;
|
|
7
|
+
export declare function storeCredentials(creds: StoredCredentials): void;
|
|
8
|
+
export declare function clearCredentials(): boolean;
|
|
9
|
+
export declare function deviceLogin(apiUrl: string): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=device-login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-login.d.ts","sourceRoot":"","sources":["../../src/auth/device-login.ts"],"names":[],"mappings":"AAQA,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,oBAAoB,IAAI,iBAAiB,GAAG,IAAI,CAU/D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAS/D;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAQ1C;AAiCD,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgF/D"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { chmodSync, existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { execFile } from "node:child_process";
|
|
5
|
+
const CONFIG_DIR = join(homedir(), ".config", "brain-protocol");
|
|
6
|
+
const CREDENTIALS_FILE = join(CONFIG_DIR, "credentials.json");
|
|
7
|
+
export function getStoredCredentials() {
|
|
8
|
+
try {
|
|
9
|
+
if (!existsSync(CREDENTIALS_FILE))
|
|
10
|
+
return null;
|
|
11
|
+
const raw = readFileSync(CREDENTIALS_FILE, "utf-8");
|
|
12
|
+
const parsed = JSON.parse(raw);
|
|
13
|
+
if (!parsed.api_key || !parsed.api_url)
|
|
14
|
+
return null;
|
|
15
|
+
return parsed;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function storeCredentials(creds) {
|
|
22
|
+
const dir = dirname(CREDENTIALS_FILE);
|
|
23
|
+
if (!existsSync(dir)) {
|
|
24
|
+
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
25
|
+
}
|
|
26
|
+
writeFileSync(CREDENTIALS_FILE, JSON.stringify(creds, null, 2), {
|
|
27
|
+
mode: 0o600,
|
|
28
|
+
});
|
|
29
|
+
chmodSync(CREDENTIALS_FILE, 0o600); // Enforce even if file pre-existed
|
|
30
|
+
}
|
|
31
|
+
export function clearCredentials() {
|
|
32
|
+
try {
|
|
33
|
+
if (!existsSync(CREDENTIALS_FILE))
|
|
34
|
+
return false;
|
|
35
|
+
unlinkSync(CREDENTIALS_FILE);
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function openBrowser(url) {
|
|
43
|
+
// Use execFile (not exec) to avoid shell interpretation of URL
|
|
44
|
+
if (process.platform === "darwin") {
|
|
45
|
+
execFile("open", [url], () => { });
|
|
46
|
+
}
|
|
47
|
+
else if (process.platform === "win32") {
|
|
48
|
+
execFile("cmd", ["/c", "start", "", url], () => { });
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
execFile("xdg-open", [url], () => { });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export async function deviceLogin(apiUrl) {
|
|
55
|
+
process.stderr.write("\nBrain Protocol — Device Login\n\n");
|
|
56
|
+
// Step 1: Request device code
|
|
57
|
+
const res = await fetch(`${apiUrl}/auth/device`, {
|
|
58
|
+
method: "POST",
|
|
59
|
+
headers: { "Content-Type": "application/json" },
|
|
60
|
+
body: JSON.stringify({}),
|
|
61
|
+
});
|
|
62
|
+
if (!res.ok) {
|
|
63
|
+
const text = await res.text();
|
|
64
|
+
throw new Error(`Failed to initiate device login: ${res.status} ${text}`);
|
|
65
|
+
}
|
|
66
|
+
const body = (await res.json());
|
|
67
|
+
if (!body.success || !body.data) {
|
|
68
|
+
throw new Error("Unexpected response from device auth endpoint");
|
|
69
|
+
}
|
|
70
|
+
const { device_code, user_code, verification_url, expires_in, interval } = body.data;
|
|
71
|
+
// Step 2: Display code and open browser
|
|
72
|
+
process.stderr.write(` Open this URL in your browser:\n`);
|
|
73
|
+
process.stderr.write(` \x1b[1;36m${verification_url}\x1b[0m\n\n`);
|
|
74
|
+
process.stderr.write(` And verify the code:\n`);
|
|
75
|
+
process.stderr.write(` \x1b[1;33m${user_code}\x1b[0m\n\n`);
|
|
76
|
+
openBrowser(verification_url);
|
|
77
|
+
process.stderr.write(" Waiting for authorization...\n");
|
|
78
|
+
// Step 3: Poll for authorization
|
|
79
|
+
const deadline = Date.now() + expires_in * 1000;
|
|
80
|
+
let pollInterval = interval * 1000;
|
|
81
|
+
while (Date.now() < deadline) {
|
|
82
|
+
await sleep(pollInterval);
|
|
83
|
+
try {
|
|
84
|
+
const pollRes = await fetch(`${apiUrl}/auth/device/token`, {
|
|
85
|
+
method: "POST",
|
|
86
|
+
headers: { "Content-Type": "application/json" },
|
|
87
|
+
body: JSON.stringify({ device_code }),
|
|
88
|
+
});
|
|
89
|
+
if (pollRes.status === 429) {
|
|
90
|
+
// slow_down — increase interval
|
|
91
|
+
pollInterval = Math.min(pollInterval + 5000, 30000);
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (pollRes.status === 410) {
|
|
95
|
+
throw new Error("Device code expired. Please try again.");
|
|
96
|
+
}
|
|
97
|
+
const pollBody = (await pollRes.json());
|
|
98
|
+
if (pollBody.success && pollBody.data?.status === "approved" && pollBody.data.api_key) {
|
|
99
|
+
// Store credentials
|
|
100
|
+
storeCredentials({
|
|
101
|
+
api_key: pollBody.data.api_key,
|
|
102
|
+
api_url: apiUrl,
|
|
103
|
+
created_at: new Date().toISOString(),
|
|
104
|
+
});
|
|
105
|
+
process.stderr.write("\n \x1b[1;32mAuthenticated!\x1b[0m\n");
|
|
106
|
+
process.stderr.write(` API key stored in ${CREDENTIALS_FILE}\n`);
|
|
107
|
+
process.stderr.write(` You can now use: npx @brain-protocol/mcp --cloud ${apiUrl}\n\n`);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
// Still pending, continue polling
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
if (err instanceof Error && err.message.includes("expired"))
|
|
114
|
+
throw err;
|
|
115
|
+
// Network error — retry
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
throw new Error("Device authorization timed out. Please try again.");
|
|
119
|
+
}
|
|
120
|
+
function sleep(ms) {
|
|
121
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=device-login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-login.js","sourceRoot":"","sources":["../../src/auth/device-login.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
2
|
-
export declare const HELP_TEXT = "brain-protocol MCP server v0.
|
|
1
|
+
export declare const VERSION = "0.7.0";
|
|
2
|
+
export declare const HELP_TEXT = "brain-protocol MCP server v0.7.0\nVerifiable Memory for AI Agents\n\nUsage:\n npx @brain-protocol/mcp [options]\n\nOptions:\n --help Show this help message\n --version Show version number\n --db-path Override SQLite database path (default: XDG data dir)\n --cloud Cloud API URL (alternative to BRAIN_API_URL env)\n --api-key API key for cloud mode (alternative to BRAIN_API_KEY env)\n --setup Print IDE config (claude-desktop, cursor, claude-code, snak, windsurf)\n --sync Hybrid mode: local SQLite + cloud sync\n --login Authenticate via browser (device authorization flow)\n --logout Clear stored credentials\n --check Health check: show mode, entry count, and exit\n\nEnvironment variables:\n BRAIN_API_URL Cloud mode API URL (e.g., https://brain.api.vauban.tech)\n BRAIN_API_KEY API key for cloud mode authentication\n BRAIN_DB_PATH Override SQLite database path\n BRAIN_SYNC Enable hybrid sync mode (true/false)\n BRAIN_SYNC_INTERVAL Sync interval in seconds (default 60)\n\nExamples:\n # Local mode (default)\n npx @brain-protocol/mcp\n\n # Cloud mode\n npx @brain-protocol/mcp --cloud https://brain.api.vauban.tech --api-key xxx\n\n # Hybrid mode (local + cloud sync)\n npx @brain-protocol/mcp --sync --cloud https://brain.api.vauban.tech --api-key xxx\n\n # Custom database path\n npx @brain-protocol/mcp --db-path ./my-brain.db\n\n # Print config for your IDE\n npx @brain-protocol/mcp --setup claude-desktop\n\n # Authenticate (opens browser)\n npx @brain-protocol/mcp --login --cloud https://brain.api.vauban.tech\n\n # Quick health check\n npx @brain-protocol/mcp --check\n";
|
|
3
3
|
export interface CliArgs {
|
|
4
4
|
help: boolean;
|
|
5
5
|
version: boolean;
|
|
@@ -9,6 +9,8 @@ export interface CliArgs {
|
|
|
9
9
|
setup?: string;
|
|
10
10
|
check: boolean;
|
|
11
11
|
sync: boolean;
|
|
12
|
+
login: boolean;
|
|
13
|
+
logout: boolean;
|
|
12
14
|
}
|
|
13
15
|
export declare function parseArgs(argv: string[]): CliArgs;
|
|
14
16
|
export declare const VALID_SETUP_TARGETS: string[];
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,eAAO,MAAM,SAAS,ipDA8CrB,CAAC;AAEF,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CA0CjD;AA6DD,eAAO,MAAM,mBAAmB,UAA6B,CAAC;AAE9D,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAajD"}
|
package/dist/cli.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const VERSION = "0.
|
|
1
|
+
export const VERSION = "0.7.0";
|
|
2
2
|
export const HELP_TEXT = `brain-protocol MCP server v${VERSION}
|
|
3
3
|
Verifiable Memory for AI Agents
|
|
4
4
|
|
|
@@ -13,6 +13,8 @@ Options:
|
|
|
13
13
|
--api-key API key for cloud mode (alternative to BRAIN_API_KEY env)
|
|
14
14
|
--setup Print IDE config (claude-desktop, cursor, claude-code, snak, windsurf)
|
|
15
15
|
--sync Hybrid mode: local SQLite + cloud sync
|
|
16
|
+
--login Authenticate via browser (device authorization flow)
|
|
17
|
+
--logout Clear stored credentials
|
|
16
18
|
--check Health check: show mode, entry count, and exit
|
|
17
19
|
|
|
18
20
|
Environment variables:
|
|
@@ -38,11 +40,14 @@ Examples:
|
|
|
38
40
|
# Print config for your IDE
|
|
39
41
|
npx @brain-protocol/mcp --setup claude-desktop
|
|
40
42
|
|
|
43
|
+
# Authenticate (opens browser)
|
|
44
|
+
npx @brain-protocol/mcp --login --cloud https://brain.api.vauban.tech
|
|
45
|
+
|
|
41
46
|
# Quick health check
|
|
42
47
|
npx @brain-protocol/mcp --check
|
|
43
48
|
`;
|
|
44
49
|
export function parseArgs(argv) {
|
|
45
|
-
const args = { help: false, version: false, check: false, sync: false };
|
|
50
|
+
const args = { help: false, version: false, check: false, sync: false, login: false, logout: false };
|
|
46
51
|
for (let i = 0; i < argv.length; i++) {
|
|
47
52
|
const arg = argv[i];
|
|
48
53
|
switch (arg) {
|
|
@@ -72,6 +77,12 @@ export function parseArgs(argv) {
|
|
|
72
77
|
case "--check":
|
|
73
78
|
args.check = true;
|
|
74
79
|
break;
|
|
80
|
+
case "--login":
|
|
81
|
+
args.login = true;
|
|
82
|
+
break;
|
|
83
|
+
case "--logout":
|
|
84
|
+
args.logout = true;
|
|
85
|
+
break;
|
|
75
86
|
}
|
|
76
87
|
}
|
|
77
88
|
return args;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,MAAM,CAAC,MAAM,SAAS,GAAG,8BAA8B,OAAO
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,9 +5,9 @@ export { CloudStore } from "./store/cloud.js";
|
|
|
5
5
|
export { HybridStore } from "./store/hybrid.js";
|
|
6
6
|
export type { CloudStoreOptions } from "./store/cloud.js";
|
|
7
7
|
export { CircuitBreaker, CircuitOpenError } from "./store/circuit-breaker.js";
|
|
8
|
-
export type { CircuitBreakerConfig, CircuitState } from "./store/circuit-breaker.js";
|
|
8
|
+
export type { CircuitBreakerConfig, CircuitState, } from "./store/circuit-breaker.js";
|
|
9
9
|
export { SyncEngine } from "./store/sync.js";
|
|
10
|
-
export type { SyncState, SyncResult, SyncConflict, ConflictResolution } from "./store/sync.js";
|
|
10
|
+
export type { SyncState, SyncResult, SyncConflict, ConflictResolution, } from "./store/sync.js";
|
|
11
11
|
export { parseArgs, VERSION, printSetup } from "./cli.js";
|
|
12
12
|
export type { CliArgs } from "./cli.js";
|
|
13
13
|
export type { StoreAdapter } from "./store/adapter.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAsLA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,YAAY,EACV,oBAAoB,EACpB,YAAY,GACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC1D,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,mBAAmB,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import { CloudStore } from "./store/cloud.js";
|
|
|
7
7
|
import { HybridStore } from "./store/hybrid.js";
|
|
8
8
|
import { SQLiteStore } from "./store/sqlite.js";
|
|
9
9
|
import { getDbPath } from "./store/paths.js";
|
|
10
|
+
import { clearCredentials, deviceLogin, getStoredCredentials, } from "./auth/device-login.js";
|
|
10
11
|
function createStore(args) {
|
|
11
12
|
const apiUrl = args.cloud || process.env.BRAIN_API_URL;
|
|
12
13
|
const syncEnabled = args.sync || process.env.BRAIN_SYNC === "true";
|
|
@@ -43,19 +44,66 @@ async function main() {
|
|
|
43
44
|
process.stdout.write(printSetup(args.setup));
|
|
44
45
|
process.exit(0);
|
|
45
46
|
}
|
|
47
|
+
if (args.login) {
|
|
48
|
+
const apiUrl = args.cloud || process.env.BRAIN_API_URL;
|
|
49
|
+
if (!apiUrl) {
|
|
50
|
+
process.stderr.write("Error: --cloud <url> or BRAIN_API_URL is required for login.\n");
|
|
51
|
+
process.stderr.write("Usage: npx @brain-protocol/mcp --login --cloud https://brain.api.vauban.tech\n");
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
if (!apiUrl.startsWith("https://") && !apiUrl.includes("localhost")) {
|
|
55
|
+
process.stderr.write("Warning: --cloud URL is not HTTPS. Credentials may be transmitted insecurely.\n");
|
|
56
|
+
}
|
|
57
|
+
await deviceLogin(apiUrl);
|
|
58
|
+
process.exit(0);
|
|
59
|
+
}
|
|
60
|
+
if (args.logout) {
|
|
61
|
+
const removed = clearCredentials();
|
|
62
|
+
process.stdout.write(removed ? "Credentials removed.\n" : "No stored credentials found.\n");
|
|
63
|
+
process.exit(0);
|
|
64
|
+
}
|
|
65
|
+
// Auto-load stored credentials if no explicit API key provided
|
|
66
|
+
if (!args.apiKey && !process.env.BRAIN_API_KEY) {
|
|
67
|
+
const stored = getStoredCredentials();
|
|
68
|
+
if (stored) {
|
|
69
|
+
args.apiKey = stored.api_key;
|
|
70
|
+
if (!args.cloud && !process.env.BRAIN_API_URL) {
|
|
71
|
+
args.cloud = stored.api_url;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
46
75
|
if (args.check) {
|
|
47
76
|
const store = createStore(args);
|
|
48
77
|
await store.initialize();
|
|
49
78
|
const stats = await store.getStats();
|
|
50
79
|
const mode = store.mode;
|
|
51
80
|
const location = mode === "local"
|
|
52
|
-
?
|
|
53
|
-
:
|
|
81
|
+
? args.dbPath || getDbPath()
|
|
82
|
+
: args.cloud || process.env.BRAIN_API_URL;
|
|
54
83
|
process.stdout.write(`brain-protocol MCP v${VERSION}\n`);
|
|
55
84
|
process.stdout.write(`Mode: ${mode} (${location})\n`);
|
|
56
85
|
process.stdout.write(`Tools: ${toolDefinitions.length}\n`);
|
|
57
86
|
process.stdout.write(`Entries: ${stats.totalEntries} | Edges: ${stats.totalEdges}\n`);
|
|
58
87
|
process.stdout.write(`Status: ready\n`);
|
|
88
|
+
// Cloud mode: show tier + quota if available
|
|
89
|
+
if (store.getUsageDashboard) {
|
|
90
|
+
try {
|
|
91
|
+
const dashboard = (await store.getUsageDashboard());
|
|
92
|
+
if (dashboard?.quota) {
|
|
93
|
+
const { tier, today_used, daily_limit } = dashboard.quota;
|
|
94
|
+
const remaining = daily_limit != null && today_used != null
|
|
95
|
+
? daily_limit - today_used
|
|
96
|
+
: null;
|
|
97
|
+
const usagePart = today_used != null && daily_limit != null
|
|
98
|
+
? ` | Today: ${today_used}/${daily_limit} (${remaining} remaining)`
|
|
99
|
+
: "";
|
|
100
|
+
process.stdout.write(`Tier: ${tier ?? "unknown"}${usagePart}\n`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// Non-fatal: billing info may be unavailable
|
|
105
|
+
}
|
|
106
|
+
}
|
|
59
107
|
await store.close();
|
|
60
108
|
process.exit(0);
|
|
61
109
|
}
|
|
@@ -63,8 +111,8 @@ async function main() {
|
|
|
63
111
|
await store.initialize();
|
|
64
112
|
const mode = store.mode;
|
|
65
113
|
const location = mode === "local"
|
|
66
|
-
?
|
|
67
|
-
:
|
|
114
|
+
? args.dbPath || getDbPath()
|
|
115
|
+
: args.cloud || process.env.BRAIN_API_URL;
|
|
68
116
|
process.stderr.write(`brain-protocol MCP server v${VERSION} (${mode} mode: ${location})\n`);
|
|
69
117
|
const server = createMCPServer(store, VERSION);
|
|
70
118
|
const transport = new StdioServerTransport();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAMnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EACnB,OAAO,SAAU,GAChB,MAAM,CA+CR"}
|
package/dist/server.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
|
-
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
+
import { BrainAPIError } from "@brain-protocol/sdk";
|
|
3
4
|
import { handleTool, toolDefinitions } from "./tools/index.js";
|
|
4
|
-
export function createMCPServer(store, version = "0.
|
|
5
|
+
export function createMCPServer(store, version = "0.7.0") {
|
|
5
6
|
const server = new Server({ name: "brain-protocol", version }, { capabilities: { tools: {} } });
|
|
6
7
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
7
8
|
tools: toolDefinitions,
|
|
@@ -15,6 +16,20 @@ export function createMCPServer(store, version = "0.6.3") {
|
|
|
15
16
|
};
|
|
16
17
|
}
|
|
17
18
|
catch (error) {
|
|
19
|
+
// Surface structured quota/rate-limit responses from the API
|
|
20
|
+
if (error instanceof BrainAPIError &&
|
|
21
|
+
(error.status === 402 || error.status === 429)) {
|
|
22
|
+
try {
|
|
23
|
+
const body = JSON.parse(error.body);
|
|
24
|
+
return {
|
|
25
|
+
content: [{ type: "text", text: JSON.stringify(body, null, 2) }],
|
|
26
|
+
isError: true,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
/* body not JSON — fall through to generic handler */
|
|
31
|
+
}
|
|
32
|
+
}
|
|
18
33
|
const message = error instanceof Error ? error.message : "Unknown error";
|
|
19
34
|
return {
|
|
20
35
|
content: [{ type: "text", text: JSON.stringify({ error: message }) }],
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,UAAU,eAAe,CAC7B,KAAmB,EACnB,OAAO,GAAG,OAAO;IAEjB,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,EACnC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,EAAE,eAAe;KACvB,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAC7B,KAAK,EACL,IAAI,EACJ,CAAC,IAAI,IAAI,EAAE,CAA4B,CACxC,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6DAA6D;YAC7D,IACE,KAAK,YAAY,aAAa;gBAC9B,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,EAC9C,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACpC,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;wBAChE,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,qDAAqD;gBACvD,CAAC;YACH,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/store/adapter.d.ts
CHANGED
|
@@ -29,6 +29,12 @@ export interface StoreAdapter {
|
|
|
29
29
|
getUsageDashboard?(days?: number): Promise<unknown>;
|
|
30
30
|
getOnboardingStatus?(): Promise<unknown>;
|
|
31
31
|
runOnboardingSetup?(): Promise<unknown>;
|
|
32
|
+
getSubscription?(): Promise<unknown>;
|
|
33
|
+
listBrains?(): Promise<unknown>;
|
|
34
|
+
createBrain?(input: {
|
|
35
|
+
name: string;
|
|
36
|
+
description?: string;
|
|
37
|
+
}): Promise<unknown>;
|
|
32
38
|
bulkArchive?(input: BulkArchiveInput): Promise<BulkArchiveResult>;
|
|
33
39
|
getArchiveStats?(): Promise<ArchiveStats>;
|
|
34
40
|
archiveGizaProof(input: GizaProofInput): Promise<KnowledgeEntry>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/store/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,UAAU,EACV,YAAY,EACb,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,YAAY;IAC3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAEjC,KAAK,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/store/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/store/cloud.d.ts
CHANGED
|
@@ -11,7 +11,11 @@ export declare class CloudStore implements StoreAdapter {
|
|
|
11
11
|
private client;
|
|
12
12
|
private breaker;
|
|
13
13
|
private retryConfig;
|
|
14
|
+
private defaultBrainId;
|
|
15
|
+
private apiKey;
|
|
14
16
|
constructor(baseUrl: string, apiKey?: string, options?: CloudStoreOptions);
|
|
17
|
+
/** The personal brain ID resolved during auto-onboarding */
|
|
18
|
+
get personalBrainId(): string | null;
|
|
15
19
|
/** Circuit breaker state for observability */
|
|
16
20
|
get circuitState(): import("./circuit-breaker.js").CircuitState;
|
|
17
21
|
/** Execute fn with retry + circuit breaker */
|
|
@@ -52,5 +56,13 @@ export declare class CloudStore implements StoreAdapter {
|
|
|
52
56
|
total: number;
|
|
53
57
|
}>;
|
|
54
58
|
linkProofToEntry(proofEntryId: string, targetEntryId: string, edgeType?: string): Promise<KnowledgeEdge>;
|
|
59
|
+
getSubscription(): Promise<unknown>;
|
|
60
|
+
listBrains(): Promise<unknown>;
|
|
61
|
+
createBrain(input: {
|
|
62
|
+
name: string;
|
|
63
|
+
description?: string;
|
|
64
|
+
}): Promise<unknown>;
|
|
65
|
+
/** Inject defaultBrainId into options if no brain_id is specified */
|
|
66
|
+
private withDefaultBrain;
|
|
55
67
|
}
|
|
56
68
|
//# sourceMappingURL=cloud.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/store/cloud.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/store/cloud.ts"],"names":[],"mappings":"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"}
|