@bulkpublishing/mcp-server 1.0.0 → 1.0.2
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/dist/cli/init.d.ts +13 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +157 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +49 -44
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Init — Auto-configure MCP clients
|
|
3
|
+
*
|
|
4
|
+
* Detects installed MCP clients and safely merges the
|
|
5
|
+
* bulkpublishing server entry into their config files.
|
|
6
|
+
*
|
|
7
|
+
* Usage: npx @bulkpublishing/mcp-server --init --key YOUR_API_KEY
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Run the --init flow: detect clients, merge config, report results.
|
|
11
|
+
*/
|
|
12
|
+
export declare function runInit(apiKey: string): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAoDH;;GAEG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwH3D"}
|
package/dist/cli/init.js
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Init — Auto-configure MCP clients
|
|
3
|
+
*
|
|
4
|
+
* Detects installed MCP clients and safely merges the
|
|
5
|
+
* bulkpublishing server entry into their config files.
|
|
6
|
+
*
|
|
7
|
+
* Usage: npx @bulkpublishing/mcp-server --init --key YOUR_API_KEY
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
|
|
10
|
+
import { homedir } from 'os';
|
|
11
|
+
import { join, dirname } from 'path';
|
|
12
|
+
// Known MCP client config file locations (macOS paths, expandable later)
|
|
13
|
+
function getClients() {
|
|
14
|
+
const home = homedir();
|
|
15
|
+
return [
|
|
16
|
+
{
|
|
17
|
+
name: 'Claude Desktop',
|
|
18
|
+
configPath: join(home, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json'),
|
|
19
|
+
description: 'Anthropic Claude Desktop app',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Cursor',
|
|
23
|
+
configPath: join(home, '.cursor', 'mcp.json'),
|
|
24
|
+
description: 'Cursor AI code editor',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'Windsurf',
|
|
28
|
+
configPath: join(home, '.codeium', 'windsurf', 'mcp_config.json'),
|
|
29
|
+
description: 'Windsurf AI code editor',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'Antigravity',
|
|
33
|
+
configPath: join(home, '.gemini', 'antigravity', 'mcp_config.json'),
|
|
34
|
+
description: 'Google Antigravity AI assistant',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'VS Code',
|
|
38
|
+
configPath: join(home, '.vscode', 'mcp.json'),
|
|
39
|
+
description: 'Visual Studio Code (Copilot / Cline / Roo Code)',
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
}
|
|
43
|
+
const SERVER_ENTRY = {
|
|
44
|
+
command: 'npx',
|
|
45
|
+
args: ['-y', '@bulkpublishing/mcp-server'],
|
|
46
|
+
env: {
|
|
47
|
+
BPAI_API_KEY: '', // filled at runtime
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Run the --init flow: detect clients, merge config, report results.
|
|
52
|
+
*/
|
|
53
|
+
export async function runInit(apiKey) {
|
|
54
|
+
console.log('\n ⚡ Bulk Publishing AI — MCP Server Setup\n');
|
|
55
|
+
if (!apiKey || apiKey.length < 10) {
|
|
56
|
+
console.log(' ✗ Missing or invalid API key.');
|
|
57
|
+
console.log(' Usage: npx @bulkpublishing/mcp-server --init --key YOUR_API_KEY');
|
|
58
|
+
console.log(' Get your key at: https://bulkpublishing.ai → Settings → API Access\n');
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
// Validate UUID format — reject placeholder or prefixed keys
|
|
62
|
+
const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
63
|
+
if (!UUID_REGEX.test(apiKey)) {
|
|
64
|
+
console.log(' ✗ Invalid API key format.');
|
|
65
|
+
console.log(' Your key should be a UUID like: 64789902-8fd0-45da-80a1-6df12f08dd35');
|
|
66
|
+
console.log(' Copy your real key from: https://bulkpublishing.ai → Settings → API Access\n');
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
const clients = getClients();
|
|
70
|
+
const detected = [];
|
|
71
|
+
const configured = [];
|
|
72
|
+
const skipped = [];
|
|
73
|
+
const errors = [];
|
|
74
|
+
for (const client of clients) {
|
|
75
|
+
// Check if config file or its parent directory exists
|
|
76
|
+
const dirExists = existsSync(dirname(client.configPath));
|
|
77
|
+
const fileExists = existsSync(client.configPath);
|
|
78
|
+
if (!dirExists) {
|
|
79
|
+
// Client not installed
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
detected.push(client.name);
|
|
83
|
+
try {
|
|
84
|
+
let config = { mcpServers: {} };
|
|
85
|
+
if (fileExists) {
|
|
86
|
+
const raw = readFileSync(client.configPath, 'utf-8').trim();
|
|
87
|
+
if (raw) {
|
|
88
|
+
try {
|
|
89
|
+
config = JSON.parse(raw);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Corrupt JSON — start fresh but back up the old file
|
|
93
|
+
const backupPath = client.configPath + '.bak';
|
|
94
|
+
writeFileSync(backupPath, raw);
|
|
95
|
+
config = { mcpServers: {} };
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Ensure mcpServers key exists
|
|
100
|
+
if (!config.mcpServers) {
|
|
101
|
+
config.mcpServers = {};
|
|
102
|
+
}
|
|
103
|
+
// Check if already configured
|
|
104
|
+
if (config.mcpServers.bulkpublishing) {
|
|
105
|
+
// Update the key if different
|
|
106
|
+
const existingKey = config.mcpServers.bulkpublishing?.env?.BPAI_API_KEY;
|
|
107
|
+
if (existingKey === apiKey) {
|
|
108
|
+
skipped.push(`${client.name} (already configured)`);
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
// Update the key
|
|
112
|
+
config.mcpServers.bulkpublishing.env.BPAI_API_KEY = apiKey;
|
|
113
|
+
writeFileSync(client.configPath, JSON.stringify(config, null, 2) + '\n');
|
|
114
|
+
configured.push(`${client.name} (updated key)`);
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
// Add the entry
|
|
118
|
+
const entry = JSON.parse(JSON.stringify(SERVER_ENTRY));
|
|
119
|
+
entry.env.BPAI_API_KEY = apiKey;
|
|
120
|
+
config.mcpServers.bulkpublishing = entry;
|
|
121
|
+
// Create parent dir if config file doesn't exist yet
|
|
122
|
+
if (!fileExists) {
|
|
123
|
+
mkdirSync(dirname(client.configPath), { recursive: true });
|
|
124
|
+
}
|
|
125
|
+
writeFileSync(client.configPath, JSON.stringify(config, null, 2) + '\n');
|
|
126
|
+
configured.push(client.name);
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
errors.push(`${client.name}: ${err.message}`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// Report results
|
|
133
|
+
if (detected.length === 0) {
|
|
134
|
+
console.log(' ⚠ No MCP clients detected on this machine.');
|
|
135
|
+
console.log(' Supported clients: Claude Desktop, Cursor, Windsurf, Antigravity, VS Code');
|
|
136
|
+
console.log(' Install one first, then run this command again.\n');
|
|
137
|
+
process.exit(0);
|
|
138
|
+
}
|
|
139
|
+
console.log(` Detected ${detected.length} client${detected.length > 1 ? 's' : ''}:\n`);
|
|
140
|
+
for (const name of configured) {
|
|
141
|
+
console.log(` ✓ ${name} — configured`);
|
|
142
|
+
}
|
|
143
|
+
for (const name of skipped) {
|
|
144
|
+
console.log(` ○ ${name} — skipped`);
|
|
145
|
+
}
|
|
146
|
+
for (const msg of errors) {
|
|
147
|
+
console.log(` ✗ ${msg}`);
|
|
148
|
+
}
|
|
149
|
+
console.log('');
|
|
150
|
+
if (configured.length > 0) {
|
|
151
|
+
console.log(' Restart your MCP client to connect.\n');
|
|
152
|
+
}
|
|
153
|
+
if (errors.length > 0) {
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* Transport: stdio (standard MCP transport)
|
|
10
10
|
*
|
|
11
11
|
* Usage:
|
|
12
|
-
*
|
|
13
|
-
* npx
|
|
12
|
+
* npx @bulkpublishing/mcp-server — Start MCP server
|
|
13
|
+
* npx @bulkpublishing/mcp-server --init --key KEY — Auto-configure clients
|
|
14
14
|
*
|
|
15
15
|
* Required environment variables:
|
|
16
16
|
* BPAI_API_KEY — Your Bulk Publishing AI API key (from Settings → API Access)
|
package/dist/index.js
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* Transport: stdio (standard MCP transport)
|
|
10
10
|
*
|
|
11
11
|
* Usage:
|
|
12
|
-
*
|
|
13
|
-
* npx
|
|
12
|
+
* npx @bulkpublishing/mcp-server — Start MCP server
|
|
13
|
+
* npx @bulkpublishing/mcp-server --init --key KEY — Auto-configure clients
|
|
14
14
|
*
|
|
15
15
|
* Required environment variables:
|
|
16
16
|
* BPAI_API_KEY — Your Bulk Publishing AI API key (from Settings → API Access)
|
|
@@ -18,44 +18,55 @@
|
|
|
18
18
|
* Optional overrides:
|
|
19
19
|
* BPAI_AUTH_URL — Custom auth endpoint (default: https://bulkpublishing.ai/api/mcp-auth)
|
|
20
20
|
*/
|
|
21
|
-
import {
|
|
22
|
-
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
23
|
-
// Auth
|
|
24
|
-
import { authenticate } from './auth/validate.js';
|
|
25
|
-
// Tool registrations
|
|
26
|
-
import { registerGenerationTools } from './tools/generation.js';
|
|
27
|
-
import { registerResearchTools } from './tools/research.js';
|
|
28
|
-
import { registerWordPressTools } from './tools/wordpress.js';
|
|
29
|
-
import { registerIndexingTools } from './tools/indexing.js';
|
|
30
|
-
import { registerSEOTools } from './tools/seo.js';
|
|
31
|
-
import { registerProjectTools } from './tools/projects.js';
|
|
32
|
-
import { registerCSVTools } from './tools/csv.js';
|
|
21
|
+
import { runInit } from './cli/init.js';
|
|
33
22
|
// ============================================
|
|
34
|
-
//
|
|
23
|
+
// CLI FLAG HANDLING — check before loading server
|
|
35
24
|
// ============================================
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
//
|
|
25
|
+
const args = process.argv.slice(2);
|
|
26
|
+
if (args.includes('--init')) {
|
|
27
|
+
const keyIdx = args.indexOf('--key');
|
|
28
|
+
const apiKey = keyIdx !== -1 ? args[keyIdx + 1] : '';
|
|
29
|
+
runInit(apiKey || '').then(() => process.exit(0));
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
// Normal MCP server mode
|
|
33
|
+
startServer();
|
|
34
|
+
}
|
|
35
|
+
async function startServer() {
|
|
36
|
+
const { McpServer } = await import('@modelcontextprotocol/sdk/server/mcp.js');
|
|
37
|
+
const { StdioServerTransport } = await import('@modelcontextprotocol/sdk/server/stdio.js');
|
|
38
|
+
const { authenticate } = await import('./auth/validate.js');
|
|
39
|
+
const { registerGenerationTools } = await import('./tools/generation.js');
|
|
40
|
+
const { registerResearchTools } = await import('./tools/research.js');
|
|
41
|
+
const { registerWordPressTools } = await import('./tools/wordpress.js');
|
|
42
|
+
const { registerIndexingTools } = await import('./tools/indexing.js');
|
|
43
|
+
const { registerSEOTools } = await import('./tools/seo.js');
|
|
44
|
+
const { registerProjectTools } = await import('./tools/projects.js');
|
|
45
|
+
const { registerCSVTools } = await import('./tools/csv.js');
|
|
46
|
+
// ============================================
|
|
47
|
+
// SERVER SETUP
|
|
48
|
+
// ============================================
|
|
49
|
+
const server = new McpServer({
|
|
50
|
+
name: 'Bulk Publishing AI',
|
|
51
|
+
version: '1.0.2',
|
|
52
|
+
}, {
|
|
53
|
+
capabilities: {
|
|
54
|
+
tools: {},
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
// ============================================
|
|
58
|
+
// REGISTER ALL TOOL GROUPS
|
|
59
|
+
// ============================================
|
|
60
|
+
registerGenerationTools(server);
|
|
61
|
+
registerResearchTools(server);
|
|
62
|
+
registerWordPressTools(server);
|
|
63
|
+
registerIndexingTools(server);
|
|
64
|
+
registerSEOTools(server);
|
|
65
|
+
registerProjectTools(server);
|
|
66
|
+
registerCSVTools(server);
|
|
67
|
+
// ============================================
|
|
68
|
+
// START SERVER
|
|
69
|
+
// ============================================
|
|
59
70
|
try {
|
|
60
71
|
await authenticate();
|
|
61
72
|
}
|
|
@@ -63,16 +74,10 @@ async function main() {
|
|
|
63
74
|
console.error(`[BPAI MCP Server] Authentication failed: ${error.message}`);
|
|
64
75
|
process.exit(1);
|
|
65
76
|
}
|
|
66
|
-
// Step 2: Connect MCP transport
|
|
67
77
|
const transport = new StdioServerTransport();
|
|
68
78
|
await server.connect(transport);
|
|
69
|
-
// Log to stderr (stdout is reserved for MCP protocol messages)
|
|
70
79
|
console.error('[BPAI MCP Server] Started successfully');
|
|
71
80
|
console.error('[BPAI MCP Server] Available tool groups: generation, research, wordpress, indexing, seo, projects, csv');
|
|
72
81
|
console.error('[BPAI MCP Server] Transport: stdio');
|
|
73
82
|
}
|
|
74
|
-
main().catch((error) => {
|
|
75
|
-
console.error('[BPAI MCP Server] Fatal error:', error);
|
|
76
|
-
process.exit(1);
|
|
77
|
-
});
|
|
78
83
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bulkpublishing/mcp-server",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Bulk Publishing AI MCP Server - Content generation, WordPress publishing, and SEO indexing tools for MCP-compatible clients",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|