@onimaxxing/sussy-seeds-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.
Files changed (3) hide show
  1. package/README.md +41 -58
  2. package/dist/index.js +1 -1
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,14 +1,14 @@
1
1
  # @onimaxxing/sussy-seeds-mcp
2
2
 
3
- MCP server for Oxygen Not Included seed hunting. Runs the sussy-seeds wasm scanner over stdio so an LLM can compose Builder AST specs and drive scans against the game's real worldgen.
3
+ MCP server for Oxygen Not Included seed hunting. Runs the sussy-seeds wasm scanner over stdio so an LLM can compose Builder AST specs and drive scans against onimaxxing worldgen.
4
4
 
5
- Same scanner powers the browser app at [onimaxxing.com/sussy-seeds](https://onimaxxing.com/sussy-seeds/). Same wasm, same constraint kinds, shared share-URL format so a chat session can hand off to the web app and back.
5
+ Companion to the browser scanner at [onimaxxing.com/sussy-seeds](https://onimaxxing.com/sussy-seeds/). Shared share-URL format round-trips between the MCP and the web app.
6
6
 
7
7
  ## Install
8
8
 
9
9
  ### Claude Code
10
10
 
11
- Add to `.mcp.json` (project scope) or `~/.claude/settings.json` (user scope):
11
+ `.mcp.json` (project) or `~/.claude/settings.json` (user):
12
12
 
13
13
  ```json
14
14
  {
@@ -21,11 +21,9 @@ Add to `.mcp.json` (project scope) or `~/.claude/settings.json` (user scope):
21
21
  }
22
22
  ```
23
23
 
24
- Reload MCP servers, then ask the LLM to hunt seeds. The first invocation caches the package under npm's `_npx` cache.
25
-
26
24
  ### Claude Desktop
27
25
 
28
- Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or the platform equivalent:
26
+ `~/Library/Application Support/Claude/claude_desktop_config.json` on macOS, or the platform equivalent:
29
27
 
30
28
  ```json
31
29
  {
@@ -38,96 +36,81 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
38
36
  }
39
37
  ```
40
38
 
41
- Restart Claude Desktop.
39
+ ### Codex CLI
40
+
41
+ ```
42
+ codex mcp add sussy-seeds -- npx -y @onimaxxing/sussy-seeds-mcp
43
+ ```
44
+
45
+ Or edit `~/.codex/config.toml` directly:
46
+
47
+ ```toml
48
+ [mcp_servers.sussy-seeds]
49
+ command = "npx"
50
+ args = ["-y", "@onimaxxing/sussy-seeds-mcp"]
51
+ ```
42
52
 
43
- ### Other MCP clients
53
+ ### Other clients
44
54
 
45
- Any client that speaks the stdio transport works. Tool schemas are declared via the standard MCP JSON-RPC surface (`tools/list`, `tools/call`). Progress notifications tagged with `_meta.progressToken` are emitted during long JS-tier scans.
55
+ Same `{command, args}` shape works in Cursor, Windsurf, Zed, Continue, Cline. Progress notifications carry `_meta.progressToken`.
46
56
 
47
57
  ## Requirements
48
58
 
49
- Node 20 or newer. No ONI install required; the gambling wasm and the worldgen wasm ship inside the depended-on packages.
59
+ Node 20 or newer.
50
60
 
51
61
  ## Tools
52
62
 
53
- Grouped by phase of a typical hunt.
54
-
55
63
  ### Discovery
56
64
 
57
- Read-only catalogs of ids the LLM composes constraints from. Each takes an optional `coord` and annotates per-world admissibility where the KG can prove it.
58
-
59
- - `listClusters({filter?})`, with disambiguation hints for shared-stem labels (`AQU-C` vs `V-AQU-C`)
65
+ - `listClusters({filter?})`
60
66
  - `listWorlds({coord})`, `listWorldsAcrossClusters({query})`
61
67
  - `listStoryTraits`, `listMixingCategories`
62
68
  - `listGeysers`, `listTraits`, `listBiomes`, `listPois`
63
- - `listSpawnTags({query?, group?})` paginated critter and plant prefab tags
64
- - `listConstraintKinds` Builder AST catalog with example payloads
65
- - `listHelpers` ADVANCED_HELPERS names for preHook / postHook use
66
- - `listPrefabAdmissibility({coord, prefabId})` point check across a cluster's worlds
69
+ - `listSpawnTags({query?, group?, offset?, limit?})`
70
+ - `listConstraintKinds`
71
+ - `listHelpers`
72
+ - `listPrefabAdmissibility({coord, prefabId})`
67
73
 
68
74
  ### Coord composition
69
75
 
70
- - `buildCoord({formState})`, `parseCoord({coord})`, `describeCoord({coord})`, `freshCoord({clusterPrefix})`
76
+ - `buildCoord({formState})`
77
+ - `parseCoord({coord})`
78
+ - `describeCoord({coord})`
79
+ - `freshCoord({clusterPrefix})`
71
80
 
72
81
  ### Admissibility
73
82
 
74
- - `verdictOf({coord, constraint})`, `verdictOfSpec({coord, spec})` microsecond KG-side check for structurally-impossible constraints. Catches things like "Niobium ≤ 4 hexes from home on AQU-C" where the KG placement is rings 7-10 and no seed can match.
83
+ - `verdictOf({coord, constraint})`, `verdictOfSpec({coord, spec})`
75
84
 
76
85
  ### Scanning
77
86
 
78
- JS-tier scans stream progress via `notifications/progress` when the client sends `_meta.progressToken`. Cancellable via the standard JSON-RPC cancel request; server returns the top-K accumulated so far.
87
+ Streams `notifications/progress` when the client sends `_meta.progressToken`. Cancellable via JSON-RPC.
79
88
 
80
- - `scan({coord, spec, opts?})` seed range scan, top-K matches. Auto-selects bytecode tier (~1M seeds/sec/core) for require-only summary specs; falls to JS tier for prefer mode or map-tier constraints.
81
- - `scanUntil({coord, spec, targetHits, opts?})` stops at N matches.
82
- - `scanSeeds({coord, spec, seeds})` evaluates against an explicit seed list, one row per input including `pass: false`.
89
+ - `scan({coord, spec, opts?})`: top-K over a seed range. Bytecode tier (~1M/s/core) for require-only summary specs; JS tier otherwise.
90
+ - `scanUntil({coord, spec, targetHits, opts?})`: stops at N matches.
91
+ - `scanSeeds({coord, spec, seeds})`: one row per input seed.
83
92
 
84
- `spec.preHook` and `spec.postHook` accept raw JS bodies that run before requires and after prefers respectively. A reserved-identifier guard rejects sources that would shadow the Builder emit's bindings.
93
+ `spec.preHook` and `spec.postHook` accept raw JS. Reserved-identifier guard rejects sources that shadow the Builder emit's bindings.
85
94
 
86
95
  ### Inspection
87
96
 
88
- - `getSeedSummary({coord, seed})` cluster shape from the wasm summary. Cheap.
89
- - `getSeedDeep({coord, seed})` full worldgen projection with geyser rates and positions.
90
- - `describeSeed({coord, seed, deep?})` plain-English narration.
97
+ - `getSeedSummary({coord, seed})`
98
+ - `getSeedDeep({coord, seed})`
99
+ - `describeSeed({coord, seed, deep?})`
91
100
 
92
101
  ### Sharing
93
102
 
94
- - `shareResults({coord, spec, seeds, scanLimit?, tab?})` encodes the current session, uploads to the sussy-seeds share endpoint (R2 + CDN), returns `https://onimaxxing.com/sussy-seeds/<hash>`. Opening the URL loads the Builder tab with the exact spec, pins the seeds, sets the coord.
103
+ - `shareResults({coord, spec, seeds, scanLimit?, tab?})`: returns `https://onimaxxing.com/sussy-seeds/<hash>`. Opening the URL loads the spec, pins the seeds, sets the coord.
95
104
 
96
105
  ### Diagnostics
97
106
 
98
- - `ping()` smoke test.
99
- - `probeStreaming({steps, delayMs})` emits N progress notifications spaced by delayMs. Use to verify what your MCP client does with the notifications.
107
+ - `ping()`
108
+ - `probeStreaming({steps, delayMs})`
100
109
 
101
110
  ## Constraint kinds
102
111
 
103
- Every kind the sussy-seeds Builder tab supports is accepted through the MCP surface. Call `listConstraintKinds` for the catalog with example payloads. Current set:
104
-
105
112
  `world.trait`, `world.geyser`, `world.distToHome`, `world.distTo`, `world.traitCount`, `world.oilWells`, `world.critter`, `world.plant`, `world.spawn`, `world.biomeCount`, `world.marshyTungstenInMagma`, `world.niobiumVolcanoAccess`, `world.sussy`, `world.trash`, `world.asteroidRemix`, `poi.count`, `map.elementMass`, `home.geyserNearStart`, `cluster.geyser`, `cluster.oilWells`, `cluster.critter`, `cluster.plant`, `cluster.sussy`, `cluster.trash`.
106
113
 
107
- ## Development
108
-
109
- Sources live in the [onimaxxing](https://github.com/tigin-backwards/onimaxxing) monorepo at `packages/sussy-seeds-mcp/`, and reach into `apps/onimaxxing/src/gambling/` for the compile-to-js pipeline and constraint AST.
110
-
111
- ```
112
- pnpm install
113
- pnpm --filter @onimaxxing/sussy-seeds-mcp build
114
- ```
115
-
116
- For local Claude Code development, point `.mcp.json` at the built file directly:
117
-
118
- ```json
119
- {
120
- "mcpServers": {
121
- "sussy-seeds": {
122
- "command": "node",
123
- "args": ["/absolute/path/to/packages/sussy-seeds-mcp/dist/index.js"]
124
- }
125
- }
126
- }
127
- ```
128
-
129
- Reload MCP servers on every rebuild.
130
-
131
114
  ## License
132
115
 
133
116
  MIT.
package/dist/index.js CHANGED
@@ -143276,7 +143276,7 @@ function errorPayload(message, extras) {
143276
143276
  content: [
143277
143277
  {
143278
143278
  type: "text",
143279
- text: JSON.stringify({ ok: false, error: message, ...extras ?? {} })
143279
+ text: JSON.stringify({ ok: false, error: message, ...extras })
143280
143280
  }
143281
143281
  ],
143282
143282
  isError: true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onimaxxing/sussy-seeds-mcp",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "MCP server for Oxygen Not Included seed hunting. Runs the sussy-seeds wasm scanner over stdio; the LLM composes Builder AST specs and drives cluster / summary / map-tier scans against the game's real worldgen.",
5
5
  "keywords": [
6
6
  "claude",