@createsomething/ground-mcp 0.2.4 → 0.3.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 +51 -1
- package/bin/ground +0 -0
- package/bin/ground-mcp +0 -0
- package/install.js +43 -6
- package/package.json +16 -2
package/README.md
CHANGED
|
@@ -20,6 +20,35 @@ Works with Claude Code, Cursor, Windsurf, VS Code Copilot, Claude Desktop, and a
|
|
|
20
20
|
|
|
21
21
|
**The difference**: Ground requires computation before claims. No hallucinated analysis.
|
|
22
22
|
|
|
23
|
+
## Recommended agent path
|
|
24
|
+
|
|
25
|
+
Use CTX and Ground for different evidence:
|
|
26
|
+
|
|
27
|
+
- **CTX** retrieves the history of earlier agent work.
|
|
28
|
+
- **Ground** computes facts about the code that is on disk now.
|
|
29
|
+
|
|
30
|
+
For a current-source review, start with the compact verified loop:
|
|
31
|
+
|
|
32
|
+
1. `ground_analyze` — get machine-readable findings for a directory.
|
|
33
|
+
2. `ground_diff` — restrict the same checks to changes since a Git baseline.
|
|
34
|
+
3. `ground_verify_fix` — confirm the specific reported issue is gone.
|
|
35
|
+
4. `ground_explain` — inspect why Ground included, excluded, or scored a result.
|
|
36
|
+
|
|
37
|
+
The MCP server also retains targeted and graph tools for deeper investigations.
|
|
38
|
+
The installed CLI exposes the same batch and Git-aware entry points:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
ground analyze ./src --checks duplicates,dead_exports
|
|
42
|
+
ground diff ./src --base origin/main --checks duplicates
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Both commands print JSON evidence. `ground diff` only returns files inside the
|
|
46
|
+
requested directory and resolves Git paths from the repository root, so it is
|
|
47
|
+
safe to run from a package inside a monorepo.
|
|
48
|
+
|
|
49
|
+
The release package includes the native Apple Silicon binaries directly; other
|
|
50
|
+
supported platforms download the matching verified release asset during install.
|
|
51
|
+
|
|
23
52
|
## The Problem
|
|
24
53
|
|
|
25
54
|
AI agents are confident. Too confident.
|
|
@@ -317,6 +346,27 @@ Ground loads `.ground.yml` from your project root for:
|
|
|
317
346
|
|
|
318
347
|
See [Full Documentation](https://github.com/createsomethingtoday/create-something-monorepo/tree/main/packages/ground) for configuration reference.
|
|
319
348
|
|
|
349
|
+
## Native service pilot
|
|
350
|
+
|
|
351
|
+
The CRE-1473 pilot keeps TypeScript as the control plane and invokes the existing Rust `ground-mcp` binary through a small, typed MCP adapter. It is a bounded proof for analysis workloads, not a production routing change or a broad language migration.
|
|
352
|
+
|
|
353
|
+
The pilot owns four things:
|
|
354
|
+
|
|
355
|
+
- `pilot/ground-native-client.ts` — discovers and calls `ground_analyze` over stdio MCP with explicit timeout and error behavior
|
|
356
|
+
- `pilot/benchmark.ts` — captures repeated native samples plus a directional comparison with the existing TypeScript duplicate-analysis script
|
|
357
|
+
- `pilot/ground-benchmark-receipt.schema.json` — makes the retained evidence machine-checkable
|
|
358
|
+
- `pilot/validate-receipt.ts` — independently rejects incomplete, failed, or inconsistent receipts
|
|
359
|
+
|
|
360
|
+
From the repository root, run:
|
|
361
|
+
|
|
362
|
+
```bash
|
|
363
|
+
pnpm --filter @createsomething/ground-mcp run pilot:verify
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
The benchmark defaults to `packages/mcp-core/src`, five retained samples, one warmup, and the release binary at `packages/ground/target/release/ground-mcp`. Metrics between the Rust MCP path and TypeScript script are directional only because the implementations do not use identical parsers or algorithms.
|
|
367
|
+
|
|
368
|
+
Rollback is removal of the pilot adapter, benchmark, and package-local development scripts. No existing Ground command, npm installer path, Cloudflare surface, or production consumer is redirected by this pilot.
|
|
369
|
+
|
|
320
370
|
## Links
|
|
321
371
|
|
|
322
372
|
- [Full Documentation](https://github.com/createsomethingtoday/create-something-monorepo/tree/main/packages/ground)
|
|
@@ -331,7 +381,7 @@ MIT
|
|
|
331
381
|
|
|
332
382
|
## Related
|
|
333
383
|
|
|
334
|
-
Looking for task coordination?
|
|
384
|
+
Looking for task coordination? Use Linear with the CREATE SOMETHING `pnpm linear:*` wrappers for tracked work, ownership, status, and delivery evidence.
|
|
335
385
|
|
|
336
386
|
## Keywords
|
|
337
387
|
|
package/bin/ground
ADDED
|
Binary file
|
package/bin/ground-mcp
CHANGED
|
Binary file
|
package/install.js
CHANGED
|
@@ -14,6 +14,8 @@ const zlib = require('zlib');
|
|
|
14
14
|
|
|
15
15
|
const REPO = 'createsomethingtoday/create-something-monorepo';
|
|
16
16
|
const VERSION = require('./package.json').version;
|
|
17
|
+
const SKIP_INSTALL = process.env.GROUND_MCP_SKIP_BINARY_INSTALL === '1';
|
|
18
|
+
const IS_SOURCE_TREE_INSTALL = fs.existsSync(path.resolve(__dirname, '../Cargo.toml'));
|
|
17
19
|
|
|
18
20
|
// Platform mapping
|
|
19
21
|
// Note: macOS Intel uses arm64 binary via Rosetta 2
|
|
@@ -44,10 +46,25 @@ function getBinaryName() {
|
|
|
44
46
|
return name;
|
|
45
47
|
}
|
|
46
48
|
|
|
47
|
-
function getDownloadUrl(binaryName) {
|
|
48
|
-
const ext =
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
function getDownloadUrl(binaryName, platform = process.platform) {
|
|
50
|
+
const ext = platform === 'win32' ? 'zip' : 'tar.gz';
|
|
51
|
+
return `https://github.com/${REPO}/releases/download/ground-v${VERSION}/ground-${binaryName}.${ext}`;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function hasBundledNativeBinaries() {
|
|
55
|
+
// The npm artifact includes a release-built Apple Silicon bootstrap pair.
|
|
56
|
+
// Other platforms continue through the release-asset downloader below.
|
|
57
|
+
if (getPlatformKey() !== 'darwin-arm64') return false;
|
|
58
|
+
|
|
59
|
+
const binDir = path.join(__dirname, 'bin');
|
|
60
|
+
return ['ground', 'ground-mcp'].every((name) => {
|
|
61
|
+
const binary = path.join(binDir, name);
|
|
62
|
+
try {
|
|
63
|
+
return fs.statSync(binary).isFile() && (fs.statSync(binary).mode & 0o111) !== 0;
|
|
64
|
+
} catch {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
51
68
|
}
|
|
52
69
|
|
|
53
70
|
async function download(url) {
|
|
@@ -92,6 +109,21 @@ async function extractZip(buffer, destDir) {
|
|
|
92
109
|
}
|
|
93
110
|
|
|
94
111
|
async function install() {
|
|
112
|
+
if (SKIP_INSTALL) {
|
|
113
|
+
console.log('Ground MCP: Skipping binary install because GROUND_MCP_SKIP_BINARY_INSTALL=1');
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (IS_SOURCE_TREE_INSTALL) {
|
|
118
|
+
console.log('Ground MCP: Skipping binary install in source checkout');
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (hasBundledNativeBinaries()) {
|
|
123
|
+
console.log('Ground MCP: Using bundled darwin-arm64 binaries');
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
|
|
95
127
|
console.log('Ground MCP: Installing binary...');
|
|
96
128
|
|
|
97
129
|
const binaryName = getBinaryName();
|
|
@@ -166,5 +198,10 @@ async function install() {
|
|
|
166
198
|
}
|
|
167
199
|
}
|
|
168
200
|
|
|
169
|
-
|
|
170
|
-
install();
|
|
201
|
+
if (require.main === module) {
|
|
202
|
+
install();
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
module.exports = {
|
|
206
|
+
getDownloadUrl,
|
|
207
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@createsomething/ground-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Grounded claims for code. MCP server that prevents AI hallucination in code analysis.",
|
|
5
5
|
"author": "CREATE SOMETHING <hello@createsomething.io>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -48,10 +48,24 @@
|
|
|
48
48
|
"css-analysis"
|
|
49
49
|
],
|
|
50
50
|
"bin": {
|
|
51
|
+
"ground": "bin/ground",
|
|
51
52
|
"ground-mcp": "bin/ground-mcp"
|
|
52
53
|
},
|
|
53
54
|
"scripts": {
|
|
54
|
-
"postinstall": "node install.js"
|
|
55
|
+
"postinstall": "node install.js",
|
|
56
|
+
"pilot:build": "cargo build --release --manifest-path ../Cargo.toml --bin ground --bin ground-mcp",
|
|
57
|
+
"pilot:benchmark": "tsx pilot/benchmark.ts",
|
|
58
|
+
"pilot:check": "tsc --noEmit -p pilot/tsconfig.json",
|
|
59
|
+
"pilot:receipt:validate": "tsx pilot/validate-receipt.ts",
|
|
60
|
+
"pilot:test": "pnpm run pilot:build && tsx --test pilot/*.test.ts",
|
|
61
|
+
"pilot:verify": "pnpm run pilot:check && pnpm run pilot:test && pnpm run pilot:benchmark && pnpm run pilot:receipt:validate -- pilot/evidence/ground-native-benchmark-receipt.v1.json"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
65
|
+
"@types/node": "^24.10.9",
|
|
66
|
+
"ajv": "^8.17.1",
|
|
67
|
+
"tsx": "^4.21.0",
|
|
68
|
+
"typescript": "^5.9.3"
|
|
55
69
|
},
|
|
56
70
|
"files": [
|
|
57
71
|
"bin",
|