Skip to content

Comments

pos-cli MCP#689

Open
godot wants to merge 1 commit intomasterfrom
mcp-rebased
Open

pos-cli MCP#689
godot wants to merge 1 commit intomasterfrom
mcp-rebased

Conversation

@godot
Copy link
Contributor

@godot godot commented Feb 21, 2026

update readme
and ... a lot

feat(mcp): implement full suite of 13 MCP tools

  • Environment: list/add/auth
  • Data: export_start/status (async job pattern)
  • Modules: list (install/remove stub-ready)
  • Logs: fetch
  • Constants: list/set via GraphQL wrappers
  • Liquid: render
  • Migrations: list/run
  • GraphQL: execute

Key features:

  • Dynamic tool registration in mcpServer.ts
  • Zod input/output schemas with validation
  • lib/apiWrappers.ts with real Gateway integration (no CLI spawn)
  • Secure: no tokens exposed
  • Async handling: {jobId, poll: true}
  • /tools endpoint lists schema
  • /call executes with auth

Updated mcp-v2.md aligned names/specs.
Tests stub-ready, 80% coverage target.

feat(storage): fsStorage reads repo root ../.pos (pos-cli object format)

  • cwd = path.dirname(process.cwd()) for repo root
  • Parse { [name]: Omit<Env, 'name'> }, listEnvs adds name
  • Tests: tmpdir isolation for fsStorage tests
  • apiWrappers.unit.test: temp override .pos without token
  • Seed pos-cli/.pos example for dev
  • README: update quickstart/pos-cli note to root .pos
  • npm run test/build pass from mcp/

fix(index): McpServer listen TS

fix(sse): JSON errors no HTML

Add global 404 and error handlers to return JSON instead of default HTML errors. Disable Helmet CSP and noSniff for SSE compatibility. CORS already configured. Verified with curl tests: 401/400/404 return JSON {error:"..."}, server logs parse errors.

fix(tests): 100% green

fix(sse): exact endpoint event format

feat(mcp-min): add minimal MCP server with tool configuration

Add mcp-min, a minimal ES module MCP server with 27 tools for platformOS operations. Includes external configuration via tools.config.json for editing descriptions and enabling/disabling tools without code changes.

Tools: envs-list, logs-fetch, liquid-exec, graphql-exec, generators-, migrations-, deploy-, data-, unit-tests-run, check, sync-file, uploads-push, constants-*

fix(tests): repair mcp-min test suite before rebase

  • Add missing path import to generators/help.js
  • Create test/utils/fixtures.js helper for .pos file management
  • Update tests to use 'envs-list' tool name (was 'list-envs')
  • Fix sse.test.js timeout issue by resolving promise early when endpoint event is seen

chore: migrate mcp-min to vitest and ESM

  • Convert all mcp-min tests from Jest to Vitest
    • Replace @jest/globals imports with vitest
    • Convert jest.* APIs to vi.* equivalents
    • Update vi.unstable_mockModule to vi.mock
  • Convert mcp-min source files from CommonJS to ESM
    • Replace createRequire pattern with ESM imports
    • Update lib/ imports to use .js extensions
    • Fix named vs default export mismatches
  • Update package.json scripts for vitest
  • Replace request-promise with native fetch in tests/run.js
  • Add vitest.config.js include patterns for mcp-min

189/206 mcp-min tests passing
mcp-min HTTP server starts successfully on port 5910

fix(tests): repair mcp-min vitest mock patterns

  • Use class-based mocks instead of vi.fn().mockImplementation() for Gateway constructors in data.clean and data.export tests
  • Pass explicit credentials (url, email, token) to bypass ESM mocking
  • Use unique config files (.pos.test-{PORT}) in list-envs tests to prevent test pollution when running in parallel

add portal

fix

sync broken

docs: enrich MCP tool descriptions for graphql-exec, liquid-exec, check, and sync-file

Add detailed top-level descriptions and per-property descriptions to help AI clients understand when and how to use each tool, matching the style already used by deploy, data-validate, and env-add tools.

feat: release mcp-min as part of pos-cli 6.0.0-beta.1

  • Remove file: dependency on @platformos/theme-check-node (optional dynamic import)
  • Add check-run tool (Node.js linter, no Ruby required), async test tools, unified logger
  • Fix lint errors in new files (brace-style, unused vars, quote style)
  • Fix check.test.js to gracefully handle missing platformos-check CLI
  • Bump root version to 6.0.0-beta.1, mcp-min to 0.2.0
  • Add work-done.md to .gitignore, commit AGENTS.md

feat: add pos-cli-mcp executable for MCP server

chore: bump version to 6.0.0-beta.2

feat: support MCP_TOOLS_CONFIG env var for local tool config

Disable check-run tool (requires unpublished @platformos/theme-check-node).

feat: add pos-cli-mcp-config command and bump to 6.0.0-beta.3

New command displays MCP tool configuration (enabled/disabled tools). Supports --json flag for raw JSON output.

feat: add pos-cli-mcp-config command, rename check dependency

  • Add pos-cli-mcp-config to display MCP tool configuration (--json for raw output)
  • Rename theme-check-node references to @platformos/platformos-check-node
  • Remove stale file: entry from package-lock.json

chore: bump to 6.0.0-beta.4

feat: enable check-run MCP tool

chore: bump to 6.0.0-beta.5

feat: add @platformos/platformos-check-node as dependency

feat: add @platformos/platformos-common dependency, bump to 6.0.0-beta.7

Workaround for missing transitive dependency in platformos-check-common.

update readme
and ... a lot

feat(mcp): implement full suite of 13 MCP tools

- Environment: list/add/auth
- Data: export_start/status (async job pattern)
- Modules: list (install/remove stub-ready)
- Logs: fetch
- Constants: list/set via GraphQL wrappers
- Liquid: render
- Migrations: list/run
- GraphQL: execute

Key features:
- Dynamic tool registration in mcpServer.ts
- Zod input/output schemas with validation
- lib/apiWrappers.ts with real Gateway integration (no CLI spawn)
- Secure: no tokens exposed
- Async handling: {jobId, poll: true}
- /tools endpoint lists schema
- /call executes with auth

Updated mcp-v2.md aligned names/specs.
Tests stub-ready, 80% coverage target.

feat(storage): fsStorage reads repo root ../.pos (pos-cli object format)

- cwd = path.dirname(process.cwd()) for repo root
- Parse { [name]: Omit<Env, 'name'> }, listEnvs adds name
- Tests: tmpdir isolation for fsStorage tests
- apiWrappers.unit.test: temp override .pos without token
- Seed pos-cli/.pos example for dev
- README: update quickstart/pos-cli note to root .pos
- npm run test/build pass from mcp/

fix(index): McpServer listen TS

fix(sse): JSON errors no HTML

Add global 404 and error handlers to return JSON instead of default HTML errors. Disable Helmet CSP and noSniff for SSE compatibility. CORS already configured. Verified with curl tests: 401/400/404 return JSON {error:"..."}, server logs parse errors.

fix(tests): 100% green

fix(sse): exact endpoint event format

feat(mcp-min): add minimal MCP server with tool configuration

Add mcp-min, a minimal ES module MCP server with 27 tools for platformOS
operations. Includes external configuration via tools.config.json for
editing descriptions and enabling/disabling tools without code changes.

Tools: envs-list, logs-fetch, liquid-exec, graphql-exec, generators-*,
migrations-*, deploy-*, data-*, unit-tests-run, check, sync-file,
uploads-push, constants-*

fix(tests): repair mcp-min test suite before rebase

- Add missing path import to generators/help.js
- Create test/utils/fixtures.js helper for .pos file management
- Update tests to use 'envs-list' tool name (was 'list-envs')
- Fix sse.test.js timeout issue by resolving promise early when endpoint event is seen

chore: migrate mcp-min to vitest and ESM

- Convert all mcp-min tests from Jest to Vitest
  - Replace @jest/globals imports with vitest
  - Convert jest.* APIs to vi.* equivalents
  - Update vi.unstable_mockModule to vi.mock
- Convert mcp-min source files from CommonJS to ESM
  - Replace createRequire pattern with ESM imports
  - Update lib/ imports to use .js extensions
  - Fix named vs default export mismatches
- Update package.json scripts for vitest
- Replace request-promise with native fetch in tests/run.js
- Add vitest.config.js include patterns for mcp-min

189/206 mcp-min tests passing
mcp-min HTTP server starts successfully on port 5910

fix(tests): repair mcp-min vitest mock patterns

- Use class-based mocks instead of vi.fn().mockImplementation() for
  Gateway constructors in data.clean and data.export tests
- Pass explicit credentials (url, email, token) to bypass ESM mocking
- Use unique config files (.pos.test-{PORT}) in list-envs tests to
  prevent test pollution when running in parallel

add portal

fix

sync broken

docs: enrich MCP tool descriptions for graphql-exec, liquid-exec, check, and sync-file

Add detailed top-level descriptions and per-property descriptions to help
AI clients understand when and how to use each tool, matching the style
already used by deploy, data-validate, and env-add tools.

feat: release mcp-min as part of pos-cli 6.0.0-beta.1

- Remove file: dependency on @platformos/theme-check-node (optional dynamic import)
- Add check-run tool (Node.js linter, no Ruby required), async test tools, unified logger
- Fix lint errors in new files (brace-style, unused vars, quote style)
- Fix check.test.js to gracefully handle missing platformos-check CLI
- Bump root version to 6.0.0-beta.1, mcp-min to 0.2.0
- Add work-done.md to .gitignore, commit AGENTS.md

feat: add pos-cli-mcp executable for MCP server

chore: bump version to 6.0.0-beta.2

feat: support MCP_TOOLS_CONFIG env var for local tool config

Disable check-run tool (requires unpublished @platformos/theme-check-node).

feat: add pos-cli-mcp-config command and bump to 6.0.0-beta.3

New command displays MCP tool configuration (enabled/disabled tools).
Supports --json flag for raw JSON output.

feat: add pos-cli-mcp-config command, rename check dependency

- Add pos-cli-mcp-config to display MCP tool configuration (--json for raw output)
- Rename theme-check-node references to @platformos/platformos-check-node
- Remove stale file: entry from package-lock.json

chore: bump to 6.0.0-beta.4

feat: enable check-run MCP tool

chore: bump to 6.0.0-beta.5

feat: add @platformos/platformos-check-node as dependency

feat: add @platformos/platformos-common dependency, bump to 6.0.0-beta.7

Workaround for missing transitive dependency in platformos-check-common.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants