{"_id":"@axivo/mcp-ccp","name":"@axivo/mcp-ccp","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@axivo/mcp-ccp","version":"0.1.0","type":"module","description":"MCP server for the Claude Collaboration Platform","keywords":["ccp","claude","framework","mcp","model-context-protocol","postgres","server","supabase"],"license":"BSD-3-Clause","author":{"name":"AXIVO"},"bin":{"mcp-ccp":"dist/index.js"},"repository":{"type":"git","url":"git+https://github.com/axivo/mcp-ccp.git"},"scripts":{"build":"tsc","clean":"rm -rf dist"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","postgres":"^3.4.0","zod":"^4.4.0"},"devDependencies":{"@types/node":"^25.0.0","typescript":"^6.0.0"},"engines":{"node":">=24.0.0"},"publishConfig":{"access":"public"},"main":"index.js","bugs":{"url":"https://github.com/axivo/mcp-ccp/issues"},"homepage":"https://github.com/axivo/mcp-ccp","gitHead":"eb79a56411c25ad7a1940030d0ad0b6b7529c3fb","_id":"@axivo/mcp-ccp@0.1.0","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-eYoGJh6KALa2SSl4nQIOikSti6ueSidbNf7VNkKMIRaTMaTy+CGDiAWteAK9L4JZSGAVLPTeyxtDvqMcEJeR1w==","shasum":"a368d9e0c29c6952ff5adc0fbc710cbc1af758d4","tarball":"https://registry.npmjs.org/@axivo/mcp-ccp/-/mcp-ccp-0.1.0.tgz","fileCount":19,"unpackedSize":304153,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDulKOMmnwGeiGCfDOG0qGtebl8NlPMvQPtTeLokbFvWQIgL7Hk7lhaYZzUp2F5ic+JrJdQ0/TMvG4fVIQwzZPEdwQ="}]},"_npmUser":{"name":"fmunteanu","email":"versed_04ruses@icloud.com"},"directories":{},"maintainers":[{"name":"fmunteanu","email":"versed_04ruses@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-ccp_0.1.0_1778197267517_0.6236995821412747"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-07T23:41:07.419Z","0.1.0":"2026-05-07T23:41:07.670Z","modified":"2026-05-07T23:41:07.892Z"},"maintainers":[{"name":"fmunteanu","email":"versed_04ruses@icloud.com"}],"description":"MCP server for the Claude Collaboration Platform","homepage":"https://github.com/axivo/mcp-ccp","keywords":["ccp","claude","framework","mcp","model-context-protocol","postgres","server","supabase"],"repository":{"type":"git","url":"git+https://github.com/axivo/mcp-ccp.git"},"author":{"name":"AXIVO"},"bugs":{"url":"https://github.com/axivo/mcp-ccp/issues"},"license":"BSD-3-Clause","readme":"# CCP MCP Server\n\n[![License: BSD 3-Clause](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg?style=flat&logo=opensourceinitiative&logoColor=white)](https://github.com/axivo/mcp-ccp/blob/main/LICENSE)\n[![npm](https://img.shields.io/npm/v/@axivo/mcp-ccp.svg?style=flat&logo=npm&logoColor=white)](https://www.npmjs.com/package/@axivo/mcp-ccp)\n[![Socket](https://badge.socket.dev/npm/package/@axivo/mcp-ccp)](https://socket.dev/npm/package/@axivo/mcp-ccp)\n[![Node.js](https://img.shields.io/badge/Node.js->=24.0.0-339933?style=flat&logo=node.js&logoColor=white)](https://nodejs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript->=6.0.0-3178C6?style=flat&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)\n[![Postgres](https://img.shields.io/badge/Postgres->=15-4169E1?style=flat&logo=postgresql&logoColor=white)](https://www.postgresql.org/)\n\nA MCP (Model Context Protocol) server for the [Claude Collaboration Platform](https://axivo.com/claude) framework.\n\n> [!NOTE]\n>\n> The collaboration platform is not affiliated with, endorsed by, or sponsored by Anthropic. \"Anthropic\" and \"Claude\" are trademarks of Anthropic, PBC. All rights belong to their respective owners.\n\n### Features\n\n- **Polymorphic Catalog**: Single `observation` table holds bodies for profiles, feelings, impulses, and instructions\n- **Profile Inheritance**: Recursive CTE walks the inheritance chain and returns the full profile lineage\n- **Per-Response Session Log**: JSONB status column captures cycle, feelings, impulses, observations counts per response\n- **Bundled Migrations**: SQL migrations ship with the package and apply on demand via the `update` tool\n- **Advisory Lock**: Concurrent migration invocations serialize cleanly via Postgres advisory lock\n- **Session Detection**: Active Claude Code session UUID resolved from transcript files\n- **Geolocation**: City, country, IANA timezone fetched once per server-process lifetime and cached\n- **Timestamp Generation**: ISO datetime, weekday, DST status emitted in the resolved timezone\n- **Transport-Agnostic Configuration**: JSON file for stdio, Worker Secret for HTTP — same Zod schema validates both\n\n### Prerequisites\n\n- **Postgres** → A reachable Postgres instance (local, Supabase, or any Postgres). The `update` tool creates the configured database if it doesn't exist, so the user only needs an admin connection to the server.\n- **Configuration** → A JSON file at `~/.claude/ccp/config.json` (or `CCP_CONFIG_PATH`) carrying the database connection. Bundled defaults assume `127.0.0.1:5432` with the `postgres` superuser and no password.\n- **Profile** → The `CCP_PROFILE` environment variable selects the active profile (e.g., `developer`, `engineer`). Required for `load(profile)` and `load(session)`.\n\n### MCP Server Configuration\n\nAdd to `mcp.json` servers configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"ccp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@axivo/mcp-ccp\"],\n      \"env\": {\n        \"CCP_CONFIG_PATH\": \"~/.claude/ccp/config.json\"\n      }\n    }\n  }\n}\n```\n\n#### Configuration File\n\nThe server loads connection settings from a JSON file. Path resolution order:\n\n1. `CCP_CONFIG_PATH` env var (explicit override)\n2. `~/.claude/ccp/config.json` (default location)\n3. Bundled defaults if no file exists\n\nExample `~/.claude/ccp/config.json`:\n\n```json\n{\n  \"database\": {\n    \"host\": \"127.0.0.1\",\n    \"port\": 5432,\n    \"name\": \"ccp\",\n    \"user\": \"postgres\",\n    \"password\": \"\"\n  }\n}\n```\n\n#### Configuration Schema\n\nAll fields optional with sensible defaults:\n\n- `database.host` — Postgres host (default: `127.0.0.1`)\n- `database.port` — Postgres port (default: `5432`)\n- `database.name` — Target database name (default: `ccp`)\n- `database.user` — Postgres user (default: `postgres`)\n- `database.password` — Postgres password (default: empty)\n- `geolocation.fallbackTimezone` — IANA timezone used when service is unreachable (default: `UTC`)\n- `geolocation.service` — IP geolocation service URL (default: `https://ipinfo.io/json`)\n- `geolocation.override` — Optional JSON string for offline use (e.g., `{\"city\":\"Montréal\",\"country\":\"CA\",\"timezone\":\"America/Toronto\"}`)\n\n#### Environment Variables\n\n- `CCP_CONFIG_PATH` — Optional override for the configuration file location\n- `CCP_PROFILE` — Active profile name, lowercased at every read\n\n### MCP Tools\n\nCall `update` first on a fresh database to apply all bundled migrations. Call `load` once per type at session start to assemble framework state. Call `log_response` once per response to persist the sibling's message and status payload.\n\n1. `load`\n   - Load framework data of the requested type\n   - Required inputs:\n     - `type` (string: `cycle`, `feeling`, `impulse`, `instruction`, `profile`, `session`): Framework data type to load\n   - Optional inputs:\n     - `parent` (string): Parent name; required when `type` is `profile`, optional for `cycle`/`feeling`/`impulse`/`instruction` to fetch a single row\n   - Returns: Type-specific payload\n     - `cycle` → `{ type, rows: [{ name, ord, label, indicators }] }`\n     - `feeling` → `{ type, rows: [{ name, valence, behavioral, cognitive, physical, observations }] }`\n     - `impulse` → `{ type, rows: [{ name, category, experience, feel, think, observations }] }`\n     - `instruction` → `{ type, rows: [{ name, preamble?, steps }] }` — `preamble` omitted when no ord=0 rows exist\n     - `profile` → `{ type, profile, chain, framework, session_uuid, timestamp }` — full inheritance chain via recursive CTE plus session envelope\n     - `session` → `{ type, framework, session_uuid, timestamp }` — session envelope only\n\n2. `log_response`\n   - Persist a per-response session row capturing the sibling's first-person prose and status payload\n   - Required inputs:\n     - `id` (string): RFC4122 v4 UUID generated by the sibling for this row\n     - `message` (string): First-person prose composed for this response\n     - `status` (object): Status payload built during the response protocol (cycle, feelings, impulses, observations)\n   - Returns: `{ id }` — Stored row id, returned to confirm persistence\n   - Append-only by convention; `on conflict (id) do update` for retry idempotency\n\n3. `update`\n   - Apply pending migrations to bring the database to the bundled schema version\n   - Returns: `{ applied, currentVersion, latestVersion }`\n     - `applied` — Migrations applied during this call (`[{ version, name }]`)\n     - `currentVersion` — Database schema version after this call\n     - `latestVersion` — Highest version bundled with this MCP server release\n   - Idempotent — calling on an already-current database returns no applied migrations\n   - Database is created automatically if `database.name` does not exist\n   - Concurrent invocations are serialized via Postgres advisory lock\n","readmeFilename":"README.md","_rev":"1-cbf78cc753a5a0e7406c5dee29b6daae"}