bsv-mcp 0.4.0 → 0.5.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/CHANGELOG.md +95 -1
- package/README.md +216 -10
- package/dist/app.html +71 -1428
- package/dist/index.js +203734 -224472
- package/dist/local-mcp-launcher.js +11320 -0
- package/dist/local-ui/app.html +14 -0
- package/dist/local-ui/assets/GeistPixel-Line-Bn2EgCYP.woff2 +0 -0
- package/dist/local-ui/assets/index-B1jJYtjR.js +109 -0
- package/dist/local-ui/assets/index-DsjtK58c.css +1 -0
- package/dist/local-ui/index.html +14 -0
- package/package.json +65 -110
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,99 @@
|
|
|
1
1
|
# BSV MCP Server Changelog
|
|
2
2
|
|
|
3
|
+
## [0.5.0] - 2026-09-08
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Build release tarballs with a separate consumer manifest so Bun installs
|
|
8
|
+
do not try to resolve checkout-only wallet patches.
|
|
9
|
+
|
|
10
|
+
- Use separate identity and ordinals wallets for SIGMA-signed inscriptions
|
|
11
|
+
through the existing 1Sat SDK local pipeline.
|
|
12
|
+
|
|
13
|
+
- Select existing private/WIF Vault entries and link them to local accounts
|
|
14
|
+
without modifying the encrypted Vault.
|
|
15
|
+
|
|
16
|
+
- Import multiple wallets into one Vault and choose global payment, identity,
|
|
17
|
+
and ordinals keys, with independent overrides in native project MCP settings.
|
|
18
|
+
|
|
19
|
+
- Create, import, and unlock an embedded wallet through private local browser
|
|
20
|
+
setup. Activation refreshes the connected MCP session immediately; the ready
|
|
21
|
+
screen shows a compact, animated tool collage from its enabled catalog, with
|
|
22
|
+
pause controls and reduced-motion support.
|
|
23
|
+
- Receive selected PeerPay payments with `wallet_peerPayments` (or the compact
|
|
24
|
+
`wallet_payments` family). Wallet acceptance precedes acknowledgement;
|
|
25
|
+
automatic MessageBox service-fee spending is refused. Availability is limited
|
|
26
|
+
to eligible embedded wallets.
|
|
27
|
+
- Discover skill metadata and links with `utils_find_skills`, using a bounded,
|
|
28
|
+
cached remote index without installing or fetching skill contents.
|
|
29
|
+
- Preflight the published BAP identity before Sigma inscription signing when
|
|
30
|
+
`wallet_createOrdinals` requests `signWithBAP`.
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
- Read every default-basket output page when calculating wallet balance,
|
|
35
|
+
and refuse partial totals when pagination is inconsistent.
|
|
36
|
+
|
|
37
|
+
- Supply a non-administrator MCP originator for local SDK calls that omit it,
|
|
38
|
+
preserving spending approval while allowing key and signing operations.
|
|
39
|
+
|
|
40
|
+
- Restrict the hosted Next.js MCP route to public reads, regardless of key
|
|
41
|
+
environment variables, and answer unauthenticated CORS preflight at both
|
|
42
|
+
the root endpoint and `/api/mcp`.
|
|
43
|
+
- Discover custom wallet locations only from explicit local settings.
|
|
44
|
+
|
|
45
|
+
- Retire static tutorial prompts and BRC/BitCom resource entries. Changelog,
|
|
46
|
+
JungleBus, and MCP App resources remain available.
|
|
47
|
+
- Produce consistent production bundles regardless of the caller’s
|
|
48
|
+
`NODE_ENV`, and remove stale local UI build assets from packaged output.
|
|
49
|
+
|
|
50
|
+
- Migrate the server/client/core boundaries and the surrounding server
|
|
51
|
+
lifecycle, stdio transport, hosted adapter, request routing, and
|
|
52
|
+
prompt/resource registrations to the split MCP TypeScript SDK v2 packages.
|
|
53
|
+
- Make protocol `2026-07-28` primary across stdio, local HTTP, and hosted HTTP.
|
|
54
|
+
Accept supported 2025 clients automatically; `MCP_LEGACY_COMPATIBILITY=false`
|
|
55
|
+
explicitly requires modern clients.
|
|
56
|
+
- Execute modern approval-dependent tools through request-scoped continuations
|
|
57
|
+
bound to the original operation, authenticated principal, arguments, and expiry.
|
|
58
|
+
Cancellation and revocation reject pending approvals; replay cannot re-execute
|
|
59
|
+
the callback. Legacy approvals also remain scoped to their requesting client.
|
|
60
|
+
- Open all configured project roles, including BRC-42 child and BRC-157/Yours
|
|
61
|
+
profile derivations. Isolate child-key storage and preserve selected root
|
|
62
|
+
databases and deposit prefixes.
|
|
63
|
+
- Support external per-role signer endpoints, identity pins, and project-specific
|
|
64
|
+
permission origins without local key loading.
|
|
65
|
+
- Expose BRC-100 BAP publication, rotation, attestations, profiles, and signed
|
|
66
|
+
BSocial posts through the selected identity wallet.
|
|
67
|
+
- Preserve ordinal outputs and token amounts in browser-signed dashboard sweeps.
|
|
68
|
+
Verify source transactions and signatures, bind preparation to the user and
|
|
69
|
+
wallet, and reject duplicate submission. Read all dashboard balance pages.
|
|
70
|
+
- Keep `@modelcontextprotocol/sdk` v1 in the staged dependency graph because
|
|
71
|
+
`@modelcontextprotocol/ext-apps` 1.7.5 still declares it as a peer. A local
|
|
72
|
+
MCP Apps adapter calls native SDK v2 `registerTool` and `registerResource`,
|
|
73
|
+
preserving v2 schema conversion and request validation. ext-apps remains for
|
|
74
|
+
shared constants and its browser `App` implementation; this does not make
|
|
75
|
+
ext-apps itself v2-native.
|
|
76
|
+
- Keep the full tool catalog as the default and capability-derived. Add an
|
|
77
|
+
explicit `MCP_TOOL_CATALOG=compact` opt-in profile for bounded read families;
|
|
78
|
+
local compact catalog and routing tests pass; hosted and browser-host
|
|
79
|
+
validation remain separate release gates.
|
|
80
|
+
|
|
81
|
+
### Compatibility
|
|
82
|
+
|
|
83
|
+
- The catalog is capability-derived. The checked-in manifest is a synthetic
|
|
84
|
+
baseline for one configured server, while wallet mode, enabled modules,
|
|
85
|
+
account context, and the selected profile determine actual tool exposure.
|
|
86
|
+
Compact mode is an explicit opt-in.
|
|
87
|
+
- Modern protocol tests cover stdio and authenticated HTTP, approval accept,
|
|
88
|
+
decline, cancellation, expiry, replay, external signer HTTP crypto, and
|
|
89
|
+
project-role derivations. Installed clients that only negotiate 2025 connect through default legacy
|
|
90
|
+
compatibility; their success is not modern acceptance.
|
|
91
|
+
- The hosted route remains public-read-only. Browser-host MCP Apps integration
|
|
92
|
+
and deployed traffic require validation in their actual host environments.
|
|
93
|
+
|
|
94
|
+
See [MCP client protocol support](docs/mcp-client-protocol-support.md) for
|
|
95
|
+
endpoint contracts and the distinction between protocol and host validation.
|
|
96
|
+
|
|
3
97
|
## [0.4.0] - 2026-09-07
|
|
4
98
|
|
|
5
99
|
### Breaking changes
|
|
@@ -377,4 +471,4 @@
|
|
|
377
471
|
- Ordinals tools for NFT functionality
|
|
378
472
|
- BSV tools for blockchain interaction
|
|
379
473
|
- MNEE token tools
|
|
380
|
-
- Utility tools for data conversion
|
|
474
|
+
- Utility tools for data conversion
|
package/README.md
CHANGED
|
@@ -4,33 +4,227 @@ BSV MCP connects your AI assistant to Bitcoin SV. Ask it to check a transaction,
|
|
|
4
4
|
|
|
5
5
|
[Documentation](https://bsvmcp.com/docs) · [Connect hosted](https://bsvmcp.com/connect) · [npm](https://www.npmjs.com/package/bsv-mcp) · [Issues](https://github.com/b-open-io/bsv-mcp/issues)
|
|
6
6
|
|
|
7
|
+
## Install in ChatGPT desktop or Codex
|
|
8
|
+
|
|
9
|
+
In Plugins, choose **Add marketplace** and enter `b-open-io/claude-plugins`.
|
|
10
|
+
Leave Git ref and Sparse paths blank. Select **BSV MCP** in the bOpen marketplace
|
|
11
|
+
and install it. Authenticate through Sigma Identity when prompted, then start a
|
|
12
|
+
new chat and ask: “Run bsv_status and explain which services are available.”
|
|
13
|
+
|
|
14
|
+
The plugin uses hosted MCP, so you do not need Bun or a local wallet. Signing in
|
|
15
|
+
does not authorize spending or connect a wallet on your computer. For wallet
|
|
16
|
+
operations, use the local setup below. If you already have a manual BSV MCP
|
|
17
|
+
connection, choose which connection to use to avoid duplicate tools.
|
|
18
|
+
|
|
7
19
|
## Quick start
|
|
8
20
|
|
|
9
|
-
Install [Bun](https://bun.sh)
|
|
21
|
+
Install [Bun](https://bun.sh), clone this repository, and build the local
|
|
22
|
+
server. The local wallet registrations below use the source checkout's launcher;
|
|
23
|
+
`scripts/local-mcp-launcher.ts` is not included in the npm package.
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
git clone https://github.com/b-open-io/bsv-mcp.git
|
|
27
|
+
cd bsv-mcp
|
|
28
|
+
bun install
|
|
29
|
+
bun run build
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
For legacy embedded mode, create an encrypted account in a local terminal. The
|
|
33
|
+
source-checkout launcher can open it after creation:
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
bun run index.ts init --account default
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
For a new local Vault, or to import an existing wallet through the private
|
|
40
|
+
browser setup, register the built server directly:
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
# Codex: local Vault setup and unlock
|
|
44
|
+
codex mcp add bsv-mcp-vault \
|
|
45
|
+
-- bun --no-env-file /absolute/path/to/bsv-mcp/dist/index.js --stdio
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
If the server reports that wallet setup is needed, ask your agent to run
|
|
49
|
+
`wallet_onboarding`, then create, import, or unlock the wallet in the browser.
|
|
50
|
+
|
|
51
|
+
Choose one explicit local wallet mode when registering the server:
|
|
10
52
|
|
|
11
53
|
```sh
|
|
12
|
-
# Codex
|
|
13
|
-
codex mcp add bsv-mcp
|
|
54
|
+
# Codex: existing BRC-100 signer
|
|
55
|
+
codex mcp add bsv-mcp-external \
|
|
56
|
+
--env BRC100_WALLET_URL=https://signer.example/rpc \
|
|
57
|
+
--env BRC100_WALLET_ORIGINATOR=bsv-mcp.local \
|
|
58
|
+
-- bun --no-env-file /absolute/path/to/bsv-mcp/scripts/local-mcp-launcher.ts external
|
|
14
59
|
|
|
15
|
-
#
|
|
16
|
-
|
|
60
|
+
# Codex: existing encrypted local account (legacy account path)
|
|
61
|
+
codex mcp add bsv-mcp-embedded \
|
|
62
|
+
--env BSV_MCP_ACCOUNT=default \
|
|
63
|
+
-- bun --no-env-file /absolute/path/to/bsv-mcp/scripts/local-mcp-launcher.ts embedded
|
|
64
|
+
|
|
65
|
+
# Codex: project-bound Vault roles
|
|
66
|
+
codex mcp add bsv-mcp-project \
|
|
67
|
+
-- bun --no-env-file /absolute/path/to/bsv-mcp/scripts/local-mcp-launcher.ts project \
|
|
68
|
+
--project-root /absolute/path/to/project --project-id project.example
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Claude Code uses the same launcher and can register either mode with
|
|
72
|
+
`claude mcp add --transport stdio`, for example:
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
claude mcp add --transport stdio bsv-mcp-external \
|
|
76
|
+
--env BRC100_WALLET_URL=https://signer.example/rpc \
|
|
77
|
+
--env BRC100_WALLET_ORIGINATOR=bsv-mcp.local \
|
|
78
|
+
-- bun --no-env-file /absolute/path/to/bsv-mcp/scripts/local-mcp-launcher.ts external
|
|
17
79
|
```
|
|
18
80
|
|
|
19
|
-
|
|
81
|
+
Set `BSV_MCP_PASSWORD` in the MCP host's runtime environment for the launcher's
|
|
82
|
+
existing-account embedded mode and for project mode. The direct Vault setup
|
|
83
|
+
registration above collects its password in the local browser instead.
|
|
84
|
+
Do not put that password in the registration command or saved MCP configuration.
|
|
85
|
+
The launcher passes it to the child only at runtime, never through argv or its
|
|
86
|
+
diagnostics. `BRC100_WALLET_URL` and `BRC100_WALLET_ORIGINATOR` are read at
|
|
87
|
+
runtime for external mode. Claude Code uses the same launcher command with
|
|
88
|
+
`claude mcp add --transport stdio` and its `--env` options for non-secret values.
|
|
89
|
+
|
|
90
|
+
The launcher starts the checked-out `dist/index.js` with `--no-env-file`, an
|
|
91
|
+
explicit mode, and a working directory outside the checkout. Its embedded mode
|
|
92
|
+
requires an existing encrypted account; it does not create or migrate one. Use
|
|
93
|
+
the direct server registration above when the browser setup must create or
|
|
94
|
+
import a local Vault wallet.
|
|
95
|
+
|
|
96
|
+
Or install the Claude Code plugin from the b-open-io marketplace for hosted MCP:
|
|
20
97
|
|
|
21
98
|
```sh
|
|
22
99
|
claude plugin install bsv-mcp@b-open-io
|
|
23
100
|
```
|
|
24
101
|
|
|
25
|
-
For
|
|
102
|
+
For another local client, register the same launcher command for external or
|
|
103
|
+
legacy embedded mode, or register `bun --no-env-file .../dist/index.js --stdio`
|
|
104
|
+
for browser-based Vault setup. For hosted access, connect to
|
|
105
|
+
**https://bsvmcp.com**. See [client setup](https://bsvmcp.com/#install).
|
|
26
106
|
|
|
27
107
|
Ask your agent: **“Run bsv_status, then show my wallet balance.”**
|
|
28
108
|
|
|
109
|
+
## MCP protocol compatibility
|
|
110
|
+
|
|
111
|
+
Protocol revision `2026-07-28` is preferred, with supported 2025 clients
|
|
112
|
+
accepted automatically on stdio and HTTP. No compatibility override is needed.
|
|
113
|
+
Set `MCP_LEGACY_COMPATIBILITY=false` only to require modern clients. This
|
|
114
|
+
setting also passes through the local launcher. The installed desktop client
|
|
115
|
+
was verified using legacy requests; modern support is tested separately.
|
|
116
|
+
|
|
117
|
+
Modern clients support wallet operations and request-scoped approval. Approval
|
|
118
|
+
continuations retain the original operation and bind to its authenticated user,
|
|
119
|
+
arguments, and expiry. Decline, cancellation, or session revocation stops the
|
|
120
|
+
operation; replaying a continuation does not repeat a transaction. A client
|
|
121
|
+
without form elicitation cannot approve a spend. External wallets retain their
|
|
122
|
+
own signer permission flow. The hosted route exposes public reads only.
|
|
123
|
+
|
|
124
|
+
For the split SDK v2 client:
|
|
125
|
+
|
|
126
|
+
```ts
|
|
127
|
+
const client = new Client(
|
|
128
|
+
{ name: "my-app", version: "1" },
|
|
129
|
+
{ versionNegotiation: { mode: "auto" }, capabilities: { elicitation: { form: {} } } },
|
|
130
|
+
);
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Register a real human approval handler before using approval-dependent tools.
|
|
134
|
+
Older installed Codex clients may require the explicit compatibility setting;
|
|
135
|
+
this does not constitute modern client acceptance.
|
|
136
|
+
|
|
137
|
+
The full tool catalog remains the default and is capability-derived: wallet
|
|
138
|
+
mode, enabled modules, account context, and the selected profile determine what
|
|
139
|
+
`tools/list` returns. The checked-in manifest is a synthetic baseline for one
|
|
140
|
+
configured server, not a promise of a fixed default count. Set
|
|
141
|
+
`MCP_TOOL_CATALOG=compact` only to opt into bounded read families; compact mode
|
|
142
|
+
is a staged capability pending release validation. Tool availability still
|
|
143
|
+
depends on wallet mode and enabled modules. Its baseline read families are
|
|
144
|
+
`bsv_read`, `ordinals_read`, `wallet_read`, and `utility`, each with a bounded
|
|
145
|
+
operation enum; unknown operations are rejected. Eligible sessions also expose
|
|
146
|
+
separate mutating `wallet_setup` and `wallet_payments` families. See the [MCP client
|
|
147
|
+
protocol support guide](docs/mcp-client-protocol-support.md) for the per-family
|
|
148
|
+
operation bounds, endpoint contracts, MCP Apps compatibility, and validation
|
|
149
|
+
status.
|
|
150
|
+
|
|
151
|
+
## Local wallet modes
|
|
152
|
+
|
|
153
|
+
External mode connects to an existing BRC-100 signer. The signer keeps the
|
|
154
|
+
private keys, wallet storage, and permission decisions; BSV MCP receives only
|
|
155
|
+
the SDK signer interface. Embedded mode uses an encrypted local Vault wallet.
|
|
156
|
+
The wallet-ready screen displays an interactive cloud of the connected session’s
|
|
157
|
+
available tools, generated from its live catalog.
|
|
158
|
+
|
|
159
|
+
When setup is needed, `wallet_onboarding` opens the private browser flow to
|
|
160
|
+
create, import, or unlock it. The selected account's database and storage
|
|
161
|
+
configuration remain in use. The launcher's existing-account embedded mode
|
|
162
|
+
still supplies `BSV_MCP_PASSWORD` at runtime.
|
|
163
|
+
Project mode opens every explicitly assigned role: `payments`,
|
|
164
|
+
`identity-signing`, `one-sat`, and `encryption`. It requires paired project
|
|
165
|
+
selectors and `BSV_MCP_PASSWORD` at runtime; set `VAULT_PATH` when the Vault
|
|
166
|
+
module does not provide a default path. Bindings pin the selected public key
|
|
167
|
+
and support direct keys, BRC-42 children, and BRC-157/Yours profile leaves.
|
|
168
|
+
Changing the project binding or expiring its session revokes captured handles.
|
|
169
|
+
Derived keys have separate storage; selecting the account's payment root keeps
|
|
170
|
+
its existing database and deposit prefix.
|
|
171
|
+
|
|
172
|
+
BRC-100 tools accept `walletRole` (`payments`, `identity`, `ordinals`, or
|
|
173
|
+
`encryption`). Method defaults select the matching role, and sign/abort action
|
|
174
|
+
continuations retain their originating wallet and authenticated user. An
|
|
175
|
+
unassigned role fails rather than borrowing another key. BAP tools use the
|
|
176
|
+
identity wallet for publication, rotation, attestations, and profiles without
|
|
177
|
+
exporting an xprv. That wallet also funds those transactions and retains BAP
|
|
178
|
+
records. Signed BSocial posts and SIGMA inscriptions use the configured identity.
|
|
179
|
+
|
|
180
|
+
External registrations can use the same project root/ID pair to derive an
|
|
181
|
+
isolated permission origin, without a Vault password. Optional
|
|
182
|
+
`BRC100_WALLET_PUBLIC_KEY` pins the signer identity. `BRC100_WALLET_ROLES` is a
|
|
183
|
+
JSON object selecting independent role endpoints and public-key pins; see
|
|
184
|
+
[external signer configuration](docs/external-signer.md). The source launcher
|
|
185
|
+
accepts `external --project-root /absolute/project --project-id project.example`.
|
|
186
|
+
It defaults to disabled broadcasting; set `DISABLE_BROADCASTING=false` in its
|
|
187
|
+
runtime environment to enable transaction tools with the signer's approval.
|
|
188
|
+
|
|
189
|
+
Each mode has its own process environment and should be registered as a separate
|
|
190
|
+
server when you need to switch between them. The hosted plugin is a third path:
|
|
191
|
+
it does not read a wallet on your computer.
|
|
192
|
+
|
|
193
|
+
Embedded wallets can list pending PeerPay payments and receive a selected
|
|
194
|
+
payment with `wallet_peerPayments`. Receiving requires a message ID and
|
|
195
|
+
acknowledges the message only after the wallet accepts it. These operations do
|
|
196
|
+
not pay MessageBox service fees. External signers and Droplit do not expose this tool. Project sessions require
|
|
197
|
+
an assigned payment role.
|
|
198
|
+
|
|
199
|
+
## Find a skill
|
|
200
|
+
|
|
201
|
+
Use `utils_find_skills` with a short keyword query to find skills in the bOpen
|
|
202
|
+
catalog. It returns up to five descriptions and links to versioned `SKILL.md`
|
|
203
|
+
files. It does not download skill contents or install plugins. In compact mode,
|
|
204
|
+
select `utils_find_skills` from the `utility` tool.
|
|
205
|
+
|
|
206
|
+
The static tutorial prompts and BRC/BitCom resource catalog have been retired.
|
|
207
|
+
Use the skill finder for those references. Changelog, JungleBus documentation,
|
|
208
|
+
and the dashboard app resource remain available.
|
|
209
|
+
|
|
29
210
|
## Bring your wallet and infrastructure
|
|
30
211
|
|
|
31
|
-
Connect a compatible existing wallet with `BRC100_WALLET_URL`,
|
|
212
|
+
Connect a compatible existing wallet with `BRC100_WALLET_URL`, select a legacy
|
|
213
|
+
encrypted account with `BSV_MCP_ACCOUNT` and unlock it with
|
|
214
|
+
`BSV_MCP_PASSWORD`, or use the local Vault browser setup. If setup is needed,
|
|
215
|
+
ask your agent to run `wallet_onboarding`; after a restart, run it again to
|
|
216
|
+
unlock the saved Vault. Startup never creates keys. An existing wallet keeps
|
|
217
|
+
its keys and controls permissions. `PRIVATE_KEY_WIF` and `IDENTITY_KEY_WIF` are
|
|
218
|
+
legacy compatibility inputs; they trigger a persistent Vault migration warning
|
|
219
|
+
and should be removed after importing the keys into Vault. See the wallet setup
|
|
220
|
+
guide for the required wallet API and configuration.
|
|
32
221
|
|
|
33
|
-
The default 1Sat backend is `https://api.1sat.app`.
|
|
222
|
+
The default 1Sat API backend is `https://api.1sat.app`. New mainnet embedded
|
|
223
|
+
accounts use `https://wallet.1sat.app` for wallet storage by default; testnet
|
|
224
|
+
accounts do not select a remote storage provider unless configured. Override
|
|
225
|
+
`ONESAT_API_URL` for API services and `REMOTE_STORAGE_URL` for wallet storage;
|
|
226
|
+
these are separate settings. Available tools depend on wallet mode and enabled
|
|
227
|
+
modules.
|
|
34
228
|
|
|
35
229
|
- [Wallet setup](https://bsvmcp.com/docs#wallets)
|
|
36
230
|
- [Backend configuration](https://bsvmcp.com/docs#backends)
|
|
@@ -45,8 +239,20 @@ The default 1Sat backend is `https://api.1sat.app`. Override `ONESAT_API_URL` to
|
|
|
45
239
|
bun install
|
|
46
240
|
bun run dev # Website
|
|
47
241
|
bun run build:all # MCP server and dashboard
|
|
48
|
-
|
|
242
|
+
# Supply BRC100_WALLET_URL in the host environment before this launch.
|
|
243
|
+
bun --no-env-file scripts/local-mcp-launcher.ts external # Source-checkout local launch
|
|
49
244
|
bun test
|
|
50
245
|
```
|
|
51
246
|
|
|
52
247
|
Experimental software; APIs may change. Keep a wallet backup. If a transaction request times out, check whether it succeeded before sending it again. MIT licensed.
|
|
248
|
+
|
|
249
|
+
## Preparing a release package
|
|
250
|
+
|
|
251
|
+
Run `bun run pack:release /tmp` to build and create the release tarball. Install
|
|
252
|
+
or publish that tarball, for example `bun publish /tmp/bsv-mcp-0.5.0.tgz`,
|
|
253
|
+
after completing the release checks and selecting the release version.
|
|
254
|
+
Do not publish directly from the checkout: its manifest contains Bun patches
|
|
255
|
+
needed to build the wallet fixes, which fail to resolve in consumer projects.
|
|
256
|
+
The release command stages a separate manifest without build scripts, development
|
|
257
|
+
dependencies, or patch declarations; the compiled bundle includes the wallet fixes.
|
|
258
|
+
The destination directory must already exist.
|