context-mcp-server 1.0.3 → 1.0.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "context-mcp-server",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "Persistent AI memory + codebase knowledge graph MCP server. Works across Claude Code, Cursor, Gemini CLI, Codex, Windsurf, VS Code Copilot, Claude.ai, and ChatGPT.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -21,6 +21,8 @@
21
21
  "files": [
22
22
  "src/",
23
23
  "codegraph/",
24
+ "pyproject.toml",
25
+ "uv.lock",
24
26
  "README.md"
25
27
  ],
26
28
  "keywords": [
package/pyproject.toml ADDED
@@ -0,0 +1,69 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "codegraph-mcp"
7
+ version = "1.0.4"
8
+ description = "Codebase knowledge graph MCP server — AST extraction, graph queries, community detection"
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ license = { text = "MIT" }
12
+ keywords = ["mcp", "ai", "codegraph", "knowledge-graph", "ast"]
13
+ dependencies = [
14
+ "mcp>=1.0.0",
15
+ "networkx>=3.0",
16
+ "pymupdf>=1.24",
17
+ "tree-sitter>=0.23.0",
18
+ ]
19
+
20
+ [project.optional-dependencies]
21
+ treesitter = [
22
+ "tree-sitter>=0.23.0",
23
+ "tree-sitter-python",
24
+ "tree-sitter-javascript",
25
+ "tree-sitter-typescript",
26
+ "tree-sitter-go",
27
+ "tree-sitter-rust",
28
+ "tree-sitter-java",
29
+ "tree-sitter-c",
30
+ "tree-sitter-cpp",
31
+ "tree-sitter-c-sharp",
32
+ "tree-sitter-ruby",
33
+ "tree-sitter-php",
34
+ "tree-sitter-swift",
35
+ "tree-sitter-lua",
36
+ "tree-sitter-kotlin",
37
+ ]
38
+
39
+ [project.scripts]
40
+ codegraph-mcp = "codegraph.server:main"
41
+
42
+ [tool.hatch.build.targets.wheel]
43
+ packages = ["codegraph"]
44
+
45
+ # ── uv ────────────────────────────────────────────────────────────────────────
46
+
47
+ [dependency-groups]
48
+ dev = [
49
+ "pytest>=8.0",
50
+ "pytest-asyncio>=0.23",
51
+ "ruff>=0.4",
52
+ "mypy>=1.10",
53
+ ]
54
+
55
+ # ── ruff ─────────────────────────────────────────────────────────────────────
56
+
57
+ [tool.ruff]
58
+ target-version = "py311"
59
+ line-length = 100
60
+
61
+ [tool.ruff.lint]
62
+ select = ["E", "F", "I"]
63
+ ignore = ["E501"]
64
+
65
+ # ── pytest ────────────────────────────────────────────────────────────────────
66
+
67
+ [tool.pytest.ini_options]
68
+ asyncio_mode = "auto"
69
+ testpaths = ["tests"]
package/src/cli.js CHANGED
@@ -637,7 +637,7 @@ function cmdInstall(args) {
637
637
  const venvPath = join(pkgRootInit, '.venv');
638
638
  spawnSync('cmd', ['/c', 'rmdir', '/s', '/q', venvPath], { encoding: 'utf8' });
639
639
  }
640
- const sync2 = spawnSync('uv', ['sync', '--no-dev'], { cwd: pkgRootInit, encoding: 'utf8', shell: true });
640
+ const sync2 = spawnSync('uv', ['--directory', pkgRootInit, 'sync', '--no-dev'], { encoding: 'utf8' });
641
641
  if (sync2.status !== 0) {
642
642
  console.log(` ${bad('✗')} uv sync failed:\n${faint((sync2.stderr || sync2.stdout || '').trim())}`);
643
643
  } else {
@@ -696,7 +696,7 @@ function cmdInstall(args) {
696
696
  // Package root is one level up from src/
697
697
  const __dirname_cli = dirname(fileURLToPath(import.meta.url));
698
698
  const pkgRoot = join(__dirname_cli, '..');
699
- const sync = spawnSync('uv', ['sync', '--no-dev'], { cwd: pkgRoot, encoding: 'utf8' });
699
+ const sync = spawnSync('uv', ['--directory', pkgRoot, 'sync', '--no-dev'], { encoding: 'utf8' });
700
700
  if (sync.status !== 0) {
701
701
  console.log(` ${bad('✗')} uv sync failed:\n${faint((sync.stderr || sync.stdout || '').trim())}`);
702
702
  } else {