bowmark-mcp 1.0.0 → 1.0.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 +27 -11
- package/dist/bridge.js +2 -2
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -49,9 +49,15 @@ If your host speaks streamable HTTP, skip this bridge and connect directly to
|
|
|
49
49
|
- **`?s=n` source code** is registered in `apps/api/src/mcp-sources.ts` +
|
|
50
50
|
`mcp-registry/sources.json` (npm stdio bridge channel; the PyPI bridge is
|
|
51
51
|
`?s=p`).
|
|
52
|
-
- **
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
- **npm ownership verification needs BOTH markers — the registry checks the
|
|
53
|
+
published package.json, not just the README.** The `mcp-name:
|
|
54
|
+
ai.bowmark/bowmark` line above and the `"mcpName": "ai.bowmark/bowmark"`
|
|
55
|
+
field in `package.json` are both load-bearing; don't remove either. Learned
|
|
56
|
+
the hard way 2026-07-04: `release-mcp.yml`'s registry republish failed for
|
|
57
|
+
five straight api releases (`server returned status 400: ... "NPM package
|
|
58
|
+
'bowmark-mcp' is missing required 'mcpName' field"`) because only the
|
|
59
|
+
README marker was present — the package.json field is what `mcp-publisher
|
|
60
|
+
publish` actually validates against the live npm package.
|
|
55
61
|
- **Versioning is manual** (thin bridge, not the api): bump `package.json`
|
|
56
62
|
when it changes. Not wired into release-please; `private` is deliberately
|
|
57
63
|
absent so npm publish works — release-please doesn't manage this package.
|
|
@@ -64,15 +70,25 @@ injected at the `callRemote`/`buildServer` seams.
|
|
|
64
70
|
|
|
65
71
|
## Publishing to npm
|
|
66
72
|
|
|
67
|
-
**Live since 2026-07-04** (
|
|
73
|
+
**Live since 2026-07-04** (published by CI + cold-verified via
|
|
68
74
|
`npx -y bowmark-mcp` against prod). To ship a version: **bump `version` in
|
|
69
|
-
`package.json` (and the two `version` literals in `src/bridge.ts`)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
75
|
+
`package.json` (and the two `version` literals in `src/bridge.ts`) and
|
|
76
|
+
merge.** The actual publish does NOT run in this monorepo's CI — this repo
|
|
77
|
+
is private, and npm Trusted Publishing (OIDC) validates against
|
|
78
|
+
`package.json`'s `repository.url`, which (correctly) points at the public
|
|
79
|
+
mirror `github.com/bowmark-ai/mcp`, not `Metroxe/bowmark`. So merging here
|
|
80
|
+
only lands the version bump; `release-bowmark-mcp.yml` mirror-syncs it to
|
|
81
|
+
`bowmark-ai/mcp`, and THAT repo's own `.github/workflows/publish.yml`
|
|
82
|
+
(source-controlled at
|
|
83
|
+
[`packages/bowmark-mcp/.github/workflows/publish.yml`](../.github/workflows/publish.yml)
|
|
84
|
+
in this monorepo, mirrored in like any other file) does the real `npm
|
|
85
|
+
publish`. Auth is npm **Trusted Publishing** (OIDC) — no token, configured
|
|
86
|
+
on npmjs.com (package Settings → Trusted Publisher → GitHub Actions, repo
|
|
87
|
+
`bowmark-ai/mcp`, workflow `publish.yml`). Publishing from the public
|
|
88
|
+
mirror also auto-generates provenance attestations, which npm only produces
|
|
89
|
+
for public-repo publishes — impossible from this private monorepo
|
|
90
|
+
regardless of `repository.url`. Not release-please; the bump IS the release
|
|
91
|
+
action.
|
|
76
92
|
|
|
77
93
|
`mcp-registry/server.json` carries the matching npm `packages` entry (landed
|
|
78
94
|
after the first publish per the mcp-name ordering rule), and the website
|
package/dist/bridge.js
CHANGED
|
@@ -35,7 +35,7 @@ export function authHeaders(env = process.env) {
|
|
|
35
35
|
return key ? { "X-Bowmark-Key": key } : undefined;
|
|
36
36
|
}
|
|
37
37
|
async function withRemote(fn) {
|
|
38
|
-
const client = new Client({ name: "bowmark-mcp-bridge", version: "1.0.
|
|
38
|
+
const client = new Client({ name: "bowmark-mcp-bridge", version: "1.0.2" });
|
|
39
39
|
const headers = authHeaders();
|
|
40
40
|
const transport = new StreamableHTTPClientTransport(new URL(targetUrl()), {
|
|
41
41
|
requestInit: headers ? { headers } : undefined,
|
|
@@ -60,7 +60,7 @@ export async function callRemote(fn, connect = withRemote) {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
export function buildServer(remote = callRemote) {
|
|
63
|
-
const server = new Server({ name: "bowmark", version: "1.0.
|
|
63
|
+
const server = new Server({ name: "bowmark", version: "1.0.2" }, { capabilities: { tools: {} } });
|
|
64
64
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
65
65
|
return await remote((c) => c.listTools());
|
|
66
66
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bowmark-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"mcpName": "ai.bowmark/bowmark",
|
|
4
5
|
"description": "Bowmark MCP over stdio \u2014 a thin bridge to the hosted Bowmark MCP at https://api.bowmark.ai/mcp",
|
|
5
6
|
"license": "MIT",
|
|
6
7
|
"author": "Bowmark AI <christopher@bowmark.ai>",
|