search-rotation 0.4.9 → 0.4.11

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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Robin Bially (LocalFoundry)
3
+ Copyright (c) 2026 Robin Bially
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  **One MCP server for web search and page extraction across multiple providers.**
7
7
 
8
- Built by [Robin Bially](https://github.com/localfoundry) under the LocalFoundry label.
8
+ Built by [Robin Bially](https://github.com/robin-bially).
9
9
 
10
10
  Rotate across available quotas, automatically fail over when a provider is unavailable, and return consistent results to your AI assistant. A local dashboard lets you manage API keys, reorder engines, check quotas, and inspect request history.
11
11
 
@@ -18,30 +18,35 @@ Rotate across available quotas, automatically fail over when a provider is unava
18
18
 
19
19
  ## Quick start
20
20
 
21
+ ### npm
22
+
23
+ ```sh
24
+ npx -y search-rotation --http --open
25
+ ```
26
+
27
+ Requires **Node.js 20.3+**. For MCP over stdio, configure your client to run
28
+ `npx -y search-rotation` with no arguments. The server is also listed in the
29
+ [official MCP Registry](https://registry.modelcontextprotocol.io/?q=io.github.robin-bially%2Fsearch-rotation)
30
+ as `io.github.robin-bially/search-rotation`.
31
+
21
32
  ### Homebrew
22
33
 
23
34
  ```sh
24
- brew install localfoundry/tap/search-rotation
35
+ brew install robin-bially/tap/search-rotation
25
36
  search-rotation --http --open
26
37
  ```
27
38
 
28
39
  Homebrew installs the required Node.js runtime. For MCP over stdio, configure your
29
40
  client to run `search-rotation` with no arguments. See the
30
- [LocalFoundry tap](https://github.com/localfoundry/homebrew-tap) for upgrades and details.
31
-
32
- ### GitHub / npx
41
+ [Homebrew tap](https://github.com/robin-bially/homebrew-tap) for upgrades and details.
33
42
 
34
- Requires **Node.js 20.3+** and **Git**. Install directly from GitHub — **no npm account needed**.
43
+ ### Pinned release from GitHub
35
44
 
36
45
  ```sh
37
- npx -y --allow-git=all github:localfoundry/search-rotation-mcp#v0.4.9
46
+ npx -y --allow-git=all github:robin-bially/search-rotation-mcp#v0.4.11
38
47
  ```
39
48
 
40
- To preview the dashboard:
41
-
42
- ```sh
43
- npx -y --allow-git=all github:localfoundry/search-rotation-mcp#v0.4.9 --http --open
44
- ```
49
+ Use this when you want a fixed version instead of the current npm release.
45
50
 
46
51
  Add your provider keys in the dashboard, then connect your assistant using the **[MCP client setup guide](docs/clients.md)** for Codex, Claude, Cursor, or OpenCode.
47
52
 
@@ -114,11 +119,15 @@ After updating, reconnect your MCP client to load the new tool schema.
114
119
  ## Releasing
115
120
 
116
121
  ```sh
117
- VERSION=0.4.9 ./scripts/release.sh --publish
122
+ VERSION=0.4.10 ./scripts/release.sh --publish
118
123
  ```
119
124
 
120
- The script checks the package (`npm ci`, build, tests, `npm run smoke:package`), bumps the version, points the document pins at it, commits and tags, packs the tarball with its checksum, creates the GitHub release and updates the formula in `localfoundry/homebrew-tap`. Without `--publish` it only prepares the artifacts in `.build/releases`; `--dry-run` checks the prerequisites, `--draft` creates a draft release and `--force` tolerates a dirty tree. The tap is cloned temporarily when `TAP_DIR` is not set, so a fresh checkout is enough.
125
+ The script checks the package (`npm ci`, build, tests, `npm run smoke:package`), bumps the version, points the document pins at it, commits and tags, packs the tarball with its checksum, creates the GitHub release, updates the formula in `robin-bially/homebrew-tap` and finally waits until the npm registry serves the new version. Without `--publish` it only prepares the artifacts in `.build/releases`; `--dry-run` checks the prerequisites, `--draft` creates a draft release and `--force` tolerates a dirty tree. The tap is cloned temporarily when `TAP_DIR` is not set, so a fresh checkout is enough.
126
+
127
+ Publishing to npm happens in [`.github/workflows/publish.yml`](.github/workflows/publish.yml) through trusted publishing once the GitHub release is published, so the script itself needs no npm credentials. The workflow requires a trusted publisher for `search-rotation` on npmjs.com that points at this repository and `publish.yml`.
128
+
129
+ The same workflow registers the version in the official MCP Registry from `server.json`. [Distribution & listings](docs/distribution.md) tracks every channel, who keeps it current, and what each one still needs.
121
130
 
122
131
  ## Learn more
123
132
 
124
- [Client setup](docs/clients.md) · [Operations & configuration (DE)](docs/operations.md) · [Releases](https://github.com/localfoundry/search-rotation-mcp/releases) · [CI](https://github.com/localfoundry/search-rotation-mcp/actions/workflows/ci.yml) · [MIT license](LICENSE)
133
+ [Client setup](docs/clients.md) · [Operations & configuration (DE)](docs/operations.md) · [Distribution & listings](docs/distribution.md) · [Releases](https://github.com/robin-bially/search-rotation-mcp/releases) · [CI](https://github.com/robin-bially/search-rotation-mcp/actions/workflows/ci.yml) · [MIT license](LICENSE)
package/dist/index.js CHANGED
File without changes
package/docs/clients.md CHANGED
@@ -5,7 +5,7 @@
5
5
  ## Homebrew installation
6
6
 
7
7
  ```sh
8
- brew install localfoundry/tap/search-rotation
8
+ brew install robin-bially/tap/search-rotation
9
9
  ```
10
10
 
11
11
  Homebrew installs Node.js automatically. Set your MCP client's command to
@@ -36,7 +36,7 @@ Add to `~/.codex/config.toml`:
36
36
  ```toml
37
37
  [mcp_servers.search-rotation]
38
38
  command = "npx"
39
- args = ["-y", "--allow-git=all", "github:localfoundry/search-rotation-mcp#v0.4.9"]
39
+ args = ["-y", "search-rotation"]
40
40
  ```
41
41
 
42
42
  ## Claude Desktop and Cursor
@@ -48,7 +48,7 @@ Add to Claude Desktop's MCP configuration or Cursor's `.cursor/mcp.json`:
48
48
  "mcpServers": {
49
49
  "search-rotation": {
50
50
  "command": "npx",
51
- "args": ["-y", "--allow-git=all", "github:localfoundry/search-rotation-mcp#v0.4.9"]
51
+ "args": ["-y", "search-rotation"]
52
52
  }
53
53
  }
54
54
  }
@@ -57,7 +57,7 @@ Add to Claude Desktop's MCP configuration or Cursor's `.cursor/mcp.json`:
57
57
  ## Claude Code
58
58
 
59
59
  ```sh
60
- claude mcp add search-rotation -- npx -y --allow-git=all github:localfoundry/search-rotation-mcp#v0.4.9
60
+ claude mcp add search-rotation -- npx -y search-rotation
61
61
  ```
62
62
 
63
63
  ## OpenCode V2
@@ -67,20 +67,22 @@ Add this entry under `mcp.servers`:
67
67
  ```json
68
68
  "search-rotation": {
69
69
  "type": "local",
70
- "command": ["npx", "-y", "--allow-git=all", "github:localfoundry/search-rotation-mcp#v0.4.9"],
70
+ "command": ["npx", "-y", "search-rotation"],
71
71
  "codemode": true
72
72
  }
73
73
  ```
74
74
 
75
75
  ## Local install or release archive
76
76
 
77
- If installed locally, use `search-rotation` as the command. A prebuilt archive is also available under [GitHub Releases](https://github.com/localfoundry/search-rotation-mcp/releases/latest):
77
+ If installed locally, use `search-rotation` as the command. A prebuilt archive is also available under [GitHub Releases](https://github.com/robin-bially/search-rotation-mcp/releases/latest):
78
78
 
79
79
  ```sh
80
- npm install -g ./search-rotation-0.4.9.tgz
80
+ npm install -g ./search-rotation-0.4.11.tgz
81
81
  ```
82
82
 
83
- `--allow-git=all` permits Git dependencies in npm 12. Older npm versions may display a warning for this option. npm/npx are package tools here; the package is distributed on GitHub.
83
+ npx installs the package from the npm registry, so no Git access is required. The pinned
84
+ `github:robin-bially/search-rotation-mcp#vX` form from the README needs `--allow-git=all`
85
+ instead, because npm 12 resolves Git dependencies only when explicitly allowed.
84
86
 
85
87
  For remote HTTP access, authentication and advanced settings, see the [operations guide (German)](operations.md).
86
88
 
@@ -0,0 +1,53 @@
1
+ # Distribution and listings
2
+
3
+ Where search-rotation is published or listed, who keeps each channel current, and
4
+ what still needs attention. Snapshot: 2026-09-26, after the account rename from `localfoundry` to `robin-bially` and the 0.4.11 release.
5
+
6
+ ## Channels
7
+
8
+ | Channel | Entry | Kept current by | State |
9
+ | --- | --- | --- | --- |
10
+ | npm | `search-rotation` | release workflow, trusted publishing | 0.4.10; 0.4.11 blocked by the stale trusted publisher, see below |
11
+ | Homebrew | `brew install robin-bially/tap/search-rotation` | release script writes the formula | 0.4.11 |
12
+ | Official MCP Registry | `io.github.robin-bially/search-rotation` | release workflow, GitHub OIDC | blocked: the registry verifies the npm package, so it needs 0.4.11 on npm first; `io.github.localfoundry/search-rotation` stays live at 0.4.10 because the registry has no unpublish |
13
+ | GitHub releases | tag, tarball and checksum | release script | v0.4.11 |
14
+ | Glama | [directory entry](https://glama.ai/mcp/servers/robin-bially/search-rotation-mcp), rated A | Glama indexes the repository on its own | listed; the account rename is pending a re-crawl |
15
+ | mcpservers.org | [submission](https://mcpservers.org/de/submit) from 2026-09-26 | reviewed by the site | in review, up to two weeks |
16
+ | PulseMCP | — | ingests the official registry | submissions paused, not listed yet |
17
+ | [punkpeye/awesome-mcp-servers](https://github.com/punkpeye/awesome-mcp-servers/pull/15171) | Search & Data Extraction | maintainers | pull request open, listing checks done |
18
+ | [YuzeHao2023/Awesome-MCP-Servers](https://github.com/YuzeHao2023/Awesome-MCP-Servers/pull/550) | Search & Web | maintainers | pull request open |
19
+ | [ever-works/awesome-mcp-servers](https://github.com/ever-works/awesome-mcp-servers/pull/188) | Web Search | maintainers | pull request open |
20
+
21
+ Channels that build on the official registry follow a release by themselves, so a
22
+ release needs no manual work for them.
23
+
24
+ ## What a release updates
25
+
26
+ `VERSION=x.y.z ./scripts/release.sh --publish` runs the checks, bumps the version,
27
+ commits and tags, creates the GitHub release, packs the tarball with its checksum,
28
+ writes the formula in `robin-bially/homebrew-tap`, and waits until npm serves the
29
+ new version. The published release triggers
30
+ [`.github/workflows/publish.yml`](../.github/workflows/publish.yml), which pushes
31
+ the package to npm with provenance and then registers the same version in the
32
+ official MCP Registry from `server.json` and the `mcpName` field of
33
+ `package.json`.
34
+
35
+ Four details are easy to forget:
36
+
37
+ - `server.json` and `mcpName` must name the same server; `test/registry-manifest.test.ts` fails when they drift apart.
38
+ - The registry limits `description` to 100 characters.
39
+ - The registry verifies ownership through the published npm package, so a manifest can only be registered once that version exists on npm. The workflow skips an already published version, which makes a re-run safe.
40
+ - npm trusted publishing is bound to one repository. The entry for `search-rotation` still named `localfoundry/search-rotation-mcp`, so the 0.4.11 publish failed with `404 Not Found - PUT https://registry.npmjs.org/search-rotation`. Repair with `npm trust github search-rotation --file publish.yml --repo robin-bially/search-rotation-mcp --allow-publish`, then revoke the stale entry (`npm trust list search-rotation`, `npm trust revoke search-rotation --id=<id>`) and re-run the publish workflow. Both commands ask for a one-time password in the browser. The old owner name is free again, so the stale entry also lets a stranger publish to this package.
41
+
42
+ ## Recurring checks
43
+
44
+ - After a release: `npm view search-rotation version` and the [registry entry](https://registry.modelcontextprotocol.io/?q=io.github.robin-bially%2Fsearch-rotation) should both show the new version. The release script already waits for npm, but a failed publish workflow leaves the release and the tap ahead of npm, as with 0.4.11.
45
+ - Dependency and tap maintenance runs outside this repository on a biweekly schedule.
46
+ - The GitHub account moved from `localfoundry` to `robin-bially` on 2026-09-26. The registry has no unpublish, so the entry `io.github.localfoundry/search-rotation` stays frozen at 0.4.10 while the next release adds `io.github.robin-bially/search-rotation`. The old handle is free again, so anything still pointing there can end up at a different account.
47
+ - Open externally: mcpservers.org reviews the submission, PulseMCP is paused, the three list pull requests wait for their maintainers, and Glama re-crawls repositories at its own pace.
48
+
49
+ ## Deliberately not used
50
+
51
+ Directories that require a new account before a submission (Glama's own form,
52
+ mcp.so) are skipped. The Glama listing exists because Glama indexes public GitHub
53
+ repositories without a submission; it picked up the repository rename by itself.
@@ -26,7 +26,7 @@ Der Gratis-Modus ist **keine Ausgabengarantie**: andere Anwendungen können dass
26
26
  ## Remote-Betrieb (Streamable HTTP)
27
27
 
28
28
  ```bash
29
- npx -y --allow-git=all github:localfoundry/search-rotation-mcp#v0.4.9 --http --host 0.0.0.0 --port 6277 --public-origin https://search.example.com --token <geheim>
29
+ npx -y search-rotation --http --host 0.0.0.0 --port 6277 --public-origin https://search.example.com --token <geheim>
30
30
  ```
31
31
 
32
32
  Client-Config (Claude):
@@ -1,15 +1,52 @@
1
+ ## v0.4.11 — Distribution under the robin-bially account
2
+
3
+ The GitHub account moved from `localfoundry` to `robin-bially`, so every distribution
4
+ path follows: the Homebrew tap is `robin-bially/tap`, the official MCP Registry
5
+ namespace becomes `io.github.robin-bially/search-rotation`, and the npm metadata now
6
+ points at the renamed repository. The package itself is unchanged, so there is no
7
+ behaviour change and no configuration migration.
8
+
9
+ ```sh
10
+ brew update && brew upgrade robin-bially/tap/search-rotation
11
+ ```
12
+
13
+ Or run the pinned GitHub version:
14
+
15
+ ```sh
16
+ npx -y --allow-git=all github:robin-bially/search-rotation-mcp#v0.4.11
17
+ ```
18
+
19
+
20
+ ## v0.4.10 — npm distribution and MCP Registry metadata
21
+
22
+ The package now ships through npm as well, so `npx -y search-rotation` installs the
23
+ latest release without Git. Publishing runs in the release workflow through npm
24
+ trusted publishing, and `mcpName` plus `server.json` carry the metadata for the
25
+ official MCP Registry.
26
+
27
+ ```sh
28
+ brew update && brew upgrade robin-bially/tap/search-rotation
29
+ ```
30
+
31
+ Or run the pinned GitHub version:
32
+
33
+ ```sh
34
+ npx -y --allow-git=all github:robin-bially/search-rotation-mcp#v0.4.10
35
+ ```
36
+
37
+
1
38
  ## v0.4.9 — Updated Node type definitions
2
39
 
3
40
  Routine maintenance release: the Node type definitions move to 26.6.3. No behaviour change and no configuration migration. The GitHub release page now shows only the notes for the current version instead of the whole changelog.
4
41
 
5
42
  ```sh
6
- brew update && brew upgrade localfoundry/tap/search-rotation
43
+ brew update && brew upgrade robin-bially/tap/search-rotation
7
44
  ```
8
45
 
9
46
  Or run the pinned GitHub version:
10
47
 
11
48
  ```sh
12
- npx -y --allow-git=all github:localfoundry/search-rotation-mcp#v0.4.9
49
+ npx -y --allow-git=all github:robin-bially/search-rotation-mcp#v0.4.9
13
50
  ```
14
51
 
15
52
 
@@ -18,13 +55,13 @@ npx -y --allow-git=all github:localfoundry/search-rotation-mcp#v0.4.9
18
55
  Routine maintenance release: the MCP SDK moves to 1.30.1, Hono to 4.13.9, Zod to 4.6.5, tsx to 4.23.15 and the Node type definitions to 26.6.2, together with the matching transitive updates (jose, proxy-addr, ip-address, fast-uri, undici-types). No behaviour change and no configuration migration.
19
56
 
20
57
  ```sh
21
- brew update && brew upgrade localfoundry/tap/search-rotation
58
+ brew update && brew upgrade robin-bially/tap/search-rotation
22
59
  ```
23
60
 
24
61
  Or run the pinned GitHub version:
25
62
 
26
63
  ```sh
27
- npx -y --allow-git=all github:localfoundry/search-rotation-mcp#v0.4.8
64
+ npx -y --allow-git=all github:robin-bially/search-rotation-mcp#v0.4.8
28
65
  ```
29
66
 
30
67
 
@@ -42,11 +79,11 @@ Engine call counts are now visible with or without an API key. Search, fetch, an
42
79
  No configuration migration is required. Reconnect MCP clients after updating.
43
80
 
44
81
  ```sh
45
- brew update && brew upgrade localfoundry/tap/search-rotation
82
+ brew update && brew upgrade robin-bially/tap/search-rotation
46
83
  ```
47
84
 
48
85
  Or run the pinned GitHub version:
49
86
 
50
87
  ```sh
51
- npx -y --allow-git=all github:localfoundry/search-rotation-mcp#v0.4.7
88
+ npx -y --allow-git=all github:robin-bially/search-rotation-mcp#v0.4.7
52
89
  ```
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "search-rotation",
3
- "version": "0.4.9",
3
+ "version": "0.4.11",
4
+ "mcpName": "io.github.robin-bially/search-rotation",
4
5
  "description": "Round-robin web search over the free tiers of multiple search APIs (Tavily, Firecrawl, Parallel, Exa, Google PSE, Jina, DuckDuckGo) as an MCP server — with a local dashboard for API keys, engine order/toggles and live quota status.",
5
6
  "type": "module",
6
7
  "license": "MIT",
7
8
  "author": {
8
9
  "name": "Robin Bially",
9
- "url": "https://github.com/localfoundry"
10
+ "url": "https://github.com/robin-bially"
10
11
  },
11
12
  "bin": {
12
13
  "search-rotation": "dist/index.js"
@@ -56,10 +57,10 @@
56
57
  },
57
58
  "repository": {
58
59
  "type": "git",
59
- "url": "git+https://github.com/localfoundry/search-rotation-mcp.git"
60
+ "url": "git+https://github.com/robin-bially/search-rotation-mcp.git"
60
61
  },
61
- "homepage": "https://github.com/localfoundry/search-rotation-mcp#readme",
62
+ "homepage": "https://github.com/robin-bially/search-rotation-mcp#readme",
62
63
  "bugs": {
63
- "url": "https://github.com/localfoundry/search-rotation-mcp/issues"
64
+ "url": "https://github.com/robin-bially/search-rotation-mcp/issues"
64
65
  }
65
66
  }
package/static/app.js CHANGED
@@ -462,8 +462,7 @@ function sparkline(entries) {
462
462
 
463
463
  function renderSnippets() {
464
464
  const remoteUrl = location.origin + "/mcp";
465
- const packageRef = "github:localfoundry/search-rotation-mcp#v" + state.meta.version;
466
- const args = ["-y", "--allow-git=all", packageRef];
465
+ const args = ["-y", "search-rotation"];
467
466
  const codex = $("#snip-codex");
468
467
  if (!codex) return;
469
468
  codex.textContent = '[mcp_servers.search-rotation]\ncommand = "npx"\nargs = ' + JSON.stringify(args);
package/static/index.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <title>search-rotation · LocalFoundry</title>
6
+ <title>search-rotation</title>
7
7
  <meta name="theme-color" content="#0a0c12">
8
8
  <link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%238b7cf7'/%3E%3Cstop offset='1' stop-color='%234dd8e6'/%3E%3C/linearGradient%3E%3C/defs%3E%3Ccircle cx='16' cy='16' r='14' fill='none' stroke='url(%23g)' stroke-width='3.5' stroke-dasharray='66 22' stroke-linecap='round'/%3E%3Ccircle cx='16' cy='16' r='4.5' fill='url(%23g)'/%3E%3C/svg%3E">
9
9
  <link rel="stylesheet" href="/style.css">
@@ -83,7 +83,7 @@
83
83
  <main class="view" id="view" aria-live="polite"></main>
84
84
 
85
85
  <footer class="footer">
86
- <span><strong>LocalFoundry</strong> · <span data-i18n="footer.text"></span></span>
86
+ <span><strong>Robin Bially</strong> · <span data-i18n="footer.text"></span></span>
87
87
  <span class="footer-meta"><code id="configpath"></code></span>
88
88
  </footer>
89
89