devto-mcp 0.2.0 → 0.2.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.
- package/README.md +48 -4
- package/bin/devto-mcp.js +0 -0
- package/bin/devto.js +0 -0
- package/dist/cli.d.ts +2 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +231 -119
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +8 -5
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +43 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +119 -2
- package/dist/config.js.map +1 -1
- package/dist/index.js +18 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,6 +10,8 @@ npm install -g devto-mcp
|
|
|
10
10
|
|
|
11
11
|
Requires Node.js >= 18 and [Claude Code](https://claude.ai/claude-code).
|
|
12
12
|
|
|
13
|
+
This is a one-time global install. Each project is linked individually via `devto init` — uninstalling from one project does not affect others.
|
|
14
|
+
|
|
13
15
|
## Setup
|
|
14
16
|
|
|
15
17
|
1. Create an account and get an API key at [devto.ai](https://devto.ai)
|
|
@@ -21,12 +23,38 @@ devto login
|
|
|
21
23
|
devto config set anthropic-key sk-ant-xxxx
|
|
22
24
|
```
|
|
23
25
|
|
|
24
|
-
3.
|
|
26
|
+
3. In your project directory, link to DevTo:
|
|
25
27
|
|
|
26
28
|
```bash
|
|
29
|
+
cd your-project
|
|
27
30
|
devto init
|
|
28
31
|
```
|
|
29
32
|
|
|
33
|
+
This creates:
|
|
34
|
+
- `.devto.json` — project config (workspace URL, project key, provider)
|
|
35
|
+
- `.devto/config.json` — credentials (API key, scoped to this project)
|
|
36
|
+
- `.mcp.json` — Claude Code MCP server config
|
|
37
|
+
|
|
38
|
+
Both `.devto.json` and `.devto/` are added to `.gitignore` automatically.
|
|
39
|
+
|
|
40
|
+
4. Restart Claude Code to pick up the MCP config.
|
|
41
|
+
|
|
42
|
+
## Per-project configuration
|
|
43
|
+
|
|
44
|
+
Each project gets its own `.devto.json` in the project root:
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"workspaceUrl": "https://yourcompany.atlassian.net",
|
|
49
|
+
"projectKey": "ENG",
|
|
50
|
+
"provider": "jira"
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
When the MCP server starts, it walks up the directory tree from the current working directory looking for `.devto.json`. If found, that workspace and project are used for all API calls. If not found, it falls back to the tenant's default workspace.
|
|
55
|
+
|
|
56
|
+
**Add `.devto.json` to your `.gitignore`.** It may contain a workspace ID. `devto init` does this automatically.
|
|
57
|
+
|
|
30
58
|
## Usage
|
|
31
59
|
|
|
32
60
|
In Claude Code:
|
|
@@ -41,17 +69,29 @@ DevTo generates a structured plan. Run `confirm_plan` to push it to your project
|
|
|
41
69
|
|
|
42
70
|
| Command | Description |
|
|
43
71
|
|---|---|
|
|
44
|
-
| `devto login` | Authenticate with your API key |
|
|
45
|
-
| `devto
|
|
46
|
-
| `devto
|
|
72
|
+
| `devto login` | Authenticate with your API key (global) |
|
|
73
|
+
| `devto init` | Link this project to DevTo |
|
|
74
|
+
| `devto unlink` | Unlink this project (removes .devto.json, .devto/, registry entry) |
|
|
75
|
+
| `devto status` | Show connection and active project config |
|
|
47
76
|
| `devto doctor` | Run diagnostics |
|
|
48
77
|
| `devto sync` | Re-sync workspace config |
|
|
49
78
|
| `devto config set anthropic-key` | Store your Anthropic key locally |
|
|
50
79
|
|
|
80
|
+
### Unlinking a project
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
devto unlink
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
This removes `.devto.json`, `.devto/`, the devto entry from `.mcp.json`, and the project from `~/.devto/projects.json`. It does **not** uninstall the global package.
|
|
87
|
+
|
|
88
|
+
To fully remove DevTo: `npm uninstall -g devto-mcp`.
|
|
89
|
+
|
|
51
90
|
## MCP tools
|
|
52
91
|
|
|
53
92
|
| Tool | Description |
|
|
54
93
|
|---|---|
|
|
94
|
+
| `get_project_summary` | Lightweight snapshot of active work |
|
|
55
95
|
| `create_plan` | Generate a plan from a feature description |
|
|
56
96
|
| `confirm_plan` | Execute a plan and create all work items |
|
|
57
97
|
| `create_epic` | Create an epic |
|
|
@@ -61,6 +101,10 @@ DevTo generates a structured plan. Run `confirm_plan` to push it to your project
|
|
|
61
101
|
| `update_task` | Update a task's status |
|
|
62
102
|
| `get_status` | Get project summary |
|
|
63
103
|
|
|
104
|
+
## Project registry
|
|
105
|
+
|
|
106
|
+
DevTo keeps a registry of linked projects at `~/.devto/projects.json`. This is used internally to track which directories are linked. You don't need to edit it manually.
|
|
107
|
+
|
|
64
108
|
## Dashboard
|
|
65
109
|
|
|
66
110
|
Manage your workspace, API keys, and billing at [devto.ai/dashboard](https://devto.ai/dashboard).
|
package/bin/devto-mcp.js
CHANGED
|
File without changes
|
package/bin/devto.js
CHANGED
|
File without changes
|
package/dist/cli.d.ts
CHANGED
|
@@ -6,13 +6,12 @@
|
|
|
6
6
|
* devto login Authenticate with your DevTo API key
|
|
7
7
|
* devto logout Clear global credentials
|
|
8
8
|
* devto status Show current connection status
|
|
9
|
-
* devto init
|
|
9
|
+
* devto init Link this project to DevTo
|
|
10
|
+
* devto unlink Unlink this project from DevTo
|
|
10
11
|
* devto doctor Test full connection chain
|
|
11
12
|
* devto sync Re-sync workspace configuration
|
|
12
13
|
* devto verbose Toggle verbose mode
|
|
13
14
|
* devto config set anthropic-key <key> Store Anthropic API key
|
|
14
|
-
* devto uninstall Remove DevTo from this project
|
|
15
|
-
* devto uninstall --purge Remove DevTo from this project + global config
|
|
16
15
|
*/
|
|
17
16
|
export {};
|
|
18
17
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG"}
|
package/dist/cli.js
CHANGED
|
@@ -7,13 +7,12 @@
|
|
|
7
7
|
* devto login Authenticate with your DevTo API key
|
|
8
8
|
* devto logout Clear global credentials
|
|
9
9
|
* devto status Show current connection status
|
|
10
|
-
* devto init
|
|
10
|
+
* devto init Link this project to DevTo
|
|
11
|
+
* devto unlink Unlink this project from DevTo
|
|
11
12
|
* devto doctor Test full connection chain
|
|
12
13
|
* devto sync Re-sync workspace configuration
|
|
13
14
|
* devto verbose Toggle verbose mode
|
|
14
15
|
* devto config set anthropic-key <key> Store Anthropic API key
|
|
15
|
-
* devto uninstall Remove DevTo from this project
|
|
16
|
-
* devto uninstall --purge Remove DevTo from this project + global config
|
|
17
16
|
*/
|
|
18
17
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
19
18
|
if (k2 === undefined) k2 = k;
|
|
@@ -55,6 +54,19 @@ const path = __importStar(require("path"));
|
|
|
55
54
|
const os = __importStar(require("os"));
|
|
56
55
|
const config_1 = require("./config");
|
|
57
56
|
const command = process.argv[2];
|
|
57
|
+
const NO_PROJECT_MESSAGE = `\nNo project linked in this directory.\nRun \`devto init\` to link this project to a DevTo workspace.\n`;
|
|
58
|
+
/**
|
|
59
|
+
* Require .devto.json in the directory tree.
|
|
60
|
+
* If not found, print message and exit. Used by status, doctor, sync.
|
|
61
|
+
*/
|
|
62
|
+
function requireProjectJson() {
|
|
63
|
+
const projectJson = (0, config_1.findProjectJson)();
|
|
64
|
+
if (!projectJson) {
|
|
65
|
+
console.log(NO_PROJECT_MESSAGE);
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
return projectJson;
|
|
69
|
+
}
|
|
58
70
|
async function prompt(question, hidden = false) {
|
|
59
71
|
return new Promise((resolve) => {
|
|
60
72
|
const rl = readline.createInterface({
|
|
@@ -99,7 +111,7 @@ async function validateKey(apiKey) {
|
|
|
99
111
|
const res = await fetch(`${apiUrl}/api/v1/status`, {
|
|
100
112
|
headers: {
|
|
101
113
|
Authorization: `Bearer ${apiKey}`,
|
|
102
|
-
"X-DevTo-Version":
|
|
114
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
103
115
|
},
|
|
104
116
|
});
|
|
105
117
|
// 200 = valid key, 401 = invalid
|
|
@@ -110,6 +122,34 @@ async function validateKey(apiKey) {
|
|
|
110
122
|
return true;
|
|
111
123
|
}
|
|
112
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Fetch workspaces for a given API key.
|
|
127
|
+
* Returns array of { id, name, workspaceUrl, projectKey, providerType }.
|
|
128
|
+
*/
|
|
129
|
+
async function fetchWorkspaces(apiKey) {
|
|
130
|
+
const apiUrl = process.env.DEVTO_API_URL ?? "https://api.devto.ai";
|
|
131
|
+
try {
|
|
132
|
+
const res = await fetch(`${apiUrl}/api/v1/workspaces`, {
|
|
133
|
+
headers: {
|
|
134
|
+
Authorization: `Bearer ${apiKey}`,
|
|
135
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
if (!res.ok)
|
|
139
|
+
return [];
|
|
140
|
+
const data = (await res.json());
|
|
141
|
+
return (data.workspaces ?? []).map((w) => ({
|
|
142
|
+
id: w.id,
|
|
143
|
+
name: w.name,
|
|
144
|
+
workspaceUrl: w.workspace_url,
|
|
145
|
+
projectKey: w.workspace_project_key,
|
|
146
|
+
providerType: w.provider_type,
|
|
147
|
+
}));
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return [];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
113
153
|
async function login() {
|
|
114
154
|
console.log("\nDevTo Login (global)\n");
|
|
115
155
|
console.log("Note: For per-project isolation, use `devto init` instead.");
|
|
@@ -150,7 +190,7 @@ async function login() {
|
|
|
150
190
|
else {
|
|
151
191
|
console.log("\nSkipped. You can set it later: devto config set anthropic-key sk-ant-xxxx\n");
|
|
152
192
|
}
|
|
153
|
-
console.log("Next step: run `devto init`
|
|
193
|
+
console.log("Next step: run `devto init` in your project directory.");
|
|
154
194
|
console.log("Run `devto status` to verify your connection.\n");
|
|
155
195
|
}
|
|
156
196
|
async function logout() {
|
|
@@ -158,15 +198,14 @@ async function logout() {
|
|
|
158
198
|
if (fs.existsSync(configDir)) {
|
|
159
199
|
fs.rmSync(configDir, { recursive: true, force: true });
|
|
160
200
|
console.log("\nLogged out. Removed ~/.devto credentials.");
|
|
161
|
-
console.log("Note: Project .
|
|
162
|
-
console.log("Run `devto uninstall` in a project to remove it from that project.\n");
|
|
201
|
+
console.log("Note: Project .devto.json files are untouched — run `devto unlink` per project to remove them.\n");
|
|
163
202
|
}
|
|
164
203
|
else {
|
|
165
204
|
console.log("\nNo credentials found. Already logged out.\n");
|
|
166
205
|
}
|
|
167
206
|
}
|
|
168
207
|
async function status() {
|
|
169
|
-
|
|
208
|
+
const projectJson = requireProjectJson();
|
|
170
209
|
const projectConfig = (0, config_1.readProjectConfig)();
|
|
171
210
|
const globalConfig = (0, config_1.readConfig)();
|
|
172
211
|
const resolved = projectConfig
|
|
@@ -174,24 +213,27 @@ async function status() {
|
|
|
174
213
|
: globalConfig
|
|
175
214
|
? { config: globalConfig, source: "global" }
|
|
176
215
|
: null;
|
|
216
|
+
console.log("\nDevTo Status");
|
|
217
|
+
console.log("────────────");
|
|
218
|
+
console.log(`Project config: ${path.join(projectJson.dir, ".devto.json")}`);
|
|
219
|
+
console.log(` Workspace: ${projectJson.config.workspaceUrl}`);
|
|
220
|
+
console.log(` Project: ${projectJson.config.projectKey}`);
|
|
221
|
+
console.log(` Provider: ${projectJson.config.provider}`);
|
|
222
|
+
console.log();
|
|
177
223
|
if (!resolved) {
|
|
178
|
-
console.log("
|
|
179
|
-
console.log(" Run `devto init`
|
|
224
|
+
console.log("Auth: No API key found.");
|
|
225
|
+
console.log(" Run `devto init` to set up credentials for this project.\n");
|
|
180
226
|
process.exit(1);
|
|
181
227
|
}
|
|
182
228
|
const { config, source } = resolved;
|
|
183
229
|
if (source === "global") {
|
|
184
|
-
console.log("
|
|
185
|
-
|
|
230
|
+
console.log("Auth source: global (~/.devto/config.json)");
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
console.log("Auth source: project (.devto/config.json)");
|
|
186
234
|
}
|
|
187
|
-
console.log("\nDevTo Status");
|
|
188
|
-
console.log("────────────");
|
|
189
|
-
console.log(`Source: ${source === "project" ? "project (.devto/config.json)" : "global (~/.devto/config.json)"}`);
|
|
190
235
|
console.log(`API URL: ${config.api_url}`);
|
|
191
236
|
console.log(`API Key: ${config.api_key.slice(0, 12)}...`);
|
|
192
|
-
if (config.workspace_id) {
|
|
193
|
-
console.log(`Workspace ID: ${config.workspace_id.slice(0, 8)}...`);
|
|
194
|
-
}
|
|
195
237
|
// Anthropic key status
|
|
196
238
|
const hasAnthropic = config.anthropic_key || (() => { try {
|
|
197
239
|
(0, config_1.getAnthropicKey)();
|
|
@@ -205,10 +247,11 @@ async function status() {
|
|
|
205
247
|
try {
|
|
206
248
|
const headers = {
|
|
207
249
|
Authorization: `Bearer ${config.api_key}`,
|
|
208
|
-
"X-DevTo-Version":
|
|
250
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
209
251
|
};
|
|
210
|
-
if (config.
|
|
211
|
-
headers["X-DevTo-Workspace"] = config.
|
|
252
|
+
if (projectJson.config.workspaceId) {
|
|
253
|
+
headers["X-DevTo-Workspace"] = projectJson.config.workspaceId;
|
|
254
|
+
}
|
|
212
255
|
const res = await fetch(`${config.api_url}/api/v1/status`, { headers });
|
|
213
256
|
if (res.ok) {
|
|
214
257
|
const data = (await res.json());
|
|
@@ -234,11 +277,12 @@ async function status() {
|
|
|
234
277
|
console.log();
|
|
235
278
|
}
|
|
236
279
|
async function init() {
|
|
237
|
-
console.log("\nDevTo Init —
|
|
280
|
+
console.log("\nDevTo Init — Link this project to DevTo\n");
|
|
238
281
|
const globalConfig = (0, config_1.readConfig)();
|
|
239
282
|
const existingProject = (0, config_1.readProjectConfig)();
|
|
283
|
+
const existingJson = (0, config_1.findProjectJson)(process.cwd());
|
|
240
284
|
const apiUrl = process.env.DEVTO_API_URL ?? globalConfig?.api_url ?? "https://api.devto.ai";
|
|
241
|
-
//
|
|
285
|
+
// ── Step 1: Get API key ──────────────────────────────────────────────
|
|
242
286
|
let apiKey;
|
|
243
287
|
if (existingProject?.api_key) {
|
|
244
288
|
const reuse = await prompt(`This project already has an API key (${existingProject.api_key.slice(0, 12)}...). Use it? (y/n): `);
|
|
@@ -270,7 +314,58 @@ async function init() {
|
|
|
270
314
|
process.exit(1);
|
|
271
315
|
}
|
|
272
316
|
console.log("OK");
|
|
273
|
-
//
|
|
317
|
+
// ── Step 2: Select workspace/project ─────────────────────────────────
|
|
318
|
+
let workspaceUrl;
|
|
319
|
+
let projectKey;
|
|
320
|
+
let provider;
|
|
321
|
+
let workspaceId;
|
|
322
|
+
// Try to fetch workspaces from the API
|
|
323
|
+
console.log("\nFetching your workspaces...");
|
|
324
|
+
const workspaces = await fetchWorkspaces(apiKey);
|
|
325
|
+
if (workspaces.length > 0) {
|
|
326
|
+
console.log(`\nFound ${workspaces.length} workspace(s):\n`);
|
|
327
|
+
workspaces.forEach((ws, i) => {
|
|
328
|
+
console.log(` ${i + 1}. ${ws.name || ws.workspaceUrl} — ${ws.projectKey} (${ws.providerType})`);
|
|
329
|
+
});
|
|
330
|
+
let selected;
|
|
331
|
+
if (workspaces.length === 1) {
|
|
332
|
+
const confirm = await prompt(`\nUse this workspace? (y/n): `);
|
|
333
|
+
if (confirm.toLowerCase() !== "y" && confirm.toLowerCase() !== "yes") {
|
|
334
|
+
console.log("\nYou can connect a different workspace at https://devto.ai/dashboard/settings\n");
|
|
335
|
+
process.exit(0);
|
|
336
|
+
}
|
|
337
|
+
selected = workspaces[0];
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
const choice = await prompt(`\nSelect workspace (1-${workspaces.length}): `);
|
|
341
|
+
const idx = parseInt(choice, 10) - 1;
|
|
342
|
+
if (isNaN(idx) || idx < 0 || idx >= workspaces.length) {
|
|
343
|
+
console.error("\nInvalid selection.\n");
|
|
344
|
+
process.exit(1);
|
|
345
|
+
}
|
|
346
|
+
selected = workspaces[idx];
|
|
347
|
+
}
|
|
348
|
+
workspaceUrl = selected.workspaceUrl;
|
|
349
|
+
projectKey = selected.projectKey;
|
|
350
|
+
provider = selected.providerType;
|
|
351
|
+
workspaceId = selected.id;
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
// No workspaces found — prompt manually
|
|
355
|
+
console.log("\nNo workspaces found. Enter workspace details manually.\n");
|
|
356
|
+
workspaceUrl = await prompt("Workspace URL (e.g. https://yourcompany.atlassian.net): ");
|
|
357
|
+
if (!workspaceUrl) {
|
|
358
|
+
console.error("\nWorkspace URL is required.\n");
|
|
359
|
+
process.exit(1);
|
|
360
|
+
}
|
|
361
|
+
projectKey = await prompt("Project key (e.g. ENG): ");
|
|
362
|
+
if (!projectKey) {
|
|
363
|
+
console.error("\nProject key is required.\n");
|
|
364
|
+
process.exit(1);
|
|
365
|
+
}
|
|
366
|
+
provider = await prompt("Provider (jira/linear/github/shortcut) [jira]: ") || "jira";
|
|
367
|
+
}
|
|
368
|
+
// ── Step 3: Check for Anthropic key ──────────────────────────────────
|
|
274
369
|
let anthropicKey = existingProject?.anthropic_key;
|
|
275
370
|
if (!anthropicKey) {
|
|
276
371
|
try {
|
|
@@ -280,23 +375,41 @@ async function init() {
|
|
|
280
375
|
// No Anthropic key yet — skip
|
|
281
376
|
}
|
|
282
377
|
}
|
|
283
|
-
//
|
|
378
|
+
// ── Step 4: Write .devto.json (project config) ──────────────────────
|
|
379
|
+
(0, config_1.writeProjectJson)({
|
|
380
|
+
workspaceUrl,
|
|
381
|
+
projectKey,
|
|
382
|
+
provider,
|
|
383
|
+
workspaceId,
|
|
384
|
+
});
|
|
385
|
+
console.log("\nCreated .devto.json");
|
|
386
|
+
// Ensure .devto.json is gitignored
|
|
387
|
+
ensureGitignore(".devto.json");
|
|
388
|
+
// ── Step 5: Write .devto/config.json (credentials) ──────────────────
|
|
284
389
|
(0, config_1.writeProjectConfig)({
|
|
285
390
|
api_key: apiKey,
|
|
286
391
|
api_url: apiUrl,
|
|
287
392
|
anthropic_key: anthropicKey,
|
|
288
|
-
workspace_id:
|
|
393
|
+
workspace_id: workspaceId,
|
|
289
394
|
});
|
|
290
395
|
// Ensure .devto/ is gitignored
|
|
291
|
-
ensureGitignore();
|
|
292
|
-
console.log("
|
|
293
|
-
//
|
|
396
|
+
ensureGitignore(".devto/");
|
|
397
|
+
console.log("Created .devto/config.json");
|
|
398
|
+
// ── Step 6: Register in ~/.devto/projects.json ──────────────────────
|
|
399
|
+
(0, config_1.registerProject)({
|
|
400
|
+
path: process.cwd(),
|
|
401
|
+
workspaceUrl,
|
|
402
|
+
projectKey,
|
|
403
|
+
provider,
|
|
404
|
+
});
|
|
405
|
+
console.log("Registered in ~/.devto/projects.json");
|
|
406
|
+
// ── Step 7: Write .mcp.json (Claude Code config) ────────────────────
|
|
294
407
|
const isWindows = process.platform === "win32";
|
|
295
408
|
const envObj = { DEVTO_API_KEY: apiKey };
|
|
296
409
|
if (anthropicKey)
|
|
297
410
|
envObj.DEVTO_ANTHROPIC_KEY = anthropicKey;
|
|
298
|
-
if (
|
|
299
|
-
envObj.DEVTO_WORKSPACE_ID =
|
|
411
|
+
if (workspaceId)
|
|
412
|
+
envObj.DEVTO_WORKSPACE_ID = workspaceId;
|
|
300
413
|
const mcpServerConfig = {
|
|
301
414
|
command: isWindows ? "cmd" : "npx",
|
|
302
415
|
args: isWindows ? ["/c", "npx", "-y", "devto-mcp"] : ["-y", "devto-mcp"],
|
|
@@ -304,7 +417,6 @@ async function init() {
|
|
|
304
417
|
};
|
|
305
418
|
const mcpJsonPath = path.join(process.cwd(), ".mcp.json");
|
|
306
419
|
let mcpConfig = {};
|
|
307
|
-
// Read existing .mcp.json if present
|
|
308
420
|
if (fs.existsSync(mcpJsonPath)) {
|
|
309
421
|
try {
|
|
310
422
|
mcpConfig = JSON.parse(fs.readFileSync(mcpJsonPath, "utf-8"));
|
|
@@ -317,7 +429,7 @@ async function init() {
|
|
|
317
429
|
mcpConfig.mcpServers = {};
|
|
318
430
|
mcpConfig.mcpServers.devto = mcpServerConfig;
|
|
319
431
|
fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2));
|
|
320
|
-
console.log("MCP config written to .mcp.json
|
|
432
|
+
console.log("MCP config written to .mcp.json");
|
|
321
433
|
// Also remove any user-level devto MCP config to avoid conflicts
|
|
322
434
|
try {
|
|
323
435
|
const { execSync } = require("child_process");
|
|
@@ -326,8 +438,11 @@ async function init() {
|
|
|
326
438
|
catch {
|
|
327
439
|
// Not registered at user level — fine
|
|
328
440
|
}
|
|
329
|
-
console.log(`\
|
|
330
|
-
console.log(`
|
|
441
|
+
console.log(`\n── Project linked ──────────────────────────────`);
|
|
442
|
+
console.log(`Workspace: ${workspaceUrl}`);
|
|
443
|
+
console.log(`Project: ${projectKey}`);
|
|
444
|
+
console.log(`Provider: ${provider}`);
|
|
445
|
+
console.log(`API key: ${apiKey.slice(0, 12)}...`);
|
|
331
446
|
if (!anthropicKey) {
|
|
332
447
|
console.log("\nNote: Anthropic API key not configured.");
|
|
333
448
|
console.log(" AI plan generation (create_plan) requires an Anthropic key.");
|
|
@@ -337,6 +452,54 @@ async function init() {
|
|
|
337
452
|
}
|
|
338
453
|
console.log("\nRestart Claude Code to pick up the changes.\n");
|
|
339
454
|
}
|
|
455
|
+
async function unlink() {
|
|
456
|
+
console.log("\nDevTo Unlink — Remove this project from DevTo\n");
|
|
457
|
+
const projectJson = (0, config_1.findProjectJson)(process.cwd());
|
|
458
|
+
const devtoJsonPath = path.join(process.cwd(), ".devto.json");
|
|
459
|
+
const devtoConfigDir = path.join(process.cwd(), ".devto");
|
|
460
|
+
if (!projectJson && !fs.existsSync(devtoJsonPath) && !fs.existsSync(devtoConfigDir)) {
|
|
461
|
+
console.log("This project is not linked to DevTo.\n");
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
const confirm = await prompt("Remove DevTo configuration from this project? (y/n): ");
|
|
465
|
+
if (confirm.toLowerCase() !== "y" && confirm.toLowerCase() !== "yes") {
|
|
466
|
+
console.log("Cancelled.\n");
|
|
467
|
+
return;
|
|
468
|
+
}
|
|
469
|
+
// Remove .devto.json
|
|
470
|
+
if (fs.existsSync(devtoJsonPath)) {
|
|
471
|
+
fs.unlinkSync(devtoJsonPath);
|
|
472
|
+
console.log("Removed .devto.json");
|
|
473
|
+
}
|
|
474
|
+
// Remove .devto/ directory
|
|
475
|
+
if (fs.existsSync(devtoConfigDir)) {
|
|
476
|
+
fs.rmSync(devtoConfigDir, { recursive: true, force: true });
|
|
477
|
+
console.log("Removed .devto/");
|
|
478
|
+
}
|
|
479
|
+
// Remove devto entry from .mcp.json
|
|
480
|
+
const mcpJsonPath = path.join(process.cwd(), ".mcp.json");
|
|
481
|
+
if (fs.existsSync(mcpJsonPath)) {
|
|
482
|
+
try {
|
|
483
|
+
const raw = fs.readFileSync(mcpJsonPath, "utf-8");
|
|
484
|
+
const mcpConfig = JSON.parse(raw);
|
|
485
|
+
if (mcpConfig.mcpServers?.devto) {
|
|
486
|
+
delete mcpConfig.mcpServers.devto;
|
|
487
|
+
fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2));
|
|
488
|
+
console.log("Removed devto from .mcp.json");
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
catch {
|
|
492
|
+
// Skip corrupt config
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
// Unregister from ~/.devto/projects.json
|
|
496
|
+
const removed = (0, config_1.unregisterProject)(process.cwd());
|
|
497
|
+
if (removed) {
|
|
498
|
+
console.log("Removed from ~/.devto/projects.json");
|
|
499
|
+
}
|
|
500
|
+
console.log("\nProject unlinked. Global credentials (~/.devto/config.json) are untouched.");
|
|
501
|
+
console.log("Restart Claude Code to apply changes.\n");
|
|
502
|
+
}
|
|
340
503
|
async function promptForApiKey() {
|
|
341
504
|
const apiKey = await prompt("Paste your API key: ", true);
|
|
342
505
|
if (!apiKey || !apiKey.startsWith("devto_")) {
|
|
@@ -345,28 +508,34 @@ async function promptForApiKey() {
|
|
|
345
508
|
}
|
|
346
509
|
return apiKey;
|
|
347
510
|
}
|
|
348
|
-
function ensureGitignore() {
|
|
511
|
+
function ensureGitignore(entry) {
|
|
349
512
|
const gitignorePath = path.join(process.cwd(), ".gitignore");
|
|
350
|
-
const entry = ".devto/";
|
|
351
513
|
try {
|
|
352
514
|
if (fs.existsSync(gitignorePath)) {
|
|
353
515
|
const content = fs.readFileSync(gitignorePath, "utf-8");
|
|
354
516
|
if (!content.includes(entry)) {
|
|
355
|
-
|
|
517
|
+
const label = entry === ".devto.json" ? "DevTo project config" : "DevTo credentials (contains API keys)";
|
|
518
|
+
fs.appendFileSync(gitignorePath, `\n# ${label}\n${entry}\n`);
|
|
356
519
|
}
|
|
357
520
|
}
|
|
358
521
|
else {
|
|
359
|
-
|
|
522
|
+
const label = entry === ".devto.json" ? "DevTo project config" : "DevTo credentials (contains API keys)";
|
|
523
|
+
fs.writeFileSync(gitignorePath, `# ${label}\n${entry}\n`);
|
|
360
524
|
}
|
|
361
525
|
}
|
|
362
526
|
catch {
|
|
363
|
-
console.log(
|
|
527
|
+
console.log(` Warning: Could not update .gitignore — make sure ${entry} is not committed.`);
|
|
364
528
|
}
|
|
365
529
|
}
|
|
366
530
|
async function doctor() {
|
|
367
531
|
console.log("\nDevTo Doctor — Connection Diagnostics\n");
|
|
532
|
+
const projectJson = requireProjectJson();
|
|
368
533
|
const resolved = (0, config_1.resolveConfig)();
|
|
369
534
|
const config = resolved?.config ?? null;
|
|
535
|
+
process.stdout.write("Project config (.devto.json) ... ");
|
|
536
|
+
console.log(`OK (${path.join(projectJson.dir, ".devto.json")})`);
|
|
537
|
+
console.log(` Workspace: ${projectJson.config.workspaceUrl}`);
|
|
538
|
+
console.log(` Project: ${projectJson.config.projectKey} (${projectJson.config.provider})`);
|
|
370
539
|
// 1. Check DevTo API reachable
|
|
371
540
|
process.stdout.write("DevTo API reachable ... ");
|
|
372
541
|
const apiUrl = config?.api_url ?? (0, config_1.getApiUrl)();
|
|
@@ -374,7 +543,7 @@ async function doctor() {
|
|
|
374
543
|
const res = await fetch(`${apiUrl}/api/v1/status`, {
|
|
375
544
|
headers: {
|
|
376
545
|
...(config?.api_key ? { Authorization: `Bearer ${config.api_key}` } : {}),
|
|
377
|
-
"X-DevTo-Version":
|
|
546
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
378
547
|
},
|
|
379
548
|
});
|
|
380
549
|
if (res.ok) {
|
|
@@ -400,7 +569,7 @@ async function doctor() {
|
|
|
400
569
|
const res = await fetch(`${apiUrl}/api/v1/status`, {
|
|
401
570
|
headers: {
|
|
402
571
|
Authorization: `Bearer ${config.api_key}`,
|
|
403
|
-
"X-DevTo-Version":
|
|
572
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
404
573
|
},
|
|
405
574
|
});
|
|
406
575
|
if (res.status === 401) {
|
|
@@ -428,7 +597,7 @@ async function doctor() {
|
|
|
428
597
|
const res = await fetch(`${apiUrl}/api/v1/status`, {
|
|
429
598
|
headers: {
|
|
430
599
|
Authorization: `Bearer ${config.api_key}`,
|
|
431
|
-
"X-DevTo-Version":
|
|
600
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
432
601
|
},
|
|
433
602
|
});
|
|
434
603
|
if (res.ok) {
|
|
@@ -486,6 +655,7 @@ async function doctor() {
|
|
|
486
655
|
}
|
|
487
656
|
async function sync() {
|
|
488
657
|
console.log("\nDevTo Sync — Workspace Configuration Discovery\n");
|
|
658
|
+
requireProjectJson();
|
|
489
659
|
const config = (0, config_1.readConfig)();
|
|
490
660
|
if (!config?.api_key) {
|
|
491
661
|
console.log("Not logged in. Run `devto login` first.\n");
|
|
@@ -499,7 +669,7 @@ async function sync() {
|
|
|
499
669
|
headers: {
|
|
500
670
|
"Content-Type": "application/json",
|
|
501
671
|
Authorization: `Bearer ${config.api_key}`,
|
|
502
|
-
"X-DevTo-Version":
|
|
672
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
503
673
|
},
|
|
504
674
|
});
|
|
505
675
|
if (!res.ok) {
|
|
@@ -548,64 +718,6 @@ async function configSet() {
|
|
|
548
718
|
console.log(`Key: ${value.slice(0, 12)}...`);
|
|
549
719
|
console.log("Run `devto init` to embed it in your project's MCP config.\n");
|
|
550
720
|
}
|
|
551
|
-
async function uninstall() {
|
|
552
|
-
const purge = process.argv[3] === "--purge";
|
|
553
|
-
if (purge) {
|
|
554
|
-
console.log("\nDevTo Uninstall (full purge)\n");
|
|
555
|
-
const confirm = await prompt("This will remove DevTo MCP server AND delete global credentials (~/.devto). Continue? (y/n): ");
|
|
556
|
-
if (confirm.toLowerCase() !== "y" && confirm.toLowerCase() !== "yes") {
|
|
557
|
-
console.log("Cancelled.\n");
|
|
558
|
-
return;
|
|
559
|
-
}
|
|
560
|
-
}
|
|
561
|
-
else {
|
|
562
|
-
console.log("\nDevTo Uninstall\n");
|
|
563
|
-
const confirm = await prompt("Remove DevTo MCP server from Claude Code? (y/n): ");
|
|
564
|
-
if (confirm.toLowerCase() !== "y" && confirm.toLowerCase() !== "yes") {
|
|
565
|
-
console.log("Cancelled.\n");
|
|
566
|
-
return;
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
// Remove via Claude CLI
|
|
570
|
-
const { spawnSync } = require("child_process");
|
|
571
|
-
try {
|
|
572
|
-
spawnSync("claude", ["mcp", "remove", "devto"], { stdio: "inherit", shell: true });
|
|
573
|
-
console.log("Removed DevTo MCP server from Claude Code.");
|
|
574
|
-
}
|
|
575
|
-
catch {
|
|
576
|
-
console.log("Could not remove via Claude CLI (may not be registered).");
|
|
577
|
-
}
|
|
578
|
-
// Also clean up .mcp.json if it has a devto entry (legacy)
|
|
579
|
-
const mcpJsonPath = path.join(process.cwd(), ".mcp.json");
|
|
580
|
-
if (fs.existsSync(mcpJsonPath)) {
|
|
581
|
-
try {
|
|
582
|
-
const raw = fs.readFileSync(mcpJsonPath, "utf-8");
|
|
583
|
-
const mcpConfig = JSON.parse(raw);
|
|
584
|
-
if (mcpConfig.mcpServers?.devto) {
|
|
585
|
-
delete mcpConfig.mcpServers.devto;
|
|
586
|
-
fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2));
|
|
587
|
-
console.log(`Also removed devto from: ${mcpJsonPath}`);
|
|
588
|
-
}
|
|
589
|
-
}
|
|
590
|
-
catch {
|
|
591
|
-
// Skip corrupt config
|
|
592
|
-
}
|
|
593
|
-
}
|
|
594
|
-
// Only with --purge: remove global ~/.devto config
|
|
595
|
-
if (purge) {
|
|
596
|
-
const configDir = path.join(os.homedir(), ".devto");
|
|
597
|
-
if (fs.existsSync(configDir)) {
|
|
598
|
-
fs.rmSync(configDir, { recursive: true, force: true });
|
|
599
|
-
console.log("Removed ~/.devto global credentials.");
|
|
600
|
-
}
|
|
601
|
-
console.log("\nFull purge complete. To finish, run: npm uninstall -g devto-mcp\n");
|
|
602
|
-
}
|
|
603
|
-
else {
|
|
604
|
-
console.log("\nDevTo removed from this project.");
|
|
605
|
-
console.log("Your global credentials (~/.devto) are untouched — other projects still work.");
|
|
606
|
-
console.log("Restart Claude Code to apply changes.\n");
|
|
607
|
-
}
|
|
608
|
-
}
|
|
609
721
|
function printHelp() {
|
|
610
722
|
console.log(`
|
|
611
723
|
DevTo CLI — AI-powered work management
|
|
@@ -613,26 +725,26 @@ DevTo CLI — AI-powered work management
|
|
|
613
725
|
Usage:
|
|
614
726
|
devto login Authenticate with your DevTo API key
|
|
615
727
|
devto logout Clear global credentials (~/.devto)
|
|
616
|
-
devto status Show connection status
|
|
617
|
-
devto init
|
|
728
|
+
devto status Show connection status and active project
|
|
729
|
+
devto init Link this project to DevTo
|
|
730
|
+
devto unlink Unlink this project from DevTo
|
|
618
731
|
devto doctor Test full connection chain
|
|
619
732
|
devto sync Re-sync workspace configuration
|
|
620
733
|
devto verbose Toggle verbose mode
|
|
621
734
|
devto config set anthropic-key <key> Store Anthropic API key
|
|
622
|
-
devto uninstall Remove DevTo from this project
|
|
623
|
-
devto uninstall --purge Remove from project + delete global credentials
|
|
624
735
|
devto help Show this help message
|
|
625
736
|
devto --version Show installed version
|
|
626
737
|
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
{ "mcpServers": { "devto": { "command": "cmd", "args": ["/c", "npx", "-y", "devto-mcp"], "env": { "DEVTO_API_KEY": "your-key" } } } }
|
|
738
|
+
Setup:
|
|
739
|
+
1. npm install -g devto-mcp Install globally (once)
|
|
740
|
+
2. devto login Save your API key
|
|
741
|
+
3. devto init Link project, create .devto.json + .mcp.json
|
|
742
|
+
4. Restart Claude Code
|
|
633
743
|
|
|
634
|
-
|
|
635
|
-
|
|
744
|
+
Per-project config (.devto.json):
|
|
745
|
+
Created by \`devto init\`. Contains workspace URL, project key, and provider.
|
|
746
|
+
Add .devto.json to .gitignore (devto init does this automatically).
|
|
747
|
+
To disconnect a project: \`devto unlink\`
|
|
636
748
|
`);
|
|
637
749
|
}
|
|
638
750
|
async function main() {
|
|
@@ -653,6 +765,10 @@ async function main() {
|
|
|
653
765
|
case "--init":
|
|
654
766
|
await init();
|
|
655
767
|
break;
|
|
768
|
+
case "unlink":
|
|
769
|
+
case "--unlink":
|
|
770
|
+
await unlink();
|
|
771
|
+
break;
|
|
656
772
|
case "doctor":
|
|
657
773
|
case "--doctor":
|
|
658
774
|
await doctor();
|
|
@@ -669,13 +785,9 @@ async function main() {
|
|
|
669
785
|
case "--config":
|
|
670
786
|
await configSet();
|
|
671
787
|
break;
|
|
672
|
-
case "uninstall":
|
|
673
|
-
case "--uninstall":
|
|
674
|
-
await uninstall();
|
|
675
|
-
break;
|
|
676
788
|
case "--version":
|
|
677
789
|
case "-v":
|
|
678
|
-
console.log(`devto-mcp v${
|
|
790
|
+
console.log(`devto-mcp v${config_1.VERSION}`);
|
|
679
791
|
break;
|
|
680
792
|
case "help":
|
|
681
793
|
case "--help":
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,qBAAa,aAAc,SAAQ,KAAK;IAG7B,IAAI,CAAC,EAAE,MAAM;IACb,MAAM,CAAC,EAAE,MAAM;gBAFtB,OAAO,EAAE,MAAM,EACR,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,MAAM,CAAC,EAAE,MAAM,YAAA;CAKzB;AAED,wBAAsB,OAAO,CAAC,CAAC,EAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,CAAC,CAAC,CAwCZ"}
|
package/dist/client.js
CHANGED
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DevToApiError = void 0;
|
|
4
4
|
exports.callApi = callApi;
|
|
5
5
|
const config_1 = require("./config");
|
|
6
|
-
const DEVTO_VERSION = "0.1.0";
|
|
7
6
|
class DevToApiError extends Error {
|
|
8
7
|
code;
|
|
9
8
|
status;
|
|
@@ -18,14 +17,18 @@ exports.DevToApiError = DevToApiError;
|
|
|
18
17
|
async function callApi(method, path, body) {
|
|
19
18
|
const apiKey = (0, config_1.getApiKey)();
|
|
20
19
|
const apiUrl = (0, config_1.getApiUrl)();
|
|
21
|
-
|
|
20
|
+
// Strict: workspace comes from .devto.json only — no tenant-default fallback
|
|
21
|
+
const projectJson = (0, config_1.findProjectJson)();
|
|
22
|
+
if (!projectJson) {
|
|
23
|
+
throw new DevToApiError("No DevTo project linked in this directory. Run `devto init` in your project root to get started.", "NO_PROJECT_LINKED");
|
|
24
|
+
}
|
|
22
25
|
const headers = {
|
|
23
26
|
"Content-Type": "application/json",
|
|
24
27
|
Authorization: `Bearer ${apiKey}`,
|
|
25
|
-
"X-DevTo-Version":
|
|
28
|
+
"X-DevTo-Version": config_1.VERSION,
|
|
26
29
|
};
|
|
27
|
-
if (workspaceId) {
|
|
28
|
-
headers["X-DevTo-Workspace"] = workspaceId;
|
|
30
|
+
if (projectJson.config.workspaceId) {
|
|
31
|
+
headers["X-DevTo-Workspace"] = projectJson.config.workspaceId;
|
|
29
32
|
}
|
|
30
33
|
const res = await fetch(`${apiUrl}${path}`, {
|
|
31
34
|
method,
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAaA,0BA4CC;AAzDD,qCAA0E;AAE1E,MAAa,aAAc,SAAQ,KAAK;IAG7B;IACA;IAHT,YACE,OAAe,EACR,IAAa,EACb,MAAe;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAS;QACb,WAAM,GAAN,MAAM,CAAS;QAGtB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AATD,sCASC;AAEM,KAAK,UAAU,OAAO,CAC3B,MAAc,EACd,IAAY,EACZ,IAAc;IAEd,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAE3B,6EAA6E;IAC7E,MAAM,WAAW,GAAG,IAAA,wBAAe,GAAE,CAAC;IACtC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,aAAa,CACrB,kGAAkG,EAClG,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;QAClC,aAAa,EAAE,UAAU,MAAM,EAAE;QACjC,iBAAiB,EAAE,gBAAO;KAC3B,CAAC;IAEF,IAAI,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACnC,OAAO,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC;IAChE,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,EAAE;QAC1C,MAAM;QACN,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KAC9C,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,aAAa,CACpB,IAA6B,CAAC,OAAO,IAAI,mBAAmB,GAAG,CAAC,MAAM,EAAE,EACxE,IAA0B,CAAC,IAAI,EAChC,GAAG,CAAC,MAAM,CACX,CAAC;IACJ,CAAC;IAED,OAAO,IAAS,CAAC;AACnB,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare const VERSION: string;
|
|
1
2
|
export type DevToConfig = {
|
|
2
3
|
api_key: string;
|
|
3
4
|
api_url: string;
|
|
@@ -5,6 +6,48 @@ export type DevToConfig = {
|
|
|
5
6
|
workspace_id?: string;
|
|
6
7
|
verbose?: boolean;
|
|
7
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* Per-project config stored as .devto.json in the project root.
|
|
11
|
+
* Contains workspace binding — NOT auth credentials.
|
|
12
|
+
*/
|
|
13
|
+
export type ProjectJsonConfig = {
|
|
14
|
+
workspaceUrl: string;
|
|
15
|
+
projectKey: string;
|
|
16
|
+
provider: string;
|
|
17
|
+
workspaceId?: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Entry in ~/.devto/projects.json registry.
|
|
21
|
+
*/
|
|
22
|
+
export type ProjectRegistryEntry = {
|
|
23
|
+
path: string;
|
|
24
|
+
workspaceUrl: string;
|
|
25
|
+
projectKey: string;
|
|
26
|
+
provider: string;
|
|
27
|
+
linkedAt: string;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Walk up the directory tree from startDir looking for .devto.json.
|
|
31
|
+
* Returns the parsed config and the directory where it was found, or null.
|
|
32
|
+
*/
|
|
33
|
+
export declare function findProjectJson(startDir?: string): {
|
|
34
|
+
config: ProjectJsonConfig;
|
|
35
|
+
dir: string;
|
|
36
|
+
} | null;
|
|
37
|
+
/**
|
|
38
|
+
* Write .devto.json to the given directory (defaults to cwd).
|
|
39
|
+
*/
|
|
40
|
+
export declare function writeProjectJson(config: ProjectJsonConfig, dir?: string): void;
|
|
41
|
+
export declare function readProjectsRegistry(): ProjectRegistryEntry[];
|
|
42
|
+
/**
|
|
43
|
+
* Register a project directory in ~/.devto/projects.json.
|
|
44
|
+
* Updates existing entry if the path already exists.
|
|
45
|
+
*/
|
|
46
|
+
export declare function registerProject(entry: Omit<ProjectRegistryEntry, "linkedAt">): void;
|
|
47
|
+
/**
|
|
48
|
+
* Remove a project directory from ~/.devto/projects.json.
|
|
49
|
+
*/
|
|
50
|
+
export declare function unregisterProject(dir?: string): boolean;
|
|
8
51
|
export declare function readProjectConfig(): DevToConfig | null;
|
|
9
52
|
export declare function writeProjectConfig(config: DevToConfig): void;
|
|
10
53
|
/**
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,EAAE,MAA2C,CAAC;AAElE,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAWF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgCpG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAa9E;AAID,wBAAgB,oBAAoB,IAAI,oBAAoB,EAAE,CAS7D;AASD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,GAAG,IAAI,CAkBnF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CASvD;AASD,wBAAgB,iBAAiB,IAAI,WAAW,GAAG,IAAI,CAgBtD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAK5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAA;CAAE,GAAG,IAAI,CAM5F;AAID,wBAAgB,UAAU,IAAI,WAAW,GAAG,IAAI,CAe/C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAKrD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAYlC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAUxC;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,SAAS,IAAI,OAAO,CAGnC;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAIjD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAIjD"}
|
package/dist/config.js
CHANGED
|
@@ -33,6 +33,12 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.VERSION = void 0;
|
|
37
|
+
exports.findProjectJson = findProjectJson;
|
|
38
|
+
exports.writeProjectJson = writeProjectJson;
|
|
39
|
+
exports.readProjectsRegistry = readProjectsRegistry;
|
|
40
|
+
exports.registerProject = registerProject;
|
|
41
|
+
exports.unregisterProject = unregisterProject;
|
|
36
42
|
exports.readProjectConfig = readProjectConfig;
|
|
37
43
|
exports.writeProjectConfig = writeProjectConfig;
|
|
38
44
|
exports.resolveConfig = resolveConfig;
|
|
@@ -48,12 +54,123 @@ exports.setAnthropicKey = setAnthropicKey;
|
|
|
48
54
|
const fs = __importStar(require("fs"));
|
|
49
55
|
const path = __importStar(require("path"));
|
|
50
56
|
const os = __importStar(require("os"));
|
|
57
|
+
// Single source of truth — read from package.json at build time
|
|
58
|
+
exports.VERSION = require("../package.json").version;
|
|
51
59
|
const CONFIG_DIR = path.join(os.homedir(), ".devto");
|
|
52
60
|
const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
|
|
61
|
+
const PROJECTS_FILE = path.join(CONFIG_DIR, "projects.json");
|
|
53
62
|
const DEFAULT_API_URL = "https://api.devto.ai";
|
|
54
|
-
// ─── Per-project
|
|
63
|
+
// ─── Per-project .devto.json (workspace binding) ────────────────────────────
|
|
64
|
+
// Walk up from cwd() looking for .devto.json.
|
|
65
|
+
// Contains workspaceUrl, projectKey, provider — not credentials.
|
|
66
|
+
/**
|
|
67
|
+
* Walk up the directory tree from startDir looking for .devto.json.
|
|
68
|
+
* Returns the parsed config and the directory where it was found, or null.
|
|
69
|
+
*/
|
|
70
|
+
function findProjectJson(startDir) {
|
|
71
|
+
let dir = startDir ?? process.cwd();
|
|
72
|
+
// Safety: limit traversal depth
|
|
73
|
+
for (let i = 0; i < 50; i++) {
|
|
74
|
+
const candidate = path.join(dir, ".devto.json");
|
|
75
|
+
try {
|
|
76
|
+
if (fs.existsSync(candidate)) {
|
|
77
|
+
const raw = fs.readFileSync(candidate, "utf-8");
|
|
78
|
+
const parsed = JSON.parse(raw);
|
|
79
|
+
if (parsed.workspaceUrl && parsed.projectKey && parsed.provider) {
|
|
80
|
+
return {
|
|
81
|
+
config: {
|
|
82
|
+
workspaceUrl: parsed.workspaceUrl,
|
|
83
|
+
projectKey: parsed.projectKey,
|
|
84
|
+
provider: parsed.provider,
|
|
85
|
+
workspaceId: parsed.workspaceId,
|
|
86
|
+
},
|
|
87
|
+
dir,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Skip unreadable files
|
|
94
|
+
}
|
|
95
|
+
const parent = path.dirname(dir);
|
|
96
|
+
if (parent === dir)
|
|
97
|
+
break; // reached filesystem root
|
|
98
|
+
dir = parent;
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Write .devto.json to the given directory (defaults to cwd).
|
|
104
|
+
*/
|
|
105
|
+
function writeProjectJson(config, dir) {
|
|
106
|
+
const targetDir = dir ?? process.cwd();
|
|
107
|
+
const filePath = path.join(targetDir, ".devto.json");
|
|
108
|
+
// Write only the user-facing fields + internal workspaceId
|
|
109
|
+
const data = {
|
|
110
|
+
workspaceUrl: config.workspaceUrl,
|
|
111
|
+
projectKey: config.projectKey,
|
|
112
|
+
provider: config.provider,
|
|
113
|
+
};
|
|
114
|
+
if (config.workspaceId) {
|
|
115
|
+
data.workspaceId = config.workspaceId;
|
|
116
|
+
}
|
|
117
|
+
fs.writeFileSync(filePath, JSON.stringify(data, null, 2));
|
|
118
|
+
}
|
|
119
|
+
// ─── Projects registry (~/.devto/projects.json) ────────────────────────────
|
|
120
|
+
function readProjectsRegistry() {
|
|
121
|
+
try {
|
|
122
|
+
if (!fs.existsSync(PROJECTS_FILE))
|
|
123
|
+
return [];
|
|
124
|
+
const raw = fs.readFileSync(PROJECTS_FILE, "utf-8");
|
|
125
|
+
const parsed = JSON.parse(raw);
|
|
126
|
+
return Array.isArray(parsed.projects) ? parsed.projects : [];
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return [];
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function writeProjectsRegistry(projects) {
|
|
133
|
+
if (!fs.existsSync(CONFIG_DIR)) {
|
|
134
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });
|
|
135
|
+
}
|
|
136
|
+
fs.writeFileSync(PROJECTS_FILE, JSON.stringify({ projects }, null, 2));
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Register a project directory in ~/.devto/projects.json.
|
|
140
|
+
* Updates existing entry if the path already exists.
|
|
141
|
+
*/
|
|
142
|
+
function registerProject(entry) {
|
|
143
|
+
const projects = readProjectsRegistry();
|
|
144
|
+
const normalized = path.resolve(entry.path);
|
|
145
|
+
const idx = projects.findIndex((p) => path.resolve(p.path) === normalized);
|
|
146
|
+
const full = {
|
|
147
|
+
...entry,
|
|
148
|
+
path: normalized,
|
|
149
|
+
linkedAt: new Date().toISOString(),
|
|
150
|
+
};
|
|
151
|
+
if (idx >= 0) {
|
|
152
|
+
projects[idx] = full;
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
projects.push(full);
|
|
156
|
+
}
|
|
157
|
+
writeProjectsRegistry(projects);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Remove a project directory from ~/.devto/projects.json.
|
|
161
|
+
*/
|
|
162
|
+
function unregisterProject(dir) {
|
|
163
|
+
const projects = readProjectsRegistry();
|
|
164
|
+
const normalized = path.resolve(dir ?? process.cwd());
|
|
165
|
+
const filtered = projects.filter((p) => path.resolve(p.path) !== normalized);
|
|
166
|
+
if (filtered.length === projects.length)
|
|
167
|
+
return false; // not found
|
|
168
|
+
writeProjectsRegistry(filtered);
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
// ─── Per-project .devto/config.json (legacy + credentials) ─────────────────
|
|
55
172
|
// Stored in .devto/config.json inside the project directory.
|
|
56
|
-
// Takes precedence over
|
|
173
|
+
// Contains API key and credentials. Takes precedence over global config.
|
|
57
174
|
const PROJECT_CONFIG_DIR = path.join(process.cwd(), ".devto");
|
|
58
175
|
const PROJECT_CONFIG_FILE = path.join(PROJECT_CONFIG_DIR, "config.json");
|
|
59
176
|
function readProjectConfig() {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,6 @@ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
|
7
7
|
const config_1 = require("./config");
|
|
8
8
|
const client_1 = require("./client");
|
|
9
9
|
const tools_1 = require("./tools");
|
|
10
|
-
const CURRENT_VERSION = "0.1.9";
|
|
11
10
|
// Auto-update check (non-blocking)
|
|
12
11
|
(async () => {
|
|
13
12
|
try {
|
|
@@ -16,7 +15,7 @@ const CURRENT_VERSION = "0.1.9";
|
|
|
16
15
|
});
|
|
17
16
|
if (res.ok) {
|
|
18
17
|
const data = (await res.json());
|
|
19
|
-
if (data.version && data.version !==
|
|
18
|
+
if (data.version && data.version !== config_1.VERSION) {
|
|
20
19
|
console.error(`[devto-mcp] DevTo v${data.version} is available. Run npm update -g devto-mcp to update.`);
|
|
21
20
|
}
|
|
22
21
|
}
|
|
@@ -33,6 +32,15 @@ catch (err) {
|
|
|
33
32
|
console.error(`[devto-mcp] ${err instanceof Error ? err.message : String(err)}`);
|
|
34
33
|
process.exit(1);
|
|
35
34
|
}
|
|
35
|
+
// Log active project config if found
|
|
36
|
+
const _projectJson = (0, config_1.findProjectJson)();
|
|
37
|
+
if (_projectJson) {
|
|
38
|
+
console.error(`[devto-mcp] Project: ${_projectJson.config.projectKey} @ ${_projectJson.config.workspaceUrl} (${_projectJson.dir})`);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
console.error("[devto-mcp] Warning: No .devto.json found. Tools will require `devto init` before use.");
|
|
42
|
+
}
|
|
43
|
+
const NO_PROJECT_MESSAGE = "No DevTo project linked in this directory. Run `devto init` in your project root to get started.";
|
|
36
44
|
const INSTRUCTIONS = `DevTo is an AI work manager (devto.ai) — NOT the Dev.to blogging platform. When the user mentions "devto", tasks, plans, epics, or project work, they mean this tool.
|
|
37
45
|
|
|
38
46
|
DevTo connects to the developer's project tracker (Jira, Linear, etc.) and manages work items through these MCP tools. Use them whenever the user asks about tasks, plans, sprints, or project status.
|
|
@@ -54,7 +62,7 @@ DevTo connects to the developer's project tracker (Jira, Linear, etc.) and manag
|
|
|
54
62
|
- get_status — Aggregate project metrics and current sprint.`;
|
|
55
63
|
const server = new index_js_1.Server({
|
|
56
64
|
name: "devto",
|
|
57
|
-
version:
|
|
65
|
+
version: config_1.VERSION,
|
|
58
66
|
}, {
|
|
59
67
|
capabilities: {
|
|
60
68
|
tools: {},
|
|
@@ -192,6 +200,13 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({
|
|
|
192
200
|
// ─── Tool handler ────────────────────────────────────────────────────────────
|
|
193
201
|
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
194
202
|
const { name, arguments: args } = request.params;
|
|
203
|
+
// Strict project-context enforcement: require .devto.json for all tools
|
|
204
|
+
if (!(0, config_1.findProjectJson)()) {
|
|
205
|
+
return {
|
|
206
|
+
content: [{ type: "text", text: NO_PROJECT_MESSAGE }],
|
|
207
|
+
isError: true,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
195
210
|
try {
|
|
196
211
|
let result;
|
|
197
212
|
switch (name) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,wEAAmE;AACnE,wEAAiF;AACjF,iEAK4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|