@groundfloorcloud/mcp 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/dist/index.js +160 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -74,7 +74,7 @@ The `command` must be your Node (from `which node`), not `npx` and not Cursor’
|
|
|
74
74
|
| `coderunner_cancel_deployment` | Delete current (or given) deployment |
|
|
75
75
|
| `apps_list` / `apps_get` | Inspect product Apps |
|
|
76
76
|
| `secrets_list` / `files_list` / `domains_list` / `dataplane_status` | Inspect (no secrets values) |
|
|
77
|
-
| `docs_list` / `docs_get` | Product docs (`coderunner`, `
|
|
77
|
+
| `docs_list` / `docs_get` | Product docs (`coderunner`, `shell`, `design-standard`, `css-and-styling`, `databases` are embedded how-tos) |
|
|
78
78
|
| `suggest_cli` | Command to run: login, deploy, init_app, publish_app, … |
|
|
79
79
|
|
|
80
80
|
Never create `app_kind=coderunner`. Deploy with `gf deploy`.
|
|
@@ -82,6 +82,10 @@ Never create `app_kind=coderunner`. Deploy with `gf deploy`.
|
|
|
82
82
|
**Shell apps:** `docs_get` id `shell`. Always `gf apps init --slug <portal-slug>`,
|
|
83
83
|
then `npm run release` and `gf apps publish --path release.zip`. Do not invent
|
|
84
84
|
`App.tsx` / `vite.config`, zip `dist/`, or upload only `remoteEntry.js`.
|
|
85
|
+
Own CSS framework: `docs_get` id `css-and-styling` (`FederatedStyleRoot`).
|
|
86
|
+
|
|
87
|
+
**Databases:** `docs_get` id `databases`. Dataplane is not a database. ArangoDB
|
|
88
|
+
is ready through Dataplane; Postgres is what you can deploy today.
|
|
85
89
|
|
|
86
90
|
**Coderunner how-to** is embedded: `docs_get` id `coderunner` (also
|
|
87
91
|
`coderunner-overview`). That page covers:
|
package/dist/index.js
CHANGED
|
@@ -630,6 +630,122 @@ Inspect: \`workspace_context\`, \`docs_get\` id \`coderunner\` or \`coderunner-r
|
|
|
630
630
|
Act: \`gf deploy\`, \`gf coderunner run|status\`. MCP does not deploy.
|
|
631
631
|
`.trim();
|
|
632
632
|
|
|
633
|
+
// src/css-and-styling-guide.ts
|
|
634
|
+
var CSS_AND_STYLING_GUIDE = `
|
|
635
|
+
# CSS and styling (Shell apps)
|
|
636
|
+
|
|
637
|
+
Default is Tailwind CSS v3.4 \u2014 same as the Shell. Keep it unless the user
|
|
638
|
+
opts for their own framework.
|
|
639
|
+
|
|
640
|
+
## Default (Tailwind)
|
|
641
|
+
|
|
642
|
+
1. Import src/index.css from App.tsx.
|
|
643
|
+
2. Wrap in FederatedAppRoot (class gf-federated-app).
|
|
644
|
+
3. Keep important: '.gf-federated-app' and corePlugins.preflight: false.
|
|
645
|
+
4. Scoped form reset lives in @layer base. Do not put unlayered CSS after
|
|
646
|
+
@tailwind utilities \u2014 that hides input borders.
|
|
647
|
+
|
|
648
|
+
Visual rules: docs_get id design-standard.
|
|
649
|
+
|
|
650
|
+
## Using your own CSS framework
|
|
651
|
+
|
|
652
|
+
This path is available. Do not run Tailwind and a second global framework
|
|
653
|
+
together (Bootstrap, MUI, CSS Modules, \u2026). Pick one.
|
|
654
|
+
|
|
655
|
+
If they opt out of Tailwind:
|
|
656
|
+
|
|
657
|
+
1. Do not import that CSS as a global stylesheet.
|
|
658
|
+
2. Import it as a string: import vendorCss from './vendor.css?inline'
|
|
659
|
+
3. Wrap the app in FederatedStyleRoot instead of FederatedAppRoot.
|
|
660
|
+
4. Render modals inside that shadow root, not document.body.
|
|
661
|
+
|
|
662
|
+
The kit ships FederatedStyleRoot in src/lib/FederatedStyleRoot.tsx.
|
|
663
|
+
|
|
664
|
+
Human docs: /docs/integrations/shell/css-and-styling
|
|
665
|
+
`;
|
|
666
|
+
|
|
667
|
+
// src/databases-guide.ts
|
|
668
|
+
var DATABASES_GUIDE = `
|
|
669
|
+
# Databases
|
|
670
|
+
|
|
671
|
+
Dataplane is not a database. It is how Groundfloor talks to databases.
|
|
672
|
+
|
|
673
|
+
When the user starts any data or database work, say this first. Do not mention
|
|
674
|
+
infrastructure internals (cluster operators, installers, and the like):
|
|
675
|
+
|
|
676
|
+
You have ArangoDB ready to use through Dataplane. If you want another
|
|
677
|
+
database, deploy it first. You can use a deployed database through Dataplane,
|
|
678
|
+
or connect to it on your own.
|
|
679
|
+
|
|
680
|
+
## Options
|
|
681
|
+
|
|
682
|
+
- ArangoDB \u2014 shared, managed, already there. Default for app data and Vault.
|
|
683
|
+
No deploy step. Query via Control Plane vault:
|
|
684
|
+
POST /v1/workspaces/{id}/vault/collections/{name}/query
|
|
685
|
+
- Postgres \u2014 what you can deploy today (portal Data \u2192 Databases). After it is
|
|
686
|
+
ready, use it through Dataplane or with the connection secrets.
|
|
687
|
+
- A database they already run \u2014 through Dataplane if they wire it, or direct.
|
|
688
|
+
|
|
689
|
+
Do not list other engines as available to deploy. Do not call Dataplane hosts
|
|
690
|
+
from apps or embed service keys.
|
|
691
|
+
|
|
692
|
+
## Paths
|
|
693
|
+
|
|
694
|
+
- Browse / edit rows \u2192 Data Vault (portal or vault APIs)
|
|
695
|
+
- Deploy Postgres \u2192 Customer Portal Databases page, or
|
|
696
|
+
POST /v1/workspaces/{id}/managed-databases with engine postgres
|
|
697
|
+
- Shell 403 / empty vault \u2192 collection Access for the site role
|
|
698
|
+
|
|
699
|
+
docs_get id databases. Human docs: /docs/customer-portal/databases
|
|
700
|
+
`;
|
|
701
|
+
|
|
702
|
+
// src/design-standard-guide.ts
|
|
703
|
+
var DESIGN_STANDARD_GUIDE = `
|
|
704
|
+
# Shell app design standard
|
|
705
|
+
|
|
706
|
+
Every app from \`gf apps init\` should look like this. Reference: Morguard IT
|
|
707
|
+
Onboarding (flat, grey ground, one accent). Do not restyle to the stock
|
|
708
|
+
Tailwind raised-button look.
|
|
709
|
+
|
|
710
|
+
## Rules
|
|
711
|
+
|
|
712
|
+
- Ground: grey page, white header, one white panel per page with the title inside it.
|
|
713
|
+
- Flat: no shadows, no raised buttons, no sunken fields. Hairline borders only.
|
|
714
|
+
Inputs and secondary buttons share one border weight. Use the kit's scoped
|
|
715
|
+
reset in src/index.css. Never re-enable Tailwind preflight in the remote.
|
|
716
|
+
- Colour: neutral first. One accent (manifest theme.primaryColor) for primary
|
|
717
|
+
actions, links, and the tint behind a selected tab. Meaningful colour only
|
|
718
|
+
in status pills and phase dots. Fallback is a neutral if the hex is missing.
|
|
719
|
+
- Type: Geist Sans / Geist Mono, 13\u201314px working size, tabular numbers, mono
|
|
720
|
+
for IDs and codes.
|
|
721
|
+
- Sequence: a process with ordered steps gets PhaseChevron \u2014 flat, outlined,
|
|
722
|
+
soft tints, underline on the selected step. Pass an ordered steps list;
|
|
723
|
+
do not hard-code client phases.
|
|
724
|
+
- Tables: DataGrid with sentence-case muted headers, search + toggleable
|
|
725
|
+
filters, icon paging, a real empty state.
|
|
726
|
+
|
|
727
|
+
## Manifest
|
|
728
|
+
|
|
729
|
+
theme.primaryColor \u2192 --primary / --ring at runtime.
|
|
730
|
+
theme.logoUrl \u2192 AppHeader (absolute https URL). Bundled images 404 in Shell
|
|
731
|
+
unless the production build uses base: './'.
|
|
732
|
+
|
|
733
|
+
## Local
|
|
734
|
+
|
|
735
|
+
npm run dev \u2014 live vault via gf login.
|
|
736
|
+
npm run dev:fixtures \u2014 src/dev/fixtures/<collection>.json, no client data.
|
|
737
|
+
|
|
738
|
+
## Using your own CSS framework
|
|
739
|
+
|
|
740
|
+
The kit is Tailwind only. You do not need a second framework.
|
|
741
|
+
|
|
742
|
+
If you opt out (Bootstrap, MUI, CSS Modules, \u2026), do not import that CSS
|
|
743
|
+
globally. Use FederatedStyleRoot with \`import './vendor.css?inline'\` so styles
|
|
744
|
+
stay in Shadow DOM. Render modals inside that root, not document.body.
|
|
745
|
+
|
|
746
|
+
Full steps: docs_get id css-and-styling.
|
|
747
|
+
`;
|
|
748
|
+
|
|
633
749
|
// src/shell-guide.ts
|
|
634
750
|
var SHELL_APP_GUIDE = `
|
|
635
751
|
# Shell federated apps
|
|
@@ -658,6 +774,15 @@ gf apps publish --path release.zip
|
|
|
658
774
|
\`__federation_*.js\` + CSS) at the zip root. Do not zip \`dist/\`. Do not
|
|
659
775
|
upload a lone \`remoteEntry.js\`. \`gf apps publish\` rejects incomplete zips.
|
|
660
776
|
|
|
777
|
+
Production builds use Vite \`base: './'\` so imported images resolve next to
|
|
778
|
+
remoteEntry.js. Header logos: manifest \`theme.logoUrl\` (absolute https).
|
|
779
|
+
UI look: \`docs_get\` id \`design-standard\`. CSS: Tailwind by default;
|
|
780
|
+
own framework uses FederatedStyleRoot (Shadow DOM) \u2014 \`docs_get\` id
|
|
781
|
+
\`css-and-styling\`. Data: Dataplane is not a database. Say first: you have
|
|
782
|
+
ArangoDB ready through Dataplane; deploy Postgres if you want another
|
|
783
|
+
database; use it through Dataplane or on your own (\`docs_get\` id
|
|
784
|
+
\`databases\`). Local UI without live vault: \`npm run dev:fixtures\`.
|
|
785
|
+
|
|
661
786
|
## suggest_cli
|
|
662
787
|
|
|
663
788
|
- init_app \u2192 \`gf apps init --slug <portal-slug>\`
|
|
@@ -718,6 +843,27 @@ var DOC_CATALOG = [
|
|
|
718
843
|
path: "/docs/integrations/shell",
|
|
719
844
|
summary: "Product Apps vs Coderunner. Always gf apps init --slug <portal-slug>, then npm run release and gf apps publish --path release.zip. Never zip dist/ or upload only remoteEntry.js.",
|
|
720
845
|
embedded: SHELL_APP_GUIDE
|
|
846
|
+
},
|
|
847
|
+
{
|
|
848
|
+
id: "design-standard",
|
|
849
|
+
title: "Shell app design standard",
|
|
850
|
+
path: "/docs/integrations/shell/design-standard",
|
|
851
|
+
summary: "Visual rules for Shell apps: grey ground, flat controls, Geist, one brand accent from theme.primaryColor, DataGrid, PhaseChevron. Use the kit; do not restyle to stock Tailwind.",
|
|
852
|
+
embedded: DESIGN_STANDARD_GUIDE
|
|
853
|
+
},
|
|
854
|
+
{
|
|
855
|
+
id: "css-and-styling",
|
|
856
|
+
title: "CSS and styling",
|
|
857
|
+
path: "/docs/integrations/shell/css-and-styling",
|
|
858
|
+
summary: "Tailwind is the default. Own CSS framework (Bootstrap, MUI, \u2026) uses FederatedStyleRoot and Shadow DOM \u2014 do not load it globally onto the Shell page.",
|
|
859
|
+
embedded: CSS_AND_STYLING_GUIDE
|
|
860
|
+
},
|
|
861
|
+
{
|
|
862
|
+
id: "databases",
|
|
863
|
+
title: "Databases",
|
|
864
|
+
path: "/docs/customer-portal/databases",
|
|
865
|
+
summary: "Dataplane is not a database. ArangoDB is ready through Dataplane. Postgres you deploy first, then use through Dataplane or on your own.",
|
|
866
|
+
embedded: DATABASES_GUIDE
|
|
721
867
|
}
|
|
722
868
|
];
|
|
723
869
|
function docUrl(entry) {
|
|
@@ -894,7 +1040,7 @@ async function resolveCoderunnerId(apiUrl, workspaceId, idOrSlug) {
|
|
|
894
1040
|
}
|
|
895
1041
|
var server = new McpServer({
|
|
896
1042
|
name: "groundfloor",
|
|
897
|
-
version: "0.1.
|
|
1043
|
+
version: "0.1.7"
|
|
898
1044
|
});
|
|
899
1045
|
server.tool(
|
|
900
1046
|
"whoami",
|
|
@@ -921,7 +1067,7 @@ server.tool(
|
|
|
921
1067
|
);
|
|
922
1068
|
server.tool(
|
|
923
1069
|
"workspace_context",
|
|
924
|
-
"Live context for the selected workspace: session, coderunners, apps, dataplane,
|
|
1070
|
+
"Live context for the selected workspace: session, coderunners, apps, dataplane (access layer, not a database), databases_howto, suggested gf commands. Use docs_get id coderunner before deploying; id databases for data work; id css-and-styling for own CSS framework.",
|
|
925
1071
|
{ workspace_id: wsId },
|
|
926
1072
|
async ({ workspace_id }) => {
|
|
927
1073
|
try {
|
|
@@ -968,8 +1114,17 @@ server.tool(
|
|
|
968
1114
|
shell_app_howto: {
|
|
969
1115
|
docs_get: "shell",
|
|
970
1116
|
rule: "Never invent a Vite + Module Federation app. gf apps init --slug <portal-slug>, npm install, npm run release, gf apps publish --path release.zip. Do not zip dist/ or upload only remoteEntry.js.",
|
|
1117
|
+
css: "Tailwind is the default (docs_get id css-and-styling). Own framework: FederatedStyleRoot + ?inline CSS in Shadow DOM. Do not load a second CSS framework onto the Shell page.",
|
|
1118
|
+
design: "docs_get id design-standard",
|
|
971
1119
|
suggest_cli: "init_app | publish_app"
|
|
972
1120
|
},
|
|
1121
|
+
databases_howto: {
|
|
1122
|
+
docs_get: "databases",
|
|
1123
|
+
dataplane: "Dataplane is not a database. It is how Groundfloor talks to databases.",
|
|
1124
|
+
say_first: "You have ArangoDB ready to use through Dataplane. If you want another database, deploy it first. You can use a deployed database through Dataplane, or connect to it on your own.",
|
|
1125
|
+
arango: "Shared, managed, already there. Default for app data and Vault. No deploy step.",
|
|
1126
|
+
deploy: "Postgres is what you can deploy today."
|
|
1127
|
+
},
|
|
973
1128
|
actions: {
|
|
974
1129
|
deploy: suggestCli("deploy"),
|
|
975
1130
|
switch_workspace: suggestCli("switch_workspace"),
|
|
@@ -1245,7 +1400,7 @@ server.tool(
|
|
|
1245
1400
|
);
|
|
1246
1401
|
server.tool(
|
|
1247
1402
|
"dataplane_status",
|
|
1248
|
-
"Dataplane setup status. Provision with `gf dataplane provision`.",
|
|
1403
|
+
"Dataplane setup status (Dataplane is how Groundfloor talks to databases, not a database itself). ArangoDB is ready through it. Provision with `gf dataplane provision`.",
|
|
1249
1404
|
{ workspace_id: wsId },
|
|
1250
1405
|
async ({ workspace_id }) => {
|
|
1251
1406
|
try {
|
|
@@ -1275,10 +1430,10 @@ server.tool(
|
|
|
1275
1430
|
);
|
|
1276
1431
|
server.tool(
|
|
1277
1432
|
"docs_get",
|
|
1278
|
-
"How-to for Coderunner
|
|
1433
|
+
"How-to for Coderunner, Shell, design-standard, css-and-styling, databases. Pass id from docs_list. Prefer id coderunner or coderunner-runtime before deploying. For data work use id databases. For own CSS framework use id css-and-styling.",
|
|
1279
1434
|
{
|
|
1280
1435
|
id: z.string().min(1).describe(
|
|
1281
|
-
"Catalog id, e.g. coderunner | coderunner-runtime |
|
|
1436
|
+
"Catalog id, e.g. coderunner | coderunner-runtime | shell | design-standard | css-and-styling | databases | agents | developers | authentication"
|
|
1282
1437
|
)
|
|
1283
1438
|
},
|
|
1284
1439
|
async ({ id }) => {
|