@createsomething/ground-mcp 0.3.5 → 0.4.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.
Files changed (3) hide show
  1. package/README.md +43 -50
  2. package/install.js +5 -5
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -3,9 +3,9 @@
3
3
  [![npm version](https://img.shields.io/npm/v/@createsomething/ground-mcp.svg)](https://www.npmjs.com/package/@createsomething/ground-mcp)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
5
 
6
- **Grounded claims for code.** An MCP server that prevents AI hallucination in code analysis.
6
+ **Grounded claims for code.** An MCP server that computes evidence before code-analysis claims.
7
7
 
8
- Works with Claude Code, Cursor, Windsurf, VS Code Copilot, Claude Desktop, and any MCP-compatible AI coding assistant.
8
+ The verified setup contract covers Claude Code, Codex, Cursor, and Windsurf.
9
9
 
10
10
  **[View Landing Page →](https://createsomething.agency/products/ground)**
11
11
 
@@ -13,12 +13,12 @@ Works with Claude Code, Cursor, Windsurf, VS Code Copilot, Claude Desktop, and a
13
13
 
14
14
  | Capability | Without Ground | With Ground |
15
15
  |------------|---------------|-------------|
16
- | Duplicate detection | "These look 95% similar" | Computed 87.3% similarity via AST + token analysis |
16
+ | Duplicate detection | "These look similar" | Computed AST + token similarity evidence |
17
17
  | Dead code claims | "This appears unused" | Verified: 0 imports, 0 type references |
18
18
  | Orphan detection | "Nothing imports this" | Checked: not a Worker entry point, not framework-implicit |
19
- | Design drift | "Colors look hardcoded" | Adoption ratio: 73% tokens, 27% violations |
19
+ | Design drift | "Colors look hardcoded" | Token usage and violation counts |
20
20
 
21
- **The difference**: Ground requires computation before claims. No hallucinated analysis.
21
+ **The difference**: Ground requires computation before its claim tools accept a claim.
22
22
 
23
23
  ## Recommended agent path
24
24
 
@@ -40,8 +40,13 @@ The installed CLI exposes the same batch and Git-aware entry points:
40
40
  ```bash
41
41
  ground analyze ./src --checks duplicates,dead_exports
42
42
  ground diff ./src --base origin/main --checks duplicates
43
+ ground doctor . --json
43
44
  ```
44
45
 
46
+ `ground doctor` fails on invalid policy and reports the native build, effective
47
+ policy SHA-256, workspace package count, and internal dependency count. Run it
48
+ before treating a repository result as authoritative.
49
+
45
50
  Both commands print JSON evidence. `ground diff` only returns files inside the
46
51
  requested directory and resolves Git paths from the repository root, so it is
47
52
  safe to run from a package inside a monorepo.
@@ -55,7 +60,7 @@ check in `check_coverage.<check>.status`. The contract is explicit:
55
60
  - `PASS`: the check completed for the relevant supported files and found no issue.
56
61
  - `FAIL`: the check found an issue or could not complete because of a read/parse failure.
57
62
  - `NOT_APPLICABLE`: no changed file needs that check.
58
- - `UNSUPPORTED`: relevant source exists, but the requested check cannot analyze its language (including Svelte duplicate-function scans).
63
+ - `UNSUPPORTED`: relevant source exists, but the requested check cannot analyze its language.
59
64
  - `TIMEOUT`: duplicate analysis reached its deadline before a complete result was available.
60
65
 
61
66
  `ground analyze` and `ground diff` accept `--timeout-ms` (120000 by default).
@@ -67,7 +72,16 @@ view; read `discovered_changed_files`, `analyzable_changed_files`, and
67
72
  `unsupported_changed_files` and `excluded_changed_files`, so a clean claim is
68
73
  valid only with `PASS`.
69
74
 
70
- Ground 0.3.5 extends source-bearing orphan evidence to nested Cloudflare Worker
75
+ Ground 0.4.0 supports TypeScript (`.ts`, `.tsx`), JavaScript (`.js`, `.jsx`,
76
+ `.mjs`), and Svelte (`.svelte`) in the declared analysis lane. Svelte component
77
+ scripts participate in duplicate analysis, while SvelteKit configuration,
78
+ routes, aliases, actions, stores, and framework entry points inform reachability
79
+ and dead-export evidence. Svelte dead-export checks analyze module-context
80
+ scripts only; instance-script exports such as legacy `export let` props are
81
+ component API and are excluded. Inputs outside that contract remain unsupported
82
+ rather than being reported as clean.
83
+
84
+ Ground 0.3.5 extended source-bearing orphan evidence to nested Cloudflare Worker
71
85
  configurations: `wrangler.toml` and `wrangler.json` `main` entries are protected
72
86
  with their exact config source. The legacy `ground find orphans` command now
73
87
  returns the same verified canonical report as `ground analyze --checks orphans`.
@@ -83,6 +97,12 @@ that produced a receipt with:
83
97
  ground build-info --json
84
98
  ```
85
99
 
100
+ Ground rejects malformed or unknown native policy fields instead of using
101
+ defaults. Claim commands recompute current evidence and reject a stored result
102
+ when source, scope, or the current engine's computation has changed. Duplicate
103
+ suggestions remain review-only unless a planner produces and validates a
104
+ concrete patch; similarity alone does not authorize a rewrite.
105
+
86
106
  ### Maintainers: trusted publishing
87
107
 
88
108
  Ground tags publish through npm Trusted Publishing rather than a local
@@ -102,9 +122,10 @@ manifest have completed successfully.
102
122
  If a release was built successfully but npm publication was blocked (for
103
123
  example, during Trusted Publishing setup), rerun **Ground Release** manually
104
124
  with its exact `ground-v<version>` tag and **publish only** enabled. That path
105
- checks out the tag, requires it to match `package.json`, and verifies the
106
- existing release checksum manifest before publishing; it does not rebuild or
107
- replace GitHub Release assets.
125
+ checks out the tag, executes the governed calibration fixture suite, binds its
126
+ result to the exact source, recomputes the ledger thresholds, requires the tag
127
+ to match `package.json`, and verifies the existing release checksum manifest
128
+ before publishing; it does not rebuild or replace GitHub Release assets.
108
129
 
109
130
  ## The Problem
110
131
 
@@ -120,8 +141,8 @@ This is hallucination dressed up as analysis.
120
141
 
121
142
  Ground is an MCP server that:
122
143
  - Finds duplicates, dead code, and orphaned modules
123
- - Requires verification before claims
124
- - Blocks hallucinated analysis
144
+ - Requires verification before its claim tools record a finding
145
+ - Keeps checked inputs with the recorded claim
125
146
  - Provides confidence scores with evidence
126
147
 
127
148
  ---
@@ -137,8 +158,7 @@ This is the one everyone gets wrong. Claude Code doesn't read `.claude/mcp.json`
137
158
  **Option A: User scope (available everywhere)**
138
159
 
139
160
  ```bash
140
- npm install @createsomething/ground-mcp
141
- claude mcp add --scope user --transport stdio ground -- npx @createsomething/ground-mcp
161
+ claude mcp add --scope user --transport stdio ground -- npx --yes -p @createsomething/ground-mcp ground-mcp
142
162
  ```
143
163
 
144
164
  Restart Claude Code, run `/mcp`, and you should see "ground" connected.
@@ -152,7 +172,7 @@ Create `.mcp.json` in your project root:
152
172
  "mcpServers": {
153
173
  "ground": {
154
174
  "command": "npx",
155
- "args": ["@createsomething/ground-mcp"]
175
+ "args": ["--yes", "-p", "@createsomething/ground-mcp", "ground-mcp"]
156
176
  }
157
177
  }
158
178
  }
@@ -160,37 +180,16 @@ Create `.mcp.json` in your project root:
160
180
 
161
181
  Claude Code will prompt you to approve it on first use.
162
182
 
163
- ### Cursor (One-Click)
164
-
165
- [**Install in Cursor →**](cursor://anysphere.cursor-deeplink/mcp/install?name=ground&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyJAY3JlYXRlc29tZXRoaW5nL2dyb3VuZC1tY3AiXX0%3D)
166
-
167
- Or add to `.mcp.json` at your project root:
168
-
169
- ```json
170
- {
171
- "mcpServers": {
172
- "ground": {
173
- "command": "npx",
174
- "args": ["@createsomething/ground-mcp"]
175
- }
176
- }
177
- }
178
- ```
179
-
180
- ### Claude Desktop
181
-
182
- Add to `claude_desktop_config.json`:
183
+ ### Cursor
183
184
 
184
- - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
185
- - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
186
- - **Linux**: `~/.config/Claude/claude_desktop_config.json`
185
+ Add to `.mcp.json` at your project root:
187
186
 
188
187
  ```json
189
188
  {
190
189
  "mcpServers": {
191
190
  "ground": {
192
191
  "command": "npx",
193
- "args": ["@createsomething/ground-mcp"]
192
+ "args": ["--yes", "-p", "@createsomething/ground-mcp", "ground-mcp"]
194
193
  }
195
194
  }
196
195
  }
@@ -205,22 +204,16 @@ Settings → MCP → View raw config, add:
205
204
  "mcpServers": {
206
205
  "ground": {
207
206
  "command": "npx",
208
- "args": ["@createsomething/ground-mcp"]
207
+ "args": ["--yes", "-p", "@createsomething/ground-mcp", "ground-mcp"]
209
208
  }
210
209
  }
211
210
  }
212
211
  ```
213
212
 
214
- ### VS Code + Copilot
215
-
216
- 1. Open Extensions panel
217
- 2. Filter by "MCP Server"
218
- 3. Search "ground"
219
-
220
213
  ### Codex CLI
221
214
 
222
215
  ```bash
223
- codex mcp add ground --command "npx @createsomething/ground-mcp"
216
+ codex mcp add ground -- npx --yes -p @createsomething/ground-mcp ground-mcp
224
217
  ```
225
218
 
226
219
  ### Global Install (When npx Isn't Your Thing)
@@ -268,7 +261,7 @@ Ground needs to know where your code is. For project-specific analysis, run it f
268
261
  "mcpServers": {
269
262
  "ground": {
270
263
  "command": "npx",
271
- "args": ["@createsomething/ground-mcp", "--workspace", "/path/to/your/project"]
264
+ "args": ["--yes", "-p", "@createsomething/ground-mcp", "ground-mcp", "--workspace", "/path/to/your/project"]
272
265
  }
273
266
  }
274
267
  }
@@ -365,7 +358,7 @@ Run ground_analyze on packages/sdk to find dead code
365
358
  ```
366
359
 
367
360
  ```
368
- What's the CSS token adoption ratio in packages/components?
361
+ What's the CSS token adoption ratio in packages/canon?
369
362
  ```
370
363
 
371
364
  ```
@@ -391,7 +384,7 @@ Ground is based on a simple principle: **no claim without evidence**.
391
384
  - **Dead code** → You have to count the uses first
392
385
  - **Orphans** → You have to check the connections first
393
386
 
394
- This prevents AI hallucination by requiring computation before synthesis.
387
+ This keeps Ground's recorded claims tied to prerequisite computation.
395
388
 
396
389
  ## Configuration
397
390
 
package/install.js CHANGED
@@ -17,11 +17,10 @@ const VERSION = require('./package.json').version;
17
17
  const SKIP_INSTALL = process.env.GROUND_MCP_SKIP_BINARY_INSTALL === '1';
18
18
  const IS_SOURCE_TREE_INSTALL = fs.existsSync(path.resolve(__dirname, '../Cargo.toml'));
19
19
 
20
- // Platform mapping
21
- // Note: macOS Intel uses arm64 binary via Rosetta 2
20
+ // Platform mapping. Every supported host receives a native archive.
22
21
  const PLATFORMS = {
23
22
  'darwin-arm64': 'darwin-arm64',
24
- 'darwin-x64': 'darwin-arm64', // Rosetta 2 compatibility
23
+ 'darwin-x64': 'darwin-x64',
25
24
  'linux-arm64': 'linux-arm64',
26
25
  'linux-x64': 'linux-x64',
27
26
  'win32-x64': 'win32-x64',
@@ -33,8 +32,8 @@ function getPlatformKey() {
33
32
  return `${platform}-${arch}`;
34
33
  }
35
34
 
36
- function getBinaryName() {
37
- const key = getPlatformKey();
35
+ function getBinaryName(platform = process.platform, arch = process.arch) {
36
+ const key = `${platform}-${arch}`;
38
37
  const name = PLATFORMS[key];
39
38
 
40
39
  if (!name) {
@@ -205,6 +204,7 @@ if (require.main === module) {
205
204
 
206
205
  module.exports = {
207
206
  download,
207
+ getBinaryName,
208
208
  getDownloadUrl,
209
209
  getChecksumsUrl,
210
210
  verifyArchiveIntegrity,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@createsomething/ground-mcp",
3
- "version": "0.3.5",
4
- "description": "Grounded claims for code. MCP server that prevents AI hallucination in code analysis.",
3
+ "version": "0.4.0",
4
+ "description": "Evidence-first code analysis for agents in TypeScript, JavaScript, and Svelte codebases.",
5
5
  "author": "CREATE SOMETHING <hello@createsomething.io>",
6
6
  "license": "MIT",
7
7
  "repository": {