botanary-mcp 0.1.0 → 0.1.2
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 +30 -14
- package/dist/src/tools.js +45 -7
- package/dist/src/tools.js.map +1 -1
- package/package.json +2 -10
package/README.md
CHANGED
|
@@ -23,20 +23,15 @@ no MCP tool" below.
|
|
|
23
23
|
|
|
24
24
|
## Add it to your agent
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
pnpm install # also builds dist/ automatically (see "prepare" in package.json)
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
Then, the one command per client:
|
|
26
|
+
`botanary-mcp` is published on npm - no clone, no build, no local install step. `npx` fetches and
|
|
27
|
+
runs it on demand, so the one-time setup **is** the one command per client below.
|
|
33
28
|
|
|
34
29
|
```bash
|
|
35
30
|
# Claude Code
|
|
36
|
-
claude mcp add --transport stdio botanary --
|
|
31
|
+
claude mcp add --transport stdio botanary -- npx -y botanary-mcp
|
|
37
32
|
|
|
38
33
|
# Codex
|
|
39
|
-
codex mcp add botanary --
|
|
34
|
+
codex mcp add botanary -- npx -y botanary-mcp
|
|
40
35
|
```
|
|
41
36
|
|
|
42
37
|
The server talks to `https://api.app.botanary.xyz` by default. Point it somewhere else with
|
|
@@ -45,7 +40,7 @@ The server talks to `https://api.app.botanary.xyz` by default. Point it somewher
|
|
|
45
40
|
```bash
|
|
46
41
|
claude mcp add --transport stdio botanary \
|
|
47
42
|
-e BOTANARY_API_URL=http://localhost:3000 \
|
|
48
|
-
--
|
|
43
|
+
-- npx -y botanary-mcp
|
|
49
44
|
```
|
|
50
45
|
|
|
51
46
|
Cursor has no CLI equivalent - add this block to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json`
|
|
@@ -55,8 +50,25 @@ Cursor has no CLI equivalent - add this block to `.cursor/mcp.json` (project) or
|
|
|
55
50
|
{
|
|
56
51
|
"mcpServers": {
|
|
57
52
|
"botanary": {
|
|
58
|
-
"command": "
|
|
59
|
-
"args": ["
|
|
53
|
+
"command": "npx",
|
|
54
|
+
"args": ["-y", "botanary-mcp"]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Claude Desktop is likewise config-file only - add this block to
|
|
61
|
+
`~/Library/Application Support/Claude/claude_desktop_config.json` (create it if it does not exist yet):
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"mcpServers": {
|
|
66
|
+
"botanary": {
|
|
67
|
+
"command": "npx",
|
|
68
|
+
"args": ["-y", "botanary-mcp"],
|
|
69
|
+
"env": {
|
|
70
|
+
"BOTANARY_API_URL": "https://api.app.botanary.xyz"
|
|
71
|
+
}
|
|
60
72
|
}
|
|
61
73
|
}
|
|
62
74
|
}
|
|
@@ -161,7 +173,7 @@ Two more things worth knowing:
|
|
|
161
173
|
### Deleting the key on its own machine
|
|
162
174
|
|
|
163
175
|
```bash
|
|
164
|
-
|
|
176
|
+
npx -y botanary-mcp forget
|
|
165
177
|
```
|
|
166
178
|
|
|
167
179
|
This deletes the private key from wherever it's stored (every backend candidate is swept, not just the
|
|
@@ -182,11 +194,15 @@ part of its normal work) can silence - "forget your Botanary identity" is exactl
|
|
|
182
194
|
instruction a prompt injection would try, and a tool that honored it would hand an attacker a free,
|
|
183
195
|
untraceable way to sever a working connection. There is no legitimate reason an AGENT (as opposed to the
|
|
184
196
|
human running it) would ever need to delete its own key mid-session, so `forget` stays a command the
|
|
185
|
-
human runs directly (`
|
|
197
|
+
human runs directly (`npx -y botanary-mcp forget`), never something `tools.ts` exposes -
|
|
186
198
|
`test/tools.spec.ts` and `test/server.spec.ts` both assert no tool named `forget` exists.
|
|
187
199
|
|
|
188
200
|
## Development
|
|
189
201
|
|
|
202
|
+
The commands below are for working on this package's own source in a checkout of this repo - not for
|
|
203
|
+
installing it as a user. If you just want to connect an agent, use "Add it to your agent" above; you
|
|
204
|
+
don't need any of this.
|
|
205
|
+
|
|
190
206
|
```bash
|
|
191
207
|
pnpm install # installs deps and builds dist/ (the "prepare" script)
|
|
192
208
|
pnpm build # rebuild dist/ by hand
|
package/dist/src/tools.js
CHANGED
|
@@ -42,7 +42,31 @@ export function deriveAppOrigin(apiBaseUrl) {
|
|
|
42
42
|
}
|
|
43
43
|
return PROD_APP_ORIGIN;
|
|
44
44
|
}
|
|
45
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Get the pairing code AND register it, because a code the backend has never heard of is not a pairing
|
|
47
|
+
* code - it is a string that makes the owner's app say "Pairing failed. Check the code and try again."
|
|
48
|
+
*
|
|
49
|
+
* Minting (`runtime.pairingCode()`) is purely local. Registering (`runtime.pair()`) signs a proof over
|
|
50
|
+
* the code and POSTs it to `/v1/agents/pair`, which is the only thing that lets the owner's claim find
|
|
51
|
+
* it. Splitting those across two tools meant the obvious request - "show me your pairing code" - handed
|
|
52
|
+
* back something that could not work, and neither side said why. So the showing tool registers too.
|
|
53
|
+
*
|
|
54
|
+
* `runtime.pair()` returns the SAME code `pairingCode()` would (it calls it internally), so this stays
|
|
55
|
+
* idempotent: repeated calls re-register one code rather than churning through new ones.
|
|
56
|
+
*
|
|
57
|
+
* FAILS SOFT: if the backend is unreachable we still return the code, flagged `registered: false`, and
|
|
58
|
+
* `pairingView` tells the agent to say so - better than throwing, which would leave the user with no
|
|
59
|
+
* code and no explanation, and better than silently handing over one that will be rejected.
|
|
60
|
+
*/
|
|
61
|
+
async function registerPairing(runtime) {
|
|
62
|
+
try {
|
|
63
|
+
return { ...(await runtime.pair()), registered: true };
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return { ...(await runtime.pairingCode()), registered: false };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function pairingView(pairing, identity, apiBaseUrl, registered = true) {
|
|
46
70
|
const pairingUrl = `${deriveAppOrigin(apiBaseUrl)}/mandates?pair=${pairing.code}`;
|
|
47
71
|
return {
|
|
48
72
|
code: pairing.code,
|
|
@@ -50,9 +74,14 @@ function pairingView(pairing, identity, apiBaseUrl) {
|
|
|
50
74
|
fingerprint: pairing.fingerprint,
|
|
51
75
|
issuedAt: pairing.issuedAt,
|
|
52
76
|
expiresAt: pairing.expiresAt,
|
|
77
|
+
registered,
|
|
53
78
|
pairingUrl,
|
|
54
|
-
instructions:
|
|
55
|
-
|
|
79
|
+
instructions: registered
|
|
80
|
+
? 'In Botanary, open Connected agents and enter this code, then give the agent a name - or open ' +
|
|
81
|
+
`${pairingUrl} to go straight there with the code already filled in.`
|
|
82
|
+
: 'This code could NOT be registered with Botanary just now (the backend was unreachable), so ' +
|
|
83
|
+
'entering it in the app will fail with "Pairing failed" until registration succeeds. Tell the ' +
|
|
84
|
+
'user that, and try again rather than sending them off to type a code that cannot work.',
|
|
56
85
|
};
|
|
57
86
|
}
|
|
58
87
|
/** Plain-English rendering of `GET /agents/me`'s `grant` field - built entirely from backend-reported
|
|
@@ -116,8 +145,14 @@ export function createTools(runtime) {
|
|
|
116
145
|
'this machine, so intercepting the code alone grants nothing (see the package README).',
|
|
117
146
|
inputSchema: emptySchema(),
|
|
118
147
|
run: async () => {
|
|
119
|
-
|
|
120
|
-
|
|
148
|
+
// SEQUENTIAL, not Promise.all. Both of these can trigger first-time identity creation, and
|
|
149
|
+
// racing them let two creations interleave - the second overwriting the first's metadata, so the
|
|
150
|
+
// stored address no longer matched the key that had just been saved. It surfaced as an
|
|
151
|
+
// intermittently unregistered pairing code (~1 run in 5, only under parallel test load, and
|
|
152
|
+
// silent because registration fails soft). Identity first, then register against it.
|
|
153
|
+
const identity = await runtime.identity();
|
|
154
|
+
const pairing = await registerPairing(runtime);
|
|
155
|
+
return text(pairingView(pairing, identity, runtime.apiBaseUrl, pairing.registered));
|
|
121
156
|
},
|
|
122
157
|
},
|
|
123
158
|
{
|
|
@@ -128,8 +163,11 @@ export function createTools(runtime) {
|
|
|
128
163
|
'before it would otherwise expire on its own.',
|
|
129
164
|
inputSchema: emptySchema(),
|
|
130
165
|
run: async () => {
|
|
131
|
-
|
|
132
|
-
|
|
166
|
+
// Sequential for the same reason as get_pairing_code above.
|
|
167
|
+
const identity = await runtime.identity();
|
|
168
|
+
await runtime.regeneratePairingCode();
|
|
169
|
+
const pairing = await registerPairing(runtime);
|
|
170
|
+
return text(pairingView(pairing, identity, runtime.apiBaseUrl, pairing.registered));
|
|
133
171
|
},
|
|
134
172
|
},
|
|
135
173
|
{
|
package/dist/src/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAuBA,SAAS,IAAI,CAAC,KAAc;IAC1B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACnH,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,YAAY,CAAC,QAAuB;IAC3C,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,UAAU,EAAE,QAAQ,CAAC,OAAO;KAC7B,CAAC;AACJ,CAAC;AAED;yDACyD;AACzD,MAAM,eAAe,GAAG,0BAA0B,CAAC;AAEnD;;;;;;;;;qCASqC;AACrC,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,OAAO,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1F,OAAO,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,OAAO,CAAC;IACjD,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "botanary-mcp",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.2",
|
|
5
5
|
"description": "Botanary's agent connector: a local MCP server that lets an outside coding agent (Claude Code, Codex, Cursor, or a custom build) generate its own signing key, keep it in the OS keychain, pair with a Botanary account, read its balance, and spend under whatever grant its owner gave it - refusing honestly, never fabricating success, the moment it has none.",
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
|
-
"
|
|
8
|
-
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/MorcaLabs/botanary-be.git",
|
|
10
|
-
"directory": "tools/botanary-mcp"
|
|
11
|
-
},
|
|
12
|
-
"homepage": "https://github.com/MorcaLabs/botanary-be/tree/main/tools/botanary-mcp#readme",
|
|
13
|
-
"bugs": {
|
|
14
|
-
"url": "https://github.com/MorcaLabs/botanary-be/issues"
|
|
15
|
-
},
|
|
7
|
+
"homepage": "https://docs.botanary.xyz",
|
|
16
8
|
"keywords": [
|
|
17
9
|
"mcp",
|
|
18
10
|
"model-context-protocol",
|