@likyly/mcp-server 0.4.0 → 0.4.1

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.
Files changed (3) hide show
  1. package/README.md +32 -31
  2. package/dist/tools.js +1 -1
  3. package/package.json +22 -2
package/README.md CHANGED
@@ -1,33 +1,34 @@
1
1
  # @likyly/mcp-server
2
2
 
3
- MCP (Model Context Protocol) server for the LIKYLY API. Lets an MCP-compatible AI coding
4
- assistant (Claude Code, Codex, Claude Desktop, Cursor...) call recommendations and record
5
- events directly, connect and sync a catalog data source (Shopify, a REST API, a CSV, a
6
- webhook, ...) end to end, configure a **Placement** - a named recommendation setup ("4 related
7
- products on a PDP, session-based for anonymous visitors, add history once logged in, exclude
8
- out-of-stock") - and then get a structured integration recipe for a real codebase
9
- (`get_integration_recipe`) and verify the result from LIKYLY's own data instead of guessing
10
- from the source (`validate_integration`). LIKYLY doesn't ship its own chat - the coding agent
11
- calling these tools *is* the conversational interface; see
12
- [`docs/getting-started.md`](../../docs/getting-started.md) for the full "zero to working
13
- recommendations" walkthrough.
14
-
15
- Two tiers of tools, gated by which key you give `LIKYLY_API_KEY` - the server itself doesn't
16
- decide what a key can do, the API does:
17
-
18
- - **Recommendations/events** (`get_recommendations`, `track_event`, ...) - safe with your
19
- **restricted public key** (account page's "Clé publique"). Safe in an untrusted assistant
20
- context, the same way client-side JS would be.
21
- - **Admin tools** (`create_data_source`, `create_placement`, ...) - need your **secret key**,
22
- or better, a **developer key** (see below) - a third credential kind meant for exactly this:
23
- a coding agent managing your data sources and placements, without handing it full account
24
- access. **Never put a secret or developer key where browser-facing code could read it** -
25
- only in a trusted local environment (your own machine, Claude Code, Codex, CI) or
26
- server-side config.
27
-
28
- If you only ever want recommendations/events, a public key is all you need - the admin tools
29
- are simply unusable without a secret/developer key (a clear 401/403 in the tool result, not a
30
- crash).
3
+ Lets your AI coding assistant (Claude Code, Cursor, VS Code, Codex, Claude Desktop…) set up
4
+ [LIKYLY](https://likyly.com) recommendations on your site for you.
5
+
6
+ [LIKYLY](https://likyly.com) shows each visitor the products they are most likely to want ("You may
7
+ also like", "Recommended for you"), learned from what visitors do on your site. With this server, you
8
+ ask your assistant in plain words and it does the work:
9
+
10
+ - **connect your catalog**: Shopify, a REST API, a CSV, a webhook, or products pushed from your code;
11
+ - **create a placement**: where recommendations appear and how ("4 related products on the product
12
+ page, exclude out-of-stock");
13
+ - **integrate it into your code** from a recipe written for your stack;
14
+ - **check it works**, from LIKYLY's own data: recommendations served, impressions and clicks received.
15
+
16
+ The quickest way to install it is the wizard, which also installs the SDK and writes your key:
17
+
18
+ ```sh
19
+ npx @likyly/wizard
20
+ ```
21
+
22
+ ## Which key
23
+
24
+ The API decides what a key can do, not the server:
25
+
26
+ - **Public key** (`pk_…`): recommendations and events only. Safe anywhere.
27
+ - **Developer key** (`lk_…`, recommended for assistants) or secret key (`sk_…`): also the admin tools
28
+ (catalog sources, placements, cache). Keep it on your machine or in server-side config, never in
29
+ browser code.
30
+
31
+ Without a developer or secret key, the admin tools answer with a clear 401/403; nothing breaks.
31
32
 
32
33
  ## Install
33
34
 
@@ -110,7 +111,7 @@ Recommendations/events - work with the public key:
110
111
  | `track_event` | `POST /events/{event_type}` (impression, view, click, add_to_cart, remove_from_cart, purchase, ...) |
111
112
 
112
113
  Admin - data source integrations - need the secret key or a developer key with `sources:read`/
113
- `sources:write` (see [`docs/data-sources.md`](../../docs/data-sources.md) for the full
114
+ `sources:write` (see [`docs/data-sources.md`](https://github.com/Likyly/likyly-recsys/blob/main/docs/data-sources.md) for the full
114
115
  architecture, source types and config shapes):
115
116
 
116
117
  | Tool | Maps to |
@@ -130,7 +131,7 @@ architecture, source types and config shapes):
130
131
  | `rotate_push_secret` | `POST /data-sources/{id}/push-secret/rotate` |
131
132
 
132
133
  Admin - placements (the recommended way to wire up recommendations - see
133
- [`docs/placements.md`](../../docs/placements.md)) - need the secret key or a developer key
134
+ [`docs/placements.md`](https://github.com/Likyly/likyly-recsys/blob/main/docs/placements.md)) - need the secret key or a developer key
134
135
  with `placements:read`/`placements:write`:
135
136
 
136
137
  | Tool | Maps to |
@@ -145,7 +146,7 @@ with `placements:read`/`placements:write`:
145
146
  | `purge_recommendation_cache` | `POST /placements/{slug}/cache/purge`, or `POST /placements/cache/purge` for all - empties the anonymous recommendation cache (see docs/placements.md, "Caching") |
146
147
 
147
148
  Admin - integration recipe & validator (writing and verifying the client-side integration -
148
- see [`docs/getting-started.md`](../../docs/getting-started.md)) - same `placements:read`/
149
+ see [`docs/getting-started.md`](https://github.com/Likyly/likyly-recsys/blob/main/docs/getting-started.md)) - same `placements:read`/
149
150
  `placements:write` requirement:
150
151
 
151
152
  | Tool | Maps to |
package/dist/tools.js CHANGED
@@ -15,7 +15,7 @@ import { createLikylyValidatorTools } from "./validator-tools.js";
15
15
  // capabilities up front) keeps this server simple and lets the API stay the single source of
16
16
  // truth for what a given key can do.
17
17
  export function createLikylyServer(client, defaultProductType) {
18
- const server = new McpServer({ name: "likyly-recsys", version: "0.2.0" });
18
+ const server = new McpServer({ name: "likyly-recsys", version: "0.4.1" });
19
19
  const productType = defaultProductType
20
20
  ? z.string().optional().describe(`Catalog namespace. Defaults to "${defaultProductType}" if omitted.`)
21
21
  : z.string().describe("Catalog namespace, e.g. \"movies\" or your own product category.");
package/package.json CHANGED
@@ -1,7 +1,27 @@
1
1
  {
2
2
  "name": "@likyly/mcp-server",
3
- "version": "0.4.0",
4
- "description": "MCP (Model Context Protocol) server exposing the LIKYLY API as tools for AI coding assistants - recommendations and event tracking (restricted public key), plus admin tools to connect and sync a catalog data source - Shopify, a REST API, a CSV, a webhook, ... (secret key or a scoped developer key). Runs locally (stdio) or as a hosted HTTP service.",
3
+ "version": "0.4.1",
4
+ "description": "Lets your AI coding assistant (Claude Code, Cursor, VS Code, Codex) set up LIKYLY product recommendations: connect your catalog, create placements, integrate and verify.",
5
+ "keywords": [
6
+ "likyly",
7
+ "mcp",
8
+ "model-context-protocol",
9
+ "mcp-server",
10
+ "claude-code",
11
+ "cursor",
12
+ "recommendations",
13
+ "ecommerce"
14
+ ],
15
+ "homepage": "https://www.likyly.com",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/Likyly/likyly-recsys.git",
19
+ "directory": "sdk/mcp"
20
+ },
21
+ "bugs": {
22
+ "url": "https://github.com/Likyly/likyly-recsys/issues"
23
+ },
24
+ "author": "LIKYLY (https://www.likyly.com)",
5
25
  "type": "module",
6
26
  "bin": {
7
27
  "likyly-mcp-server": "./dist/index.js",