Are you the author? Sign in to claim
kairos-mcp
KAIROS MCP is a TypeScript service for storing and executing reusable protocol chains for AI agents. It exposes:
POST /mcp/api/*/uikairosWithout persistent workflows, agents repeat work, lose context, and cannot follow multi-step procedures reliably. KAIROS fixes this with three core ideas (the diagrams below list every MCP tool):
next_action at every stepProtocol execution runs in a fixed order: activate (match adapters), forward (run each layer’s contract; loop), then reward (finalize the run). Use train / tune / export / delete / spaces as described in each tool’s MCP description.
Default run order — activate → forward (loop per layer) → reward:
flowchart LR
A([activate]) --> B([forward])
B -.-> B
B --> D([reward])
style A fill:#4a6fa5,stroke:#2d4a7a,color:#fff
style B fill:#ffb74d,stroke:#f57c00,color:#333
style D fill:#81c784,stroke:#388e3c,color:#333
Discovery and adapter lifecycle — no fixed order; follow each tool’s MCP description:
flowchart LR
S([spaces]) --- TR([train]) --- TU([tune]) --- EX([export]) --- DL([delete])
style S fill:#4a6fa5,stroke:#2d4a7a,color:#fff
style TR fill:#ede7f6,stroke:#5e35b1,color:#333
style TU fill:#fff3e0,stroke:#f57c00,color:#333
style EX fill:#e8f5e9,stroke:#388e3c,color:#333
style DL fill:#ffebee,stroke:#c62828,color:#333
The server generates challenge data (nonce, proof_hash, URIs); agents echo
those values back exactly.
Authoritative behavior for agents is defined in the MCP tool resources under
src/embed-docs/tools/ (activate, forward,
reward). This is an on-wire summary; follow each response’s next_action
and must_obey fields in real runs.
activate — Provide a short query string (about 3-8 words) on every
call. From choices, pick one row and obey that row’s next_action
(do not mix in another URI). Typical roles: match (continue with
forward on the given adapter URI), refine, create
(register a new adapter with train).
forward — With the adapter URI from activate, call forward
and omit solution on the first call for that run. Read contract
and next_action. For each layer, call forward again using the layer
URI from the last response (add ?execution_id=... when the server returns
it) and supply a solution whose type matches contract.type. Loop until
next_action tells you to call reward.
reward — After the last layer, call reward with the layer URI
from forward (not the adapter URI unless the schema explicitly allows
it), outcome (success or failure), and optional evaluator fields per the
tool description.
Must always: Obey next_action verbatim. Echo server-issued nonce,
proof_hash, and URIs exactly.
Must never: Invent URIs; skip layers; submit a solution whose type does not
match contract.type.
For a longer narrative, see the Workflow Engine pages in the KAIROS wiki.
The current codebase includes:
REDIS_URL is set/uiUse one transport mode per process:
kairos serve / kairos-mcp serve (run the MCP server from the npm package):
--transport stdio|http overrides TRANSPORT_TYPE for that process only.
If neither is set, serve defaults to stdio (good for local MCP hosts).
Other kairos commands (login, train, …) do not use --transport; they only see
TRANSPORT_TYPE if you set it in the environment (normally leave it unset for CLI-only use).
TRANSPORT_TYPE=http: serves /mcp, /api/*, /ui, and /health; this is
the default for Docker Compose deployments.
TRANSPORT_TYPE=stdio: runs MCP over stdin/stdout for local hosts such as
Claude Desktop, Cursor, or Claude Code. In this mode, stdout is reserved for
MCP protocol frames and logs go to stderr.
KAIROS runs as a local MCP server that your agent host launches over stdio
(the default transport). You do not need to clone this repo or run Docker
Compose — install the package globally and point your host at kairos serve.
Node.js 24+.
A Qdrant instance on http://localhost:6333 — KAIROS cannot start
without it, and no auth is required for local use. If you don't already run
one, this is the quickest option (optional convenience):
docker run -p 6333:6333 qdrant/qdrant
One embedding backend, supplied through the host env below.
npm install -g @debian777/kairos-mcp
kairos --help
The global install provides both the kairos CLI (bulk operations, auth,
server management) and the MCP server binary used by your agent host.
Add KAIROS to your host's mcp.json (Cursor, Claude Desktop, Claude Code, …).
serve uses stdio by default, so no --transport flag is needed:
{
"mcpServers": {
"KAIROS": {
"command": "kairos",
"args": ["serve"],
"env": {
"QDRANT_URL": "http://localhost:6333",
"QDRANT_API_KEY": "",
"OPENAI_API_KEY": "sk-..."
}
}
}
}
QDRANT_API_KEY="" selects no-auth localhost Qdrant. For the embedding backend,
supply one of:
OPENAI_API_KEYOPENAI_API_URL, OPENAI_EMBEDDING_MODEL,
and OPENAI_API_KEY=ollamaTEI_BASE_URL (+ optional TEI_MODEL)Every parameter is ENV-overridable. To run KAIROS as an HTTP listener
instead of stdio, add "--transport", "http" to args (see
Transport modes).
Some hosts show a longer agent-visible server id (for example one ending in
-KAIROS); see AGENTS.md for the runtime authority note.
When executing over MCP, follow Protocol execution
above and each tool result's next_action. The connected server's tool
descriptions are the runtime authority if they differ from this file.
Developers: to run the full Docker Compose stack (Qdrant + app + optional Keycloak / Redis / Postgres) for local development and testing, see CONTRIBUTING.md.
The kairos CLI is installed as part of the global package (see
Install above). It provides bulk adapter operations, authentication,
export/import, and server management — the same binary your MCP host uses for
kairos serve.
kairos --help
See docs/CLI.md.
This repo ships the kairos skill for running protocols. Use --list
to see what the skills registry reports for this repo.
If you want agents to use KAIROS consistently, add a short repo rule or instruction such as:
KAIROS MCP is a Model Context Protocol server for persistent memory and deterministic adapter execution. Execute protocols in this order:
activate→forward(loop per layer untilnext_actionpoints toreward) →reward. Echo all server-generated hashes, nonces, and URIs exactly.
This repository ships its agent skills under
.agents/skills/. Two skills are published:
| Skill | Audience | Purpose |
|---|---|---|
kairos | Users | Run KAIROS protocols; install and update guidance; bug reports |
kairos-dev | Developers | Docker Compose dev environment and maintainer workflows (internal; not installed by npx skills add) |
Install the user skill:
npx skills add debian777/kairos-mcp --skill kairos
List available skills:
npx skills add debian777/kairos-mcp --list
Popular global installs:
| Agents | Command |
|---|---|
| Cursor | npx skills add debian777/kairos-mcp --skill kairos -y -g -a cursor |
| Claude Code | npx skills add debian777/kairos-mcp --skill kairos -y -g -a claude-code |
| Cursor + Claude Code | npx skills add debian777/kairos-mcp --skill kairos -y -g -a cursor -a claude-code |
More detail: .agents/skills/README.md
A Helm chart for Kubernetes deployment lives under helm/. To
validate the chart locally (matches the GitHub Actions CI pipeline):
npm run test:helm
See docs/install/helm.md for deployment details.
In stdio mode KAIROS logs to stderr (stdout is reserved for MCP frames).
Check your host's MCP log panel for the KAIROS server. The most common cause
is Qdrant not being reachable.
KAIROS requires a Qdrant instance and only becomes healthy once Qdrant is
ready. Confirm one is listening on your QDRANT_URL (default
http://localhost:6333):
curl http://localhost:6333/readyz
If you run KAIROS in HTTP mode (--transport http), you can also check its own
health endpoint (curl http://localhost:3000/health).
Set one working embedding backend in the host env:
OPENAI_API_KEYOPENAI_API_URL, OPENAI_EMBEDDING_MODEL, OPENAI_API_KEY=ollamaTEI_BASE_URL (+ optional TEI_MODEL)The CLI stores tokens per API URL. Confirm that:
--url / KAIROS_API_URLUse:
kairos token --validate
Developers: for Docker Compose, fullstack, and auth troubleshooting, see CONTRIBUTING.md.
KAIROS MCP™ and the KAIROS MCP logo are trademarks of the project owner. They are not covered by the MIT license. Forks must remove the name and logo.
See TRADEMARK.md.
MIT — see LICENSE.
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases
Official GitHub integration for repos, issues, PRs, and CI/CD workflows