{"_id":"@dschauhan08/easycopy-mcp","_rev":"6-856a35d7cac5ecba6d8970070ae6b6ab","name":"@dschauhan08/easycopy-mcp","dist-tags":{"latest":"0.3.3"},"versions":{"0.1.0":{"name":"@dschauhan08/easycopy-mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","easycopy","github","code-review"],"license":"BSD-Zero-Clause","_id":"@dschauhan08/easycopy-mcp@0.1.0","maintainers":[{"name":"dschauhan08","email":"singhdschauhan10@gmail.com"}],"homepage":"https://github.com/DsChauhan08/easycopy#readme","bugs":{"url":"https://github.com/DsChauhan08/easycopy/issues"},"bin":{"easycopy-mcp":"bin/easycopy-mcp.js"},"dist":{"shasum":"d28054b552caec8d455a758828f5954b09215113","tarball":"https://registry.npmjs.org/@dschauhan08/easycopy-mcp/-/easycopy-mcp-0.1.0.tgz","fileCount":3,"integrity":"sha512-8ZPzzD37NHii1ocMmDDA2o6OGxLGIglHRcRZ+J8+qdxboKqfOh++C5kdbS49TH20C9VppkGMxiaS9GHF/0YWVg==","signatures":[{"sig":"MEUCIQCuZs1QL/W7xLX2QIZx0x58IbZQHjV5l77vy6QddO/pRAIgEuNlhxH0oJ5k9MvmQO5Gs4akg7hSkaOIWLK1KQ2eTzU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19269},"type":"module","engines":{"node":">=18"},"gitHead":"20832942d24d2a83c012c8ae51d78abffd78dbd5","scripts":{"check":"node --check bin/easycopy-mcp.js","start":"node bin/easycopy-mcp.js"},"_npmUser":{"name":"dschauhan08","email":"singhdschauhan10@gmail.com"},"repository":{"url":"git+https://github.com/DsChauhan08/easycopy.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.8.2","description":"MCP server for easycopy that renders repositories to HTML and CXML","directories":{},"_nodeVersion":"20.20.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/easycopy-mcp_0.1.0_1774711514872_0.38440172883156","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dschauhan08/easycopy-mcp","version":"0.2.0","keywords":["mcp","model-context-protocol","easycopy","github","code-review"],"license":"BSD-Zero-Clause","_id":"@dschauhan08/easycopy-mcp@0.2.0","maintainers":[{"name":"dschauhan08","email":"singhdschauhan10@gmail.com"}],"homepage":"https://github.com/DsChauhan08/easycopy#readme","bugs":{"url":"https://github.com/DsChauhan08/easycopy/issues"},"bin":{"easycopy-mcp":"bin/easycopy-mcp.js"},"dist":{"shasum":"0d137cdbbe341f898dd6ef2d3e1cbb9fa051386e","tarball":"https://registry.npmjs.org/@dschauhan08/easycopy-mcp/-/easycopy-mcp-0.2.0.tgz","fileCount":3,"integrity":"sha512-rQ1cL6ktlZAaGCaijZ8nsG7SDmMRXDa2ZJAPCs1D/G5s46ip9604go5nDStz7xbE2PKkjSHUJYqE92x6XsAixg==","signatures":[{"sig":"MEUCIFj3UWP+gBUnpjqj52J/OgjdNMKNDoSg5deAoeKqHwiLAiEAzcEzDo1gaFYxgI/rR7UrUiVUTUae3P62PzSsMQ9k5UU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34916},"type":"module","engines":{"node":">=18"},"gitHead":"74c93af915aa1d51f0927a54b3128c7bd8dbc439","scripts":{"check":"node --check bin/easycopy-mcp.js","start":"node bin/easycopy-mcp.js","selftest":"EASYCOPY_MCP_SELFTEST=1 node bin/easycopy-mcp.js"},"_npmUser":{"name":"dschauhan08","email":"singhdschauhan10@gmail.com"},"repository":{"url":"git+https://github.com/DsChauhan08/easycopy.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"MCP server for easycopy that renders repositories to HTML and CXML","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/easycopy-mcp_0.2.0_1774721650380_0.8102966088037935","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dschauhan08/easycopy-mcp","version":"0.3.0","keywords":["mcp","model-context-protocol","easycopy","github","code-review"],"license":"BSD-Zero-Clause","_id":"@dschauhan08/easycopy-mcp@0.3.0","maintainers":[{"name":"dschauhan08","email":"singhdschauhan10@gmail.com"}],"homepage":"https://github.com/DsChauhan08/easycopy#readme","bugs":{"url":"https://github.com/DsChauhan08/easycopy/issues"},"bin":{"easycopy-mcp":"bin/easycopy-mcp.js"},"dist":{"shasum":"bd56f2bc2cee8b23dd486487db3792a3e6392948","tarball":"https://registry.npmjs.org/@dschauhan08/easycopy-mcp/-/easycopy-mcp-0.3.0.tgz","fileCount":3,"integrity":"sha512-I4itJ5ly5shxJIHEKSbTKUwRu0P7Sjrpl/jkfxMureHvt/yuZLX0pugoIKRPEdGO+QNyJKDyPaQ1l3rUE+ONDA==","signatures":[{"sig":"MEUCIDcnAu1KtFtmbwiGXR8J33wv9XhUaeyjggSrzBNXkhCXAiEA62AQLFKBl2wVm6+G9PAbiZAHWFFGnPr4xqbQMqmuTng=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55282},"type":"module","engines":{"node":">=18"},"gitHead":"da35c47bf4e9d6e51150de0eb853e5054c4634e7","scripts":{"check":"node --check bin/easycopy-mcp.js","start":"node bin/easycopy-mcp.js","selftest":"EASYCOPY_MCP_SELFTEST=1 node bin/easycopy-mcp.js"},"_npmUser":{"name":"dschauhan08","email":"singhdschauhan10@gmail.com"},"repository":{"url":"git+https://github.com/DsChauhan08/easycopy.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.7","description":"MCP server for easycopy that renders repositories to HTML and CXML","directories":{},"_nodeVersion":"22.22.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/easycopy-mcp_0.3.0_1775650642903_0.1488992214416578","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@dschauhan08/easycopy-mcp","version":"0.3.1","keywords":["mcp","model-context-protocol","easycopy","github","code-review"],"license":"BSD-Zero-Clause","_id":"@dschauhan08/easycopy-mcp@0.3.1","maintainers":[{"name":"dschauhan08","email":"singhdschauhan10@gmail.com"}],"homepage":"https://github.com/DsChauhan08/easycopy#readme","bugs":{"url":"https://github.com/DsChauhan08/easycopy/issues"},"bin":{"easycopy-mcp":"bin/easycopy-mcp.js"},"dist":{"shasum":"1e639910b99bd1f40e7bf5b059a0b46cf4770dcf","tarball":"https://registry.npmjs.org/@dschauhan08/easycopy-mcp/-/easycopy-mcp-0.3.1.tgz","fileCount":3,"integrity":"sha512-BFMii7wCfIA+4MKQ9STiikk1gWxDFrynyjCohxj3gxfMmEVU8c9nkdo+MkymkeZDdcXg/1Vk0QpLANPFedh3gg==","signatures":[{"sig":"MEQCIQD0W3c4fVdxF76ucyyL2mAmC6ZPKfv/CZL25qFamUSuFwIfaeaEmDGa6UZDhMLoXI0qimzOHsSULWKHMLghnMSQpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58145},"type":"module","engines":{"node":">=18"},"gitHead":"51fe078d86782aa2077325ff6cc1edc7915e9c11","scripts":{"check":"node --check bin/easycopy-mcp.js","start":"node bin/easycopy-mcp.js","selftest":"EASYCOPY_MCP_SELFTEST=1 node bin/easycopy-mcp.js"},"_npmUser":{"name":"dschauhan08","email":"singhdschauhan10@gmail.com"},"repository":{"url":"git+https://github.com/DsChauhan08/easycopy.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.7","description":"MCP server for easycopy that renders repositories to HTML and CXML","directories":{},"_nodeVersion":"22.22.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/easycopy-mcp_0.3.1_1775665460012_0.9363517247372077","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@dschauhan08/easycopy-mcp","version":"0.3.2","keywords":["mcp","model-context-protocol","easycopy","github","code-review"],"license":"BSD-Zero-Clause","_id":"@dschauhan08/easycopy-mcp@0.3.2","maintainers":[{"name":"dschauhan08","email":"singhdschauhan10@gmail.com"}],"homepage":"https://github.com/DsChauhan08/easycopy#readme","bugs":{"url":"https://github.com/DsChauhan08/easycopy/issues"},"bin":{"easycopy-mcp":"bin/easycopy-mcp.js"},"dist":{"shasum":"6cfca3dcab3f22b7af0e1c41e9d198785892dec4","tarball":"https://registry.npmjs.org/@dschauhan08/easycopy-mcp/-/easycopy-mcp-0.3.2.tgz","fileCount":3,"integrity":"sha512-pz6XAQ+YVSr/Fiegu9WQHPdIpz0xxGTyT7Ne5tBtlm4VM0kWwLPmx2NSAQluNRr7KrCpz29JbP+tMxEQJhxxvg==","signatures":[{"sig":"MEYCIQCogUJp/Ue03KIfhvKW7hBOLdhpWdDRN3WqgKZEPK1wXQIhAIUUzL5Q0K2qq4xkJv9R3DYN2aZc/MaxjCpHmGejIWXz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59006},"type":"module","engines":{"node":">=18"},"gitHead":"c7e9ef1eddc4863e43235f881c9ec463482623e4","scripts":{"check":"node --check bin/easycopy-mcp.js","start":"node bin/easycopy-mcp.js","selftest":"EASYCOPY_MCP_SELFTEST=1 node bin/easycopy-mcp.js"},"_npmUser":{"name":"dschauhan08","email":"singhdschauhan10@gmail.com"},"repository":{"url":"git+https://github.com/DsChauhan08/easycopy.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.7","description":"MCP server for easycopy that renders repositories to HTML and CXML","directories":{},"_nodeVersion":"22.22.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/easycopy-mcp_0.3.2_1775752876612_0.9725577018299025","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@dschauhan08/easycopy-mcp","version":"0.3.3","description":"MCP server for easycopy that renders repositories to HTML and CXML","license":"BSD-Zero-Clause","type":"module","bin":{"easycopy-mcp":"bin/easycopy-mcp.js"},"scripts":{"start":"node bin/easycopy-mcp.js","check":"node --check bin/easycopy-mcp.js","selftest":"EASYCOPY_MCP_SELFTEST=1 node bin/easycopy-mcp.js"},"engines":{"node":">=18"},"keywords":["mcp","model-context-protocol","easycopy","github","code-review"],"repository":{"type":"git","url":"git+https://github.com/DsChauhan08/easycopy.git","directory":"mcp-server"},"_id":"@dschauhan08/easycopy-mcp@0.3.3","gitHead":"eadc274e4a6f773f0bd9189429b78255182f9b0d","bugs":{"url":"https://github.com/DsChauhan08/easycopy/issues"},"homepage":"https://github.com/DsChauhan08/easycopy#readme","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-mXaPMzmzlqE6bu5oPTFycptPFTBrBJu0TQZ82OOcnvW9WRB2URk4MJgtycYd+RH07WX/znn0XiVs6Cc4qH91wQ==","shasum":"b0d3f03c431fa96d4a6b7b6e72bb7339f9ec6a3c","tarball":"https://registry.npmjs.org/@dschauhan08/easycopy-mcp/-/easycopy-mcp-0.3.3.tgz","fileCount":3,"unpackedSize":64430,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICyhHvaisXAxu8sjEY0T35tjuh4KNmKN7jBQ0Ff9pCyCAiEAoMj5dUsBKpJtvCOEn6fzza/rgvjicly0ybGCRNoruJk="}]},"_npmUser":{"name":"dschauhan08","email":"singhdschauhan10@gmail.com"},"directories":{},"maintainers":[{"name":"dschauhan08","email":"singhdschauhan10@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/easycopy-mcp_0.3.3_1775756730531_0.3954531065208686"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-28T15:25:14.758Z","modified":"2026-04-09T17:45:30.796Z","0.1.0":"2026-03-28T15:25:15.000Z","0.2.0":"2026-03-28T18:14:10.527Z","0.3.0":"2026-04-08T12:17:23.040Z","0.3.1":"2026-04-08T16:24:20.151Z","0.3.2":"2026-04-09T16:41:16.746Z","0.3.3":"2026-04-09T17:45:30.686Z"},"bugs":{"url":"https://github.com/DsChauhan08/easycopy/issues"},"license":"BSD-Zero-Clause","homepage":"https://github.com/DsChauhan08/easycopy#readme","keywords":["mcp","model-context-protocol","easycopy","github","code-review"],"repository":{"type":"git","url":"git+https://github.com/DsChauhan08/easycopy.git","directory":"mcp-server"},"description":"MCP server for easycopy that renders repositories to HTML and CXML","maintainers":[{"name":"dschauhan08","email":"singhdschauhan10@gmail.com"}],"readme":"# @dschauhan08/easycopy-mcp\n\nAI-first MCP server for repository understanding.\n\nThis package is designed for LLM workflows where **search + targeted reads** are the default path, and full HTML exports are optional.\n\n## TL;DR\n\n- ✅ **Primary mode**: AI retrieval (`search_code`, `read_file`, `get_context_pack`)\n- ✅ **Optional mode**: export full repo (`render_repo`, `get_cxml`)\n- ✅ **Structured MCP responses** for tool chaining across MCP-compatible clients\n- ✅ **Safety defaults**: bounded reads, limits, binary/large-file handling\n\nFor AI workflow, this is helpful because it:\n- avoids full-repo dumps,\n- gives targeted file/line discovery,\n- makes context retrieval faster and smaller for prompts.\n\n## Install\n\n```bash\nnpx -y @dschauhan08/easycopy-mcp\n```\n\nor globally:\n\n```bash\nnpm i -g @dschauhan08/easycopy-mcp\neasycopy-mcp\n```\n\n## MCP client config\n\n```json\n{\n  \"mcpServers\": {\n    \"easycopy\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@dschauhan08/easycopy-mcp\"],\n      \"env\": {\n        \"EASYCOPY_VERSION_TAG\": \"latest\"\n      }\n    }\n  }\n}\n```\n\n## Recommended AI workflow\n\n1. `index_repo` – scan and cache repository metadata\n2. `search_code` – find relevant files/lines by query\n3. `read_file` / `read_many` – fetch exact context only\n4. `get_context_pack` – create a compact, prompt-ready bundle\n\nUse `render_repo` only when you explicitly want a full static export.\n\n---\n\n## Tools\n\n### Retrieval-first tools (default)\n\n### `index_repo`\nBuild or refresh a local retrieval index.\n\nInputs:\n- `repo` (required, local path)\n- `refresh` (optional)\n- `max_file_bytes` (optional)\n\n### `search_code`\nSearch code/text with optional regex and glob filtering.\n\nInputs:\n- `repo` (required)\n- `query` (required)\n- `regex` (optional)\n- `case_sensitive` (optional)\n- `include_glob` (optional, e.g. `src/**/*.ts`)\n- `limit` (optional)\n\n### `list_files`\nList files with size/text metadata.\n\nInputs:\n- `repo` (required)\n- `include_glob`, `limit` (optional)\n\n### `read_file`\nRead one file with bounded line window.\n\nInputs:\n- `repo` (required)\n- `path` (required)\n- `start_line`, `end_line`, `max_chars` (optional)\n\n### `read_many`\nRead many files in one call with bounded excerpts.\n\nInputs:\n- `repo` (required)\n- `paths` (required)\n- `max_chars_per_file` (optional)\n\n### `repo_map`\nCompact structural map + key files.\n\nInputs:\n- `repo` (required)\n- `depth`, `max_entries` (optional)\n\n### `stats`\nRepo-level counts and extension distribution.\n\nInputs:\n- `repo` (required)\n\n### `get_context_pack`\nSearch + select + read top files into an LLM-ready pack.\n\nInputs:\n- `repo` (required)\n- `query` (required)\n- `limit_files`, `max_chars_per_file` (optional)\n- same search flags as `search_code`\n\nBehavior note:\n- if no files match the query, `get_context_pack` returns an **empty pack** (`selected_files: []`, `files: []`) instead of an error.\n- ranking is **intent-aware**: technical queries prioritize code/config files over docs; documentation queries prioritize docs.\n\n---\n\n### Export tools (optional)\n\n### `render_repo`\nGenerate full HTML output using `easycopy`.\n\n### `get_cxml`\nGenerate and extract full CXML from `easycopy` output.\n\n---\n\n### Diagnostics + output lifecycle\n\n### `health_check`\nRuntime diagnostics and binary resolution.\n\n### `list_outputs`\nList generated output HTML files.\n\n### `read_output`\nRead excerpt from generated HTML output.\n\n### `cleanup_outputs`\nClean old output files (`dry_run: true` by default).\n\n## Why this is safer for LLM usage\n\n- Bounded reads and limits by default\n- Explicit argument validation\n- Binary and oversized file handling in retrieval flow\n- No destructive repo actions\n- Optional export path kept separate from retrieval path\n\n## Environment variables\n\n- `EASYCOPY_PATH` – override easycopy binary path\n- `EASYCOPY_VERSION_TAG` – release tag for binary fetch (`latest` default)\n- `EASYCOPY_RELEASE_OWNER` / `EASYCOPY_RELEASE_REPO` – release source override\n- `EASYCOPY_MCP_CACHE_DIR` – binary cache directory\n- `EASYCOPY_INLINE_LIMIT_BYTES` – inline HTML cap\n- `EASYCOPY_OUTPUT_DIR` – default output directory for exports\n- `EASYCOPY_OUTPUT_PREFIX` – default output prefix for exports\n- `GITHUB_TOKEN` – optional API/download resilience for release fetch\n\n## Local dev\n\n```bash\ncd mcp-server\nnpm run check\nnpm run selftest\nnpm pack --dry-run\n```\n\n## Publishing\n\nPublishing is automated in GitHub Actions on tags matching `mcp-v*`.\nThe npm package page README is updated automatically from this file at publish time.\n","readmeFilename":"README.md"}