@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.
- package/README.md +43 -50
- package/install.js +5 -5
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/@createsomething/ground-mcp)
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
5
|
|
|
6
|
-
**Grounded claims for code.** An MCP server that
|
|
6
|
+
**Grounded claims for code.** An MCP server that computes evidence before code-analysis claims.
|
|
7
7
|
|
|
8
|
-
|
|
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
|
|
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" |
|
|
19
|
+
| Design drift | "Colors look hardcoded" | Token usage and violation counts |
|
|
20
20
|
|
|
21
|
-
**The difference**: Ground requires computation before
|
|
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
|
|
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.
|
|
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,
|
|
106
|
-
|
|
107
|
-
|
|
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
|
|
124
|
-
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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 --
|
|
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/
|
|
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
|
|
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-
|
|
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 =
|
|
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.
|
|
4
|
-
"description": "
|
|
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": {
|