@lynkow/mcp-server 1.0.0

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/LICENSE ADDED
@@ -0,0 +1,6 @@
1
+ Copyright (c) 2026 Lynkow. All rights reserved.
2
+
3
+ This software is proprietary and confidential. Unauthorized copying, modification,
4
+ distribution, or use of this software, via any medium, is strictly prohibited.
5
+
6
+ The software is provided "as is", without warranty of any kind, express or implied.
package/README.md ADDED
@@ -0,0 +1,104 @@
1
+ # @lynkow/mcp-server
2
+
3
+ Model Context Protocol (MCP) server for [Lynkow](https://lynkow.com) — manage your headless CMS website with AI assistants like Claude, ChatGPT, Cursor, and more.
4
+
5
+ ## Quick Start
6
+
7
+ ### Claude Desktop
8
+
9
+ Add to your `claude_desktop_config.json`:
10
+
11
+ ```json
12
+ {
13
+ "mcpServers": {
14
+ "lynkow": {
15
+ "command": "npx",
16
+ "args": ["@lynkow/mcp-server"],
17
+ "env": {
18
+ "LYNKOW_API_TOKEN": "your-mcp-token"
19
+ }
20
+ }
21
+ }
22
+ }
23
+ ```
24
+
25
+ ### Claude Code
26
+
27
+ Create `.mcp.json` at your project root:
28
+
29
+ ```json
30
+ {
31
+ "mcpServers": {
32
+ "lynkow": {
33
+ "command": "npx",
34
+ "args": ["@lynkow/mcp-server"],
35
+ "env": {
36
+ "LYNKOW_API_TOKEN": "your-mcp-token"
37
+ }
38
+ }
39
+ }
40
+ }
41
+ ```
42
+
43
+ ## Configuration
44
+
45
+ | Variable | Required | Default | Description |
46
+ |----------|----------|---------|-------------|
47
+ | `LYNKOW_API_TOKEN` | Yes | - | API token with MCP preset |
48
+ | `LYNKOW_API_URL` | No | `https://api.lynkow.com` | Custom API URL (self-hosted only) |
49
+ | `LYNKOW_LOCALE` | No | `fr` | Default locale |
50
+ | `LYNKOW_DEBUG` | No | `false` | Enable debug logs on stderr |
51
+
52
+ ## 121 Tools Available
53
+
54
+ | Category | Tools | Examples |
55
+ |----------|-------|---------|
56
+ | Contents | 13 | list, create, update, publish, archive, duplicate, bulk operations, revisions |
57
+ | Site Blocks | 10 | pages & global blocks: CRUD, publish, revisions, restore |
58
+ | Categories | 7 | CRUD, tree hierarchy, copy to locale |
59
+ | Tags | 7 | CRUD, translations, copy to locale |
60
+ | Variables | 7 | site-wide key-value pairs, translations |
61
+ | Media | 12 | files & folders: upload by URL, move, references |
62
+ | Forms | 10 | CRUD, submissions, status management, CSV export |
63
+ | Reviews | 10 | CRUD, bulk moderation, stats, settings |
64
+ | SEO | 6 | settings, sitemap JSON, IndexNow |
65
+ | Sitemap | 7 | entries CRUD, preview, import/export |
66
+ | Redirects | 8 | CRUD, bulk delete, import/export |
67
+ | Analytics | 9 | overview, pages, sources, realtime, engagement, funnels, export |
68
+ | Settings | 10 | site info, language, spam, cookie consent, notifications |
69
+ | Translations | 5 | cross-resource translation status & copy |
70
+
71
+ ## Example Prompts
72
+
73
+ Once connected, ask your AI assistant:
74
+
75
+ - "List all published articles on my site"
76
+ - "Create a blog post titled 'Getting Started' and publish it"
77
+ - "Enable English and Spanish on my site"
78
+ - "Show me traffic stats for the last 30 days"
79
+ - "Archive all draft articles older than 6 months"
80
+
81
+ ## Multi-site
82
+
83
+ Each token is tied to one site. Configure multiple servers for multiple sites:
84
+
85
+ ```json
86
+ {
87
+ "mcpServers": {
88
+ "lynkow-blog": {
89
+ "command": "npx",
90
+ "args": ["@lynkow/mcp-server"],
91
+ "env": { "LYNKOW_API_TOKEN": "token-blog" }
92
+ },
93
+ "lynkow-shop": {
94
+ "command": "npx",
95
+ "args": ["@lynkow/mcp-server"],
96
+ "env": { "LYNKOW_API_TOKEN": "token-shop" }
97
+ }
98
+ }
99
+ }
100
+ ```
101
+
102
+ ## License
103
+
104
+ Proprietary - Copyright (c) 2026 Lynkow. All rights reserved.
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { startServer } from '../dist/index.js'
4
+
5
+ startServer().catch((error) => {
6
+ console.error('[lynkow-mcp] Fatal error:', error.message)
7
+ process.exit(1)
8
+ })
@@ -0,0 +1,39 @@
1
+ import { z } from 'zod';
2
+
3
+ declare const configSchema: z.ZodObject<{
4
+ apiUrl: z.ZodDefault<z.ZodString>;
5
+ apiToken: z.ZodString;
6
+ locale: z.ZodDefault<z.ZodString>;
7
+ timeout: z.ZodDefault<z.ZodNumber>;
8
+ debug: z.ZodDefault<z.ZodBoolean>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ apiUrl: string;
11
+ apiToken: string;
12
+ locale: string;
13
+ timeout: number;
14
+ debug: boolean;
15
+ }, {
16
+ apiToken: string;
17
+ apiUrl?: string | undefined;
18
+ locale?: string | undefined;
19
+ timeout?: number | undefined;
20
+ debug?: boolean | undefined;
21
+ }>;
22
+ type LynkowConfig = z.infer<typeof configSchema>;
23
+
24
+ declare class LynkowApiClient {
25
+ private baseUrl;
26
+ private token;
27
+ private timeout;
28
+ private debug;
29
+ constructor(config: LynkowConfig);
30
+ get<T>(path: string, params?: Record<string, unknown>): Promise<T>;
31
+ post<T>(path: string, body?: unknown): Promise<T>;
32
+ put<T>(path: string, body?: unknown): Promise<T>;
33
+ delete<T>(path: string, params?: Record<string, unknown>): Promise<T>;
34
+ private request;
35
+ }
36
+
37
+ declare function startServer(): Promise<void>;
38
+
39
+ export { LynkowApiClient, type LynkowConfig, startServer };