@createsomething/ground-mcp 0.3.4 → 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 +42 -59
- 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,13 +67,21 @@ 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.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
|
80
|
+
configurations: `wrangler.toml` and `wrangler.json` `main` entries are protected
|
|
81
|
+
with their exact config source. The legacy `ground find orphans` command now
|
|
82
|
+
returns the same verified canonical report as `ground analyze --checks orphans`.
|
|
83
|
+
Promptfoo and manual Ground configurations remain recognized alongside package
|
|
84
|
+
scripts, and broad duplicate scans retain their explicit safety bound.
|
|
77
85
|
|
|
78
86
|
The release package ships thin command wrappers for every platform. Install
|
|
79
87
|
downloads the matching versioned release asset and verifies its SHA-256 against
|
|
@@ -103,9 +111,10 @@ manifest have completed successfully.
|
|
|
103
111
|
If a release was built successfully but npm publication was blocked (for
|
|
104
112
|
example, during Trusted Publishing setup), rerun **Ground Release** manually
|
|
105
113
|
with its exact `ground-v<version>` tag and **publish only** enabled. That path
|
|
106
|
-
checks out the tag,
|
|
107
|
-
|
|
108
|
-
|
|
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.
|
|
109
118
|
|
|
110
119
|
## The Problem
|
|
111
120
|
|
|
@@ -121,8 +130,8 @@ This is hallucination dressed up as analysis.
|
|
|
121
130
|
|
|
122
131
|
Ground is an MCP server that:
|
|
123
132
|
- Finds duplicates, dead code, and orphaned modules
|
|
124
|
-
- Requires verification before
|
|
125
|
-
-
|
|
133
|
+
- Requires verification before its claim tools record a finding
|
|
134
|
+
- Keeps checked inputs with the recorded claim
|
|
126
135
|
- Provides confidence scores with evidence
|
|
127
136
|
|
|
128
137
|
---
|
|
@@ -138,8 +147,7 @@ This is the one everyone gets wrong. Claude Code doesn't read `.claude/mcp.json`
|
|
|
138
147
|
**Option A: User scope (available everywhere)**
|
|
139
148
|
|
|
140
149
|
```bash
|
|
141
|
-
|
|
142
|
-
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
|
|
143
151
|
```
|
|
144
152
|
|
|
145
153
|
Restart Claude Code, run `/mcp`, and you should see "ground" connected.
|
|
@@ -153,7 +161,7 @@ Create `.mcp.json` in your project root:
|
|
|
153
161
|
"mcpServers": {
|
|
154
162
|
"ground": {
|
|
155
163
|
"command": "npx",
|
|
156
|
-
"args": ["@createsomething/ground-mcp"]
|
|
164
|
+
"args": ["--yes", "-p", "@createsomething/ground-mcp", "ground-mcp"]
|
|
157
165
|
}
|
|
158
166
|
}
|
|
159
167
|
}
|
|
@@ -161,37 +169,16 @@ Create `.mcp.json` in your project root:
|
|
|
161
169
|
|
|
162
170
|
Claude Code will prompt you to approve it on first use.
|
|
163
171
|
|
|
164
|
-
### Cursor
|
|
165
|
-
|
|
166
|
-
[**Install in Cursor →**](cursor://anysphere.cursor-deeplink/mcp/install?name=ground&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyJAY3JlYXRlc29tZXRoaW5nL2dyb3VuZC1tY3AiXX0%3D)
|
|
172
|
+
### Cursor
|
|
167
173
|
|
|
168
|
-
|
|
174
|
+
Add to `.mcp.json` at your project root:
|
|
169
175
|
|
|
170
176
|
```json
|
|
171
177
|
{
|
|
172
178
|
"mcpServers": {
|
|
173
179
|
"ground": {
|
|
174
180
|
"command": "npx",
|
|
175
|
-
"args": ["@createsomething/ground-mcp"]
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### Claude Desktop
|
|
182
|
-
|
|
183
|
-
Add to `claude_desktop_config.json`:
|
|
184
|
-
|
|
185
|
-
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
186
|
-
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
187
|
-
- **Linux**: `~/.config/Claude/claude_desktop_config.json`
|
|
188
|
-
|
|
189
|
-
```json
|
|
190
|
-
{
|
|
191
|
-
"mcpServers": {
|
|
192
|
-
"ground": {
|
|
193
|
-
"command": "npx",
|
|
194
|
-
"args": ["@createsomething/ground-mcp"]
|
|
181
|
+
"args": ["--yes", "-p", "@createsomething/ground-mcp", "ground-mcp"]
|
|
195
182
|
}
|
|
196
183
|
}
|
|
197
184
|
}
|
|
@@ -206,22 +193,16 @@ Settings → MCP → View raw config, add:
|
|
|
206
193
|
"mcpServers": {
|
|
207
194
|
"ground": {
|
|
208
195
|
"command": "npx",
|
|
209
|
-
"args": ["@createsomething/ground-mcp"]
|
|
196
|
+
"args": ["--yes", "-p", "@createsomething/ground-mcp", "ground-mcp"]
|
|
210
197
|
}
|
|
211
198
|
}
|
|
212
199
|
}
|
|
213
200
|
```
|
|
214
201
|
|
|
215
|
-
### VS Code + Copilot
|
|
216
|
-
|
|
217
|
-
1. Open Extensions panel
|
|
218
|
-
2. Filter by "MCP Server"
|
|
219
|
-
3. Search "ground"
|
|
220
|
-
|
|
221
202
|
### Codex CLI
|
|
222
203
|
|
|
223
204
|
```bash
|
|
224
|
-
codex mcp add ground --
|
|
205
|
+
codex mcp add ground -- npx --yes -p @createsomething/ground-mcp ground-mcp
|
|
225
206
|
```
|
|
226
207
|
|
|
227
208
|
### Global Install (When npx Isn't Your Thing)
|
|
@@ -269,7 +250,7 @@ Ground needs to know where your code is. For project-specific analysis, run it f
|
|
|
269
250
|
"mcpServers": {
|
|
270
251
|
"ground": {
|
|
271
252
|
"command": "npx",
|
|
272
|
-
"args": ["@createsomething/ground-mcp", "--workspace", "/path/to/your/project"]
|
|
253
|
+
"args": ["--yes", "-p", "@createsomething/ground-mcp", "ground-mcp", "--workspace", "/path/to/your/project"]
|
|
273
254
|
}
|
|
274
255
|
}
|
|
275
256
|
}
|
|
@@ -392,7 +373,7 @@ Ground is based on a simple principle: **no claim without evidence**.
|
|
|
392
373
|
- **Dead code** → You have to count the uses first
|
|
393
374
|
- **Orphans** → You have to check the connections first
|
|
394
375
|
|
|
395
|
-
This
|
|
376
|
+
This keeps Ground's recorded claims tied to prerequisite computation.
|
|
396
377
|
|
|
397
378
|
## Configuration
|
|
398
379
|
|
|
@@ -416,11 +397,13 @@ entry_points:
|
|
|
416
397
|
For `ground_find_orphans` and `ground_analyze`, orphan coverage includes
|
|
417
398
|
`entry_point_evidence`: the exact path, entry-point type, and source Ground used
|
|
418
399
|
to protect it. Alongside package, framework, test, and script entry points,
|
|
419
|
-
Ground recognizes exact `entry_points.manual` declarations
|
|
400
|
+
Ground recognizes exact `entry_points.manual` declarations, nested
|
|
401
|
+
`wrangler.toml` and `wrangler.json` Worker `main` entries, and local
|
|
420
402
|
`providers[].id`, `prompts[].id`, and assertion-value `file://…` references in
|
|
421
|
-
`promptfooconfig*.yaml`. The
|
|
422
|
-
|
|
423
|
-
|
|
403
|
+
`promptfooconfig*.yaml`. The config adapters accept only existing source files
|
|
404
|
+
beneath their configuration file; they do not scan arbitrary YAML or follow
|
|
405
|
+
parent/absolute paths. The legacy `ground find orphans` command returns this
|
|
406
|
+
same canonical orphan evidence.
|
|
424
407
|
|
|
425
408
|
See [Full Documentation](https://github.com/createsomethingtoday/create-something-monorepo/tree/main/packages/ground) for configuration reference.
|
|
426
409
|
|
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": {
|