@createsomething/ground-mcp 0.3.5 → 0.3.6
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 +31 -49
- 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
|
|
|
@@ -55,7 +55,7 @@ check in `check_coverage.<check>.status`. The contract is explicit:
|
|
|
55
55
|
- `PASS`: the check completed for the relevant supported files and found no issue.
|
|
56
56
|
- `FAIL`: the check found an issue or could not complete because of a read/parse failure.
|
|
57
57
|
- `NOT_APPLICABLE`: no changed file needs that check.
|
|
58
|
-
- `UNSUPPORTED`: relevant source exists, but the requested check cannot analyze its language
|
|
58
|
+
- `UNSUPPORTED`: relevant source exists, but the requested check cannot analyze its language.
|
|
59
59
|
- `TIMEOUT`: duplicate analysis reached its deadline before a complete result was available.
|
|
60
60
|
|
|
61
61
|
`ground analyze` and `ground diff` accept `--timeout-ms` (120000 by default).
|
|
@@ -67,7 +67,16 @@ view; read `discovered_changed_files`, `analyzable_changed_files`, and
|
|
|
67
67
|
`unsupported_changed_files` and `excluded_changed_files`, so a clean claim is
|
|
68
68
|
valid only with `PASS`.
|
|
69
69
|
|
|
70
|
-
Ground 0.3.
|
|
70
|
+
Ground 0.3.6 supports TypeScript (`.ts`, `.tsx`), JavaScript (`.js`, `.jsx`,
|
|
71
|
+
`.mjs`), and Svelte (`.svelte`) in the declared analysis lane. Svelte component
|
|
72
|
+
scripts participate in duplicate analysis, while SvelteKit configuration,
|
|
73
|
+
routes, aliases, actions, stores, and framework entry points inform reachability
|
|
74
|
+
and dead-export evidence. Svelte dead-export checks analyze module-context
|
|
75
|
+
scripts only; instance-script exports such as legacy `export let` props are
|
|
76
|
+
component API and are excluded. Inputs outside that contract remain unsupported
|
|
77
|
+
rather than being reported as clean.
|
|
78
|
+
|
|
79
|
+
Ground 0.3.5 extended source-bearing orphan evidence to nested Cloudflare Worker
|
|
71
80
|
configurations: `wrangler.toml` and `wrangler.json` `main` entries are protected
|
|
72
81
|
with their exact config source. The legacy `ground find orphans` command now
|
|
73
82
|
returns the same verified canonical report as `ground analyze --checks orphans`.
|
|
@@ -102,9 +111,10 @@ manifest have completed successfully.
|
|
|
102
111
|
If a release was built successfully but npm publication was blocked (for
|
|
103
112
|
example, during Trusted Publishing setup), rerun **Ground Release** manually
|
|
104
113
|
with its exact `ground-v<version>` tag and **publish only** enabled. That path
|
|
105
|
-
checks out the tag,
|
|
106
|
-
|
|
107
|
-
|
|
114
|
+
checks out the tag, executes the governed calibration fixture suite, binds its
|
|
115
|
+
result to the exact source, recomputes the ledger thresholds, requires the tag
|
|
116
|
+
to match `package.json`, and verifies the existing release checksum manifest
|
|
117
|
+
before publishing; it does not rebuild or replace GitHub Release assets.
|
|
108
118
|
|
|
109
119
|
## The Problem
|
|
110
120
|
|
|
@@ -120,8 +130,8 @@ This is hallucination dressed up as analysis.
|
|
|
120
130
|
|
|
121
131
|
Ground is an MCP server that:
|
|
122
132
|
- Finds duplicates, dead code, and orphaned modules
|
|
123
|
-
- Requires verification before
|
|
124
|
-
-
|
|
133
|
+
- Requires verification before its claim tools record a finding
|
|
134
|
+
- Keeps checked inputs with the recorded claim
|
|
125
135
|
- Provides confidence scores with evidence
|
|
126
136
|
|
|
127
137
|
---
|
|
@@ -137,8 +147,7 @@ This is the one everyone gets wrong. Claude Code doesn't read `.claude/mcp.json`
|
|
|
137
147
|
**Option A: User scope (available everywhere)**
|
|
138
148
|
|
|
139
149
|
```bash
|
|
140
|
-
|
|
141
|
-
claude mcp add --scope user --transport stdio ground -- npx @createsomething/ground-mcp
|
|
150
|
+
claude mcp add --scope user --transport stdio ground -- npx --yes -p @createsomething/ground-mcp ground-mcp
|
|
142
151
|
```
|
|
143
152
|
|
|
144
153
|
Restart Claude Code, run `/mcp`, and you should see "ground" connected.
|
|
@@ -152,7 +161,7 @@ Create `.mcp.json` in your project root:
|
|
|
152
161
|
"mcpServers": {
|
|
153
162
|
"ground": {
|
|
154
163
|
"command": "npx",
|
|
155
|
-
"args": ["@createsomething/ground-mcp"]
|
|
164
|
+
"args": ["--yes", "-p", "@createsomething/ground-mcp", "ground-mcp"]
|
|
156
165
|
}
|
|
157
166
|
}
|
|
158
167
|
}
|
|
@@ -160,37 +169,16 @@ Create `.mcp.json` in your project root:
|
|
|
160
169
|
|
|
161
170
|
Claude Code will prompt you to approve it on first use.
|
|
162
171
|
|
|
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`:
|
|
172
|
+
### Cursor
|
|
183
173
|
|
|
184
|
-
|
|
185
|
-
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
186
|
-
- **Linux**: `~/.config/Claude/claude_desktop_config.json`
|
|
174
|
+
Add to `.mcp.json` at your project root:
|
|
187
175
|
|
|
188
176
|
```json
|
|
189
177
|
{
|
|
190
178
|
"mcpServers": {
|
|
191
179
|
"ground": {
|
|
192
180
|
"command": "npx",
|
|
193
|
-
"args": ["@createsomething/ground-mcp"]
|
|
181
|
+
"args": ["--yes", "-p", "@createsomething/ground-mcp", "ground-mcp"]
|
|
194
182
|
}
|
|
195
183
|
}
|
|
196
184
|
}
|
|
@@ -205,22 +193,16 @@ Settings → MCP → View raw config, add:
|
|
|
205
193
|
"mcpServers": {
|
|
206
194
|
"ground": {
|
|
207
195
|
"command": "npx",
|
|
208
|
-
"args": ["@createsomething/ground-mcp"]
|
|
196
|
+
"args": ["--yes", "-p", "@createsomething/ground-mcp", "ground-mcp"]
|
|
209
197
|
}
|
|
210
198
|
}
|
|
211
199
|
}
|
|
212
200
|
```
|
|
213
201
|
|
|
214
|
-
### VS Code + Copilot
|
|
215
|
-
|
|
216
|
-
1. Open Extensions panel
|
|
217
|
-
2. Filter by "MCP Server"
|
|
218
|
-
3. Search "ground"
|
|
219
|
-
|
|
220
202
|
### Codex CLI
|
|
221
203
|
|
|
222
204
|
```bash
|
|
223
|
-
codex mcp add ground --
|
|
205
|
+
codex mcp add ground -- npx --yes -p @createsomething/ground-mcp ground-mcp
|
|
224
206
|
```
|
|
225
207
|
|
|
226
208
|
### Global Install (When npx Isn't Your Thing)
|
|
@@ -268,7 +250,7 @@ Ground needs to know where your code is. For project-specific analysis, run it f
|
|
|
268
250
|
"mcpServers": {
|
|
269
251
|
"ground": {
|
|
270
252
|
"command": "npx",
|
|
271
|
-
"args": ["@createsomething/ground-mcp", "--workspace", "/path/to/your/project"]
|
|
253
|
+
"args": ["--yes", "-p", "@createsomething/ground-mcp", "ground-mcp", "--workspace", "/path/to/your/project"]
|
|
272
254
|
}
|
|
273
255
|
}
|
|
274
256
|
}
|
|
@@ -391,7 +373,7 @@ Ground is based on a simple principle: **no claim without evidence**.
|
|
|
391
373
|
- **Dead code** → You have to count the uses first
|
|
392
374
|
- **Orphans** → You have to check the connections first
|
|
393
375
|
|
|
394
|
-
This
|
|
376
|
+
This keeps Ground's recorded claims tied to prerequisite computation.
|
|
395
377
|
|
|
396
378
|
## Configuration
|
|
397
379
|
|
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.3.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.3.6",
|
|
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": {
|