mcp-management
Monorepo for an MCP (Model Context Protocol) management stack: a Node.js server that loads plugins, registers tools via the MCP SDK, persists state, and speaks MCP over stdio, plus a Next.js web UI. Tooling is pnpm + Turborepo; packages are TypeScript-first.
Repository: github.com/mewisme/mcp
Requirements
- Node.js 22+ (see root
package.jsonengines) - pnpm 10+ (version pinned via
packageManagerin rootpackage.json)
Quick start
pnpm install
pnpm dev
pnpm dev runs every workspace package’s dev script via Turborepo. To work on one app:
pnpm exec turbo dev --filter=@meewmeew/mcp # MCP server (watch)
pnpm exec turbo dev --filter=@meewmeew/web # Next.js app
Build, quality checks, and tests from the repo root:
pnpm build
pnpm lint
pnpm check-types
pnpm test
Format sources with Prettier: pnpm format.
What’s in the repo
| Area | Location | Package | Role |
|---|---|---|---|
| MCP server | apps/server | @meewmeew/mcp | Plugin loading, lifecycle, persistence, stdio MCP transport; CLI mcp-management |
| Web app | apps/web | @meewmeew/web | Next.js 16 UI (App Router under src/app/) |
| Built-in plugins | packages/builtin-plugins | @meewmeew/builtin-plugins | Curated plugins; registry export BUILTIN_PLUGINS |
| Plugin API | packages/plugin-sdk | @meewmeew/plugin-sdk | Contracts, manifests, tool registration |
| Shared utilities | packages/shared | @meewmeew/shared | Logger, errors, path guards / allowed roots |
| Tooling | packages/eslint-config, packages/typescript-config | — | Shared ESLint and TypeScript bases |
Workspace layout is declared in pnpm-workspace.yaml (apps/*, packages/*).
MCP server (@meewmeew/mcp)
The server bootstraps in apps/server/src/bootstrap/, registers plugin loaders (built-in, and optionally path / package / bundle when allowed), runs a PluginManager with an execution policy, and exposes MCP over stdio.
- Published package:
@meewmeew/mcpon npm (build output underapps/server/dist/). - Local config: copy
apps/server/.env.exampleto.envin the directory you run from (dotenvloads the cwd’s.env).
Persistence and logs
- JSON state:
store.jsonunderMCP_DATA_DIR(default~/.mcp-managementon the current user). - Plugin audit log:
{MCP_DATA_DIR}/logs/plugin-audit.log(Winston), separate fromstore.json. - In-memory persistence:
MCP_IN_MEMORY_PERSISTENCE=true, or whenNODE_ENV=test.
Security / plugins
- External loaders (path, package, bundle) require
MCP_ALLOW_EXTERNAL_PLUGINS=true; built-ins always load. - Filesystem-related tooling respects blocked OS paths and optional
MCP_FS_ALLOWED_ROOTS(comma-separated paths); see@meewmeew/shared.
Full CLI options, scripts table, and architecture notes: apps/server/README.md.
Web app (@meewmeew/web)
Next.js 16, React 19, Tailwind 4. Routes live under apps/web/src/app/. For editor/agent notes on this stack, see AGENTS.md and apps/web/AGENTS.md.
Versioning and release
pnpm bump(ornode scripts/bump.js [major|minor|patch]) bumps the rootpackage.jsonversion only.- CI (
.github/workflows/mcp-server.yml) onmain: builds and tests@meewmeew/mcp, syncsapps/server/package.jsonfrom the root version, creates thevX.Y.Zgit tag if missing, and publishes@meewmeew/mcpto npm whenNPM_TOKENis configured.
Documentation for contributors
AGENTS.md— monorepo layout, commands, server mental model, how to add a built-in plugin (see also.cursor/skills/builtin-tool-plugin/SKILL.md).