{"_id":"@berkayderin/nextscan","_rev":"2-a52ba5f0ae6e99ca36740df639d3df27","name":"@berkayderin/nextscan","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@berkayderin/nextscan","version":"1.0.0","keywords":["nextjs","mcp","scanner","analyzer"],"author":{"url":"https://github.com/berkayderin","name":"Berkay Derin"},"license":"MIT","_id":"@berkayderin/nextscan@1.0.0","maintainers":[{"name":"berkayderin","email":"derinberkay67@gmail.com"}],"homepage":"https://github.com/berkayderin/nextscan#readme","bugs":{"url":"https://github.com/berkayderin/nextscan/issues"},"bin":{"nextscan":"dist/index.js"},"dist":{"shasum":"ced6cf4b63f54328a2cf9fc011a9f44ce15693f9","tarball":"https://registry.npmjs.org/@berkayderin/nextscan/-/nextscan-1.0.0.tgz","fileCount":51,"integrity":"sha512-Y43TXXKqtwy+we88euO+D0+2MG7EmouqBUw8fzdi3k6OVDW4JLv8bHh8SR/FzA2N0CkcoH4tgH1Fe6ifeGAr5w==","signatures":[{"sig":"MEYCIQC0RIFM92m4rwCIztX1CiKXbo/XRv+ESnOND6wFrToPmQIhAKW1QGlB4JmQF/PyCFiEDAoshZ/qGonFTfmh4mjMzCtU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100791},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"48b133a91c57a9a91d3b1cc702fd1c884f2685a3","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc && node scripts/postbuild.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"berkayderin","email":"derinberkay67@gmail.com"},"repository":{"url":"git+https://github.com/berkayderin/nextscan.git","type":"git"},"_npmVersion":"11.6.1","description":"MCP server that scans Next.js projects and returns a compact summary","directories":{},"_nodeVersion":"24.11.0","dependencies":{"zod":"^3.24.2","ts-morph":"^25.0.1","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","typescript":"^5.8.3","@types/node":"^22.15.2","@vitest/coverage-v8":"^3.1.1"},"_npmOperationalInternal":{"tmp":"tmp/nextscan_1.0.0_1772398848783_0.5374478327197085","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@berkayderin/nextscan","version":"1.0.1","description":"MCP server that scans Next.js projects and returns a compact summary","type":"module","bin":{"nextscan":"dist/index.js"},"main":"./dist/index.js","scripts":{"build":"tsc && node scripts/postbuild.js","dev":"tsc --watch","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage"},"dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","ts-morph":"^25.0.1","zod":"^3.24.2"},"devDependencies":{"@types/node":"^22.15.2","@vitest/coverage-v8":"^3.1.1","typescript":"^5.8.3","vitest":"^3.1.1"},"author":{"name":"Berkay Derin","url":"https://github.com/berkayderin"},"repository":{"type":"git","url":"git+https://github.com/berkayderin/nextscan.git"},"keywords":["nextjs","mcp","scanner","analyzer"],"license":"MIT","mcpName":"io.github.berkayderin/nextscan","gitHead":"abc57f6acbd34d7a699cf84f383099a66d9263bd","types":"./dist/index.d.ts","_id":"@berkayderin/nextscan@1.0.1","bugs":{"url":"https://github.com/berkayderin/nextscan/issues"},"homepage":"https://github.com/berkayderin/nextscan#readme","_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-Gu0LNLLVjYcLTRoh/GIZ03ZeB/4Q3SrhgHOhMQG0qO/9pXCFCH06ZZr7YJ8KoiBJ2yU2GadaIP8DZgdvHCjJBg==","shasum":"b09122e2047623e572c2b5eaa33add9a81ec36b1","tarball":"https://registry.npmjs.org/@berkayderin/nextscan/-/nextscan-1.0.1.tgz","fileCount":54,"unpackedSize":101868,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCOG2imvulEClpqC2yuwwP9tfKgVQejwTV46wU4GYj/4QIgBvIKxGT0Z0d2MoYtO7KEjAfzPIXnuGypvu9xV6jPdUY="}]},"_npmUser":{"name":"berkayderin","email":"derinberkay67@gmail.com"},"directories":{},"maintainers":[{"name":"berkayderin","email":"derinberkay67@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nextscan_1.0.1_1772400068268_0.166307193598775"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-01T21:00:48.630Z","modified":"2026-03-01T21:21:08.541Z","1.0.0":"2026-03-01T21:00:48.943Z","1.0.1":"2026-03-01T21:21:08.420Z"},"bugs":{"url":"https://github.com/berkayderin/nextscan/issues"},"author":{"name":"Berkay Derin","url":"https://github.com/berkayderin"},"license":"MIT","homepage":"https://github.com/berkayderin/nextscan#readme","keywords":["nextjs","mcp","scanner","analyzer"],"repository":{"type":"git","url":"git+https://github.com/berkayderin/nextscan.git"},"description":"MCP server that scans Next.js projects and returns a compact summary","maintainers":[{"name":"berkayderin","email":"derinberkay67@gmail.com"}],"readme":"# nextscan\n\nMCP server that scans Next.js projects and returns a compact summary. One tool call → full project overview.\n\n## What it does\n\n| Without nextscan | With nextscan |\n|---|---|\n| Manual file-by-file exploration | Single `scan` call |\n| Multiple tool calls to understand routes | Compact route tree with flags |\n| Missing security issues | Hardcoded secrets + env leak detection |\n| Unknown API coverage | Auth + validation status per endpoint |\n| Schema guesswork | Prisma/Drizzle relation mapping |\n\n## Quick Install\n\n```bash\n# Clone and build\ncd nextscan\nnpm install\nnpm run build\n\n# Add to Claude Code\nclaude mcp add nextscan -- node /path/to/nextscan/dist/index.js\n```\n\n## Tool: `scan`\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `path` | string | Yes | Absolute path to Next.js project root |\n| `focus` | enum | No | `routes` \\| `api` \\| `schema` \\| `security` |\n\n## Example Output\n\n```\nnextscan — my-app\n────────────────────────────────────────\nRoot: /Users/dev/my-app\n   src/ : yes  app/ : yes  middleware: yes\n   ORM  : prisma\n\nRoutes\n   Pages: 12  Layouts: 3  API: 5\n   Dynamic: 4  Static: 8\n   Client: 3  Server: 9\n   Groups: (marketing), (auth)\n   Matchers: /dashboard/:path*, /api/:path*\n   ┌─ Pages\n   ├─ /\n   ├─ /about\n   ├─ /dashboard [client]\n   ├─ /blog/[slug] [dyn,SSG]\n   └─ /settings [client]\n\nAPI Endpoints\n   Total: 5  Unprotected: 1\n   ├─ GET,POST /api/users [auth:next-auth | val:zod]\n   ├─ GET /api/health [no-auth,no-rate-limit]\n   └─ POST /api/webhook [no-auth,no-validation]\n\nSchema\n   Models: 5  Relations: 4\n   Orphans: AuditLog\n   User ─< Post (1:N)\n   User ─ Profile (1:1)\n   Post >─< Tag (N:N)\n\nSecurity\n   Score: 75/100  Headers: yes  Middleware: yes\n   [high] API route /api/health has no auth: [GET]\n   [medium] No rate limiting on /api/users\n```\n\n## Example Prompts\n\n- \"Scan my Next.js project at /Users/dev/my-app\"\n- \"Check the security of my Next.js app\"\n- \"Show me the route structure\"\n- \"Analyze the database schema\"\n\n## Architecture\n\n```\nsrc/\n├── index.ts              # MCP server entry point\n├── tools/scan.ts         # Orchestrator\n├── analyzers/\n│   ├── routes.ts         # App router analysis\n│   ├── api.ts            # API endpoint analysis\n│   ├── schema.ts         # Schema orchestration\n│   └── security.ts       # Security scanning\n├── parsers/\n│   ├── typescript.ts     # ts-morph utilities\n│   ├── prisma.ts         # Regex-based Prisma parser\n│   └── drizzle.ts        # AST-based Drizzle parser\n├── formatters/\n│   └── compact.ts        # Unicode tree formatter\n└── utils/\n    ├── fs.ts             # File system utilities\n    └── detect.ts         # Project detection\n```\n\n## Requirements\n\n- Node.js 18+\n- An MCP-compatible client (Claude Code, Claude Desktop, etc.)\n\n## Development\n\n```bash\nnpm install\nnpm run build\nnpm test\nnpm run test:coverage\n```\n\n## Author\n\n**Berkay Derin** — [github.com/berkayderin](https://github.com/berkayderin)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}