@floomhq/floom-mcp-sync 1.0.5 → 1.0.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 +56 -25
- package/dist/auto-sync.js +305 -191
- package/dist/lib/manifest.js +62 -8
- package/dist/lib/paths.js +19 -22
- package/dist/server.js +32 -140
- package/dist/tools/get.js +111 -0
- package/dist/tools/status.js +89 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,42 +1,73 @@
|
|
|
1
1
|
# Floom MCP Sync
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Lightweight MCP server for Floom skills. The launch path is CLI-first; MCP gives agents a small search/get/status/sync surface and keeps full skill content out of always-on context.
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
npx -y @floomhq/floom-mcp-sync
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
On startup it reads `~/.floom/config.json`, fetches
|
|
9
|
+
On startup it reads `~/.floom/config.json`, fetches the signed-in user's sync set from `/api/v1/me/skills`, and writes native skill packages:
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
```text
|
|
12
|
+
<skills-dir>/
|
|
13
|
+
<slug>/
|
|
14
|
+
SKILL.md
|
|
15
|
+
references/
|
|
16
|
+
examples/
|
|
17
|
+
scripts/
|
|
18
|
+
assets/
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
`references/`, `examples/`, `scripts/`, and `assets/` are optional and only appear when the synced package includes supporting files. Search results stay compact. Full `SKILL.md` content loads only when an agent calls `floom_get_skill` or when local sync writes the package.
|
|
22
|
+
|
|
23
|
+
## Setup
|
|
24
|
+
|
|
25
|
+
Claude Code:
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"mcpServers": {
|
|
30
|
+
"floom": {
|
|
31
|
+
"command": "npx",
|
|
32
|
+
"args": ["-y", "@floomhq/floom-mcp-sync"],
|
|
33
|
+
"env": {
|
|
34
|
+
"FLOOM_SKILLS_DIR": "~/.claude/skills"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Codex:
|
|
42
|
+
|
|
43
|
+
```toml
|
|
44
|
+
[mcp_servers.floom]
|
|
45
|
+
command = "npx"
|
|
46
|
+
args = ["-y", "@floomhq/floom-mcp-sync"]
|
|
47
|
+
|
|
48
|
+
[mcp_servers.floom.env]
|
|
49
|
+
FLOOM_SKILLS_DIR = "~/.codex/skills"
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Directory resolution order is `FLOOM_SKILLS_DIR`, `CLAUDE_SKILLS_DIR`, `CODEX_SKILLS_DIR`, then `~/.claude/skills`.
|
|
53
|
+
|
|
54
|
+
## Sync Behavior
|
|
12
55
|
|
|
13
|
-
-
|
|
14
|
-
- Codex: `FLOOM_TARGET=codex npx -y @floomhq/floom-mcp-sync`, `~/.codex/skills/`
|
|
15
|
-
- direct override: `FLOOM_SKILLS_DIR=/path/to/skills npx -y @floomhq/floom-mcp-sync`
|
|
56
|
+
Sync stores a machine-local manifest next to the Floom CLI config at `~/.floom/sync-manifest.json`. The manifest records each package file path, slug, SHA-256 hash, and sync time, which lets MCP detect unchanged files, missing files, local edits, and blocked paths.
|
|
16
57
|
|
|
17
|
-
|
|
18
|
-
Version 1 sync does not replace existing local Markdown files. Remote updates, existing untracked
|
|
19
|
-
files, and locally edited tracked files are skipped as conflicts. Symlinks are never followed. Move
|
|
20
|
-
or delete the local file to accept the Floom version on the next sync.
|
|
58
|
+
Version 1 sync does not replace existing local files. Remote updates, existing untracked files, and locally edited tracked files are skipped as conflicts. Symlinks are never followed. Move or delete the local file to accept the Floom version on the next sync.
|
|
21
59
|
|
|
22
|
-
The poll uses HTTP `If-None-Match` against `/api/v1/me/skills`, so unchanged responses are 304 with no body.
|
|
60
|
+
The poll uses HTTP `If-None-Match` against `/api/v1/me/skills`, so unchanged responses are `304` with no body. If a Floom-tracked local file is missing after a `304`, MCP refetches once without the ETag so Version 1 can recreate missing files without overwriting existing files.
|
|
23
61
|
|
|
24
62
|
Configure the preview poll interval with `FLOOM_SYNC_INTERVAL_MS` (default `60000`, minimum `10000`).
|
|
25
63
|
|
|
26
|
-
Tools
|
|
64
|
+
## Tools
|
|
27
65
|
|
|
28
|
-
- `floom_search_skills(query, library?, type?, limit?)` searches `/api/v1/search` and returns compact
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
- `
|
|
32
|
-
- `floom_publish_skill(name, content, description?, visibility?, asset_type?, installs_as?, version?)` publishes Markdown through `/api/skills`.
|
|
33
|
-
- `asset_type`: `knowledge`, `instruction`, `workflow`, or `skill` (default `skill`)
|
|
34
|
-
- `installs_as`: `claude_skill`, `memory`, `rule`, `codex_instruction`, `opencode_instruction`, `cursor_rule`, or `other` (default `claude_skill`)
|
|
35
|
-
- `version`: optional label like `1.0.0` or `v1-preview`
|
|
66
|
+
- `floom_search_skills(query, library?, type?, limit?)` searches `/api/v1/search` and returns compact hits: slug, title, description, type, library placement, folder, and install URL.
|
|
67
|
+
- `floom_get_skill(slug)` fetches full skill content from `/api/v1/skills/<slug>` on demand.
|
|
68
|
+
- `floom_status()` reports the local manifest, tracked file counts, and drift counts.
|
|
69
|
+
- `floom_sync()` runs one foreground sync.
|
|
36
70
|
|
|
37
|
-
|
|
38
|
-
- `floom_subscribe_library(slug)` subscribes the signed-in user so the library syncs locally.
|
|
39
|
-
- `floom_unsubscribe_library(slug)` removes that subscription.
|
|
40
|
-
- `floom_move_skill(slug, folder, tags?)` sets the signed-in user's local folder/tags override.
|
|
71
|
+
`type` is `knowledge`, `instruction`, `workflow`, or `skill`. `limit` is 1-50.
|
|
41
72
|
|
|
42
|
-
|
|
73
|
+
MCP does not expose the full library as context. It does not publish, mutate libraries, manage teams, or handle marketplace workflows.
|