@createsomething/ground-mcp 0.2.3 → 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 CHANGED
@@ -3,10 +3,52 @@
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 prevents AI hallucination in code analysis.
7
+
8
+ Works with Claude Code, Cursor, Windsurf, VS Code Copilot, Claude Desktop, and any MCP-compatible AI coding assistant.
7
9
 
8
10
  **[View Landing Page →](https://createsomething.agency/products/ground)**
9
11
 
12
+ ## Why Ground?
13
+
14
+ | Capability | Without Ground | With Ground |
15
+ |------------|---------------|-------------|
16
+ | Duplicate detection | "These look 95% similar" | Computed 87.3% similarity via AST + token analysis |
17
+ | Dead code claims | "This appears unused" | Verified: 0 imports, 0 type references |
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 |
20
+
21
+ **The difference**: Ground requires computation before claims. No hallucinated analysis.
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
+
10
52
  ## The Problem
11
53
 
12
54
  AI agents are confident. Too confident.
@@ -23,6 +65,7 @@ Ground is an MCP server that:
23
65
  - Finds duplicates, dead code, and orphaned modules
24
66
  - Requires verification before claims
25
67
  - Blocks hallucinated analysis
68
+ - Provides confidence scores with evidence
26
69
 
27
70
  ---
28
71
 
@@ -303,6 +346,27 @@ Ground loads `.ground.yml` from your project root for:
303
346
 
304
347
  See [Full Documentation](https://github.com/createsomethingtoday/create-something-monorepo/tree/main/packages/ground) for configuration reference.
305
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
+
306
370
  ## Links
307
371
 
308
372
  - [Full Documentation](https://github.com/createsomethingtoday/create-something-monorepo/tree/main/packages/ground)
@@ -312,3 +376,13 @@ See [Full Documentation](https://github.com/createsomethingtoday/create-somethin
312
376
  ## License
313
377
 
314
378
  MIT
379
+
380
+ ---
381
+
382
+ ## Related
383
+
384
+ Looking for task coordination? Use Linear with the CREATE SOMETHING `pnpm linear:*` wrappers for tracked work, ownership, status, and delivery evidence.
385
+
386
+ ## Keywords
387
+
388
+ MCP server, Model Context Protocol, AI code analysis, static analysis, duplicate detection, dead code detection, orphan detection, code quality, hallucination prevention, LLM tools, Claude Code, Cursor IDE, Windsurf, VS Code Copilot, Anthropic Claude, AI coding assistant, Rust, TypeScript, JavaScript, monorepo analysis, design tokens, CSS analysis, code verification.
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 = process.platform === 'win32' ? 'zip' : 'tar.gz';
49
- // Tag format: v0.2.0
50
- return `https://github.com/${REPO}/releases/download/v${VERSION}/ground-${binaryName}.${ext}`;
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
- // Run installer
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.2.3",
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",
@@ -15,21 +15,57 @@
15
15
  },
16
16
  "keywords": [
17
17
  "mcp",
18
+ "mcp-server",
18
19
  "model-context-protocol",
19
20
  "ai",
21
+ "ai-coding",
22
+ "ai-agent",
20
23
  "code-analysis",
24
+ "static-analysis",
21
25
  "duplicate-detection",
22
26
  "dead-code",
27
+ "dead-code-detection",
28
+ "orphan-detection",
29
+ "code-quality",
30
+ "hallucination-prevention",
23
31
  "grounding",
32
+ "verification",
24
33
  "llm",
34
+ "llm-tools",
25
35
  "claude",
26
- "cursor"
36
+ "claude-code",
37
+ "cursor",
38
+ "windsurf",
39
+ "copilot",
40
+ "codex",
41
+ "anthropic",
42
+ "openai",
43
+ "rust",
44
+ "typescript",
45
+ "javascript",
46
+ "monorepo",
47
+ "design-tokens",
48
+ "css-analysis"
27
49
  ],
28
50
  "bin": {
51
+ "ground": "bin/ground",
29
52
  "ground-mcp": "bin/ground-mcp"
30
53
  },
31
54
  "scripts": {
32
- "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"
33
69
  },
34
70
  "files": [
35
71
  "bin",