2. Tech Stack

Framework & Language

ItemVersionDescription
Node.js>=24.10.0 (per .nvmrc)Runtime
TypeScript^5.6.3Language
pnpm9.12.1Package manager
Turbo^2.3.3Monorepo build orchestration

Core Dependencies

PackageVersionPurpose
@modelcontextprotocol/sdk^1.29.0MCP server implementation (Server, StdioServerTransport, CallToolResult, etc.)
zod^4.4.2Tool input schema definition and runtime validation

Documentation Site

ToolVersionPurpose
Rspress (@rspress/core)^2.0.12Documentation site framework (Vite/Rspack-based)
@rspress/plugin-llms^2.0.12Auto-generates llms.txt / llms-full.txt
Netlifynetlify-cli ^26.0.2Documentation site deployment

apps/site/scripts/package-docs-plugin.ts — Custom Rspress plugin that dynamically converts package READMEs into documentation pages

Build & Bundling

ToolPurpose
tsup (^8.5.1)TypeScript → ESM bundling, dts generation, minify
Turbo (^2.3.3)Monorepo task execution, build caching, dependency graph management

Common bundling config (packages/common/build/tsup.config.mjs):

  • ESM + CJS format
  • Code splitting with splitting: true
  • All dependencies bundled via noExternal: [/./]
  • Minify enabled
  • Each package has 3 entry points: index.ts, server.ts, cli.ts

CI/CD

ToolPurpose
GitHub ActionsCI, Auto PR, Release workflows
release-please (googleapis/release-please-action@v4)Monorepo release automation (per-package independent versioning via release PR)
Conventional CommitsDrives version determination (feat/fix/BREAKING CHANGE)
release-please CHANGELOGAuto-generates per-package CHANGELOG.md
pnpm -r publishPublishes to npm (in the publish job, after release PR merge)
release-please tagsCreates version tags (<package-name>@<version>)
release-please releasesCreates GitHub Releases

Release Rules (release-please-config.json + .release-please-manifest.json)

Versioning is driven by Conventional Commits. Instead of releasing immediately on push to main, release-please opens/updates a release PR with version bumps and CHANGELOG entries; merging that PR creates the tags, GitHub Releases, and triggers npm publish. Current versions per package are tracked in .release-please-manifest.json.

Key release-please-config.json options: release-type: "node", include-component-in-tag: true, include-v-in-tag: false, separator: "@" (tags stay in the <package-name>@<version> format, e.g. @julong/mono-rele2-core@1.34.0), plugins: ["node-workspace"], with a packages map covering packages/core, packages/utils, and apps/site.

Commit TypeVersion Bump
featminor (1.x.0)
fixpatch (1.0.x)
perfpatch (1.0.x)
revertpatch (1.0.x)
BREAKING CHANGE (footer)major (x.0.0)
docs, chore, refactor, test, build, ci, styleNo release

Currently Unused

  • Linter: No ESLint configured
  • Formatter: Prettier configured
  • Test framework: Vitest, Jest, etc. not configured yet
  • Test files: *.test.ts files exist (Rstest)
  • UI framework: React, Next.js, etc. not used (MCP server only)
  • Database: Not used
  • HTTP server: Not used (MCP stdio transport only)