mirror of
https://github.com/Dvorinka/Primora.git
synced 2026-10-28 07:41:23 +00:00
- Geist/Geist Mono via @fontsource inside the Vite bundle — the Google Fonts <link> was blocked by the nginx CSP (style-src 'self'), so the dashboard silently fell back and phoned home on self-hosted instances. Fonts now serve from /assets under 'self' — CSP-clean, airgapped, no console violation. - mcp README: vault_exec described the old deny-list; rewritten for the allow-list contract. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
39 lines
1.6 KiB
Markdown
39 lines
1.6 KiB
Markdown
# @primora/mcp
|
|
|
|
Primora MCP stdio server - exposes the platform as `primora_*` tools to any
|
|
MCP client (Claude Desktop, Cursor, etc.).
|
|
|
|
## Build
|
|
|
|
```bash
|
|
npm run build --workspace @primora/mcp # → dist/server.js
|
|
```
|
|
|
|
## Configure
|
|
|
|
Point your MCP client at `node dist/server.js`. The server shares the CLI's
|
|
config file - `primora login` once and both tools work. Env vars override:
|
|
`PRIMORA_BASE_URL`, `PRIMORA_API_KEY`, `PRIMORA_ORG`, `PRIMORA_PROJECT`.
|
|
|
|
## Tools
|
|
|
|
30+ `primora_*` tools covering organizations, projects, buckets, objects,
|
|
collections, API keys, integrations, webhooks, scheduled jobs, telemetry,
|
|
and audit: `primora_whoami`, `primora_list_projects`,
|
|
`primora_upload_object`, `primora_query_audit`, `primora_run_job`, …
|
|
|
|
Secrets are agent-safe by design — values are never returned by any tool:
|
|
|
|
- `primora_vault_status` / `primora_vault_list` — local-vault state and
|
|
metadata (names/urls/notes only); requires `primora vault unlock` on the host.
|
|
- `primora_vault_exec` — runs `primora` commands with a vault secret injected
|
|
into the child's env. A strict allow-list (read-mostly commands like
|
|
`whoami`, `context`, `orgs:list`, `buckets:list`, `jobs:list`,
|
|
`audit:list`, `events:send`) — nothing that reads, writes, or moves a
|
|
credential can run; file/path flags are rejected and the injected env
|
|
name must be a safe identifier (loader hooks like `NODE_OPTIONS` are
|
|
blocked).
|
|
- `primora_secrets_list` / `primora_secrets_set` — project-vault metadata and
|
|
write-only storage. No reveal or delete: agents consume secrets through
|
|
`secret://NAME` references in job payloads, resolved server-side at delivery.
|