@bulkpublishing/mcp-server 1.1.2 → 1.2.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/dist/db/articles.d.ts +60 -0
- package/dist/db/articles.d.ts.map +1 -0
- package/dist/db/articles.js +177 -0
- package/dist/db/articles.js.map +1 -0
- package/dist/db/client.d.ts +30 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +116 -0
- package/dist/db/client.js.map +1 -0
- package/dist/index.js +20 -1
- package/dist/index.js.map +1 -1
- package/dist/tools/articles.d.ts +9 -0
- package/dist/tools/articles.d.ts.map +1 -0
- package/dist/tools/articles.js +110 -0
- package/dist/tools/articles.js.map +1 -0
- package/dist/tools/generation.d.ts.map +1 -1
- package/dist/tools/generation.js +43 -0
- package/dist/tools/generation.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server — Article Persistence
|
|
3
|
+
*
|
|
4
|
+
* Functions for saving, querying, and retrieving articles from the database.
|
|
5
|
+
* Articles are scoped by user_id + project_id and tagged with source='mcp'
|
|
6
|
+
* so the web dashboard can distinguish MCP-generated content.
|
|
7
|
+
*/
|
|
8
|
+
export interface ArticleRecord {
|
|
9
|
+
id: string;
|
|
10
|
+
topic: string;
|
|
11
|
+
keyword: string;
|
|
12
|
+
title: string;
|
|
13
|
+
slug: string;
|
|
14
|
+
content: string;
|
|
15
|
+
meta_description: string;
|
|
16
|
+
status: string;
|
|
17
|
+
provider: string;
|
|
18
|
+
model: string;
|
|
19
|
+
word_count: number;
|
|
20
|
+
citations: string[];
|
|
21
|
+
source: string;
|
|
22
|
+
created_at: string;
|
|
23
|
+
project_id: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Save a generated article to the database.
|
|
27
|
+
* Uses INSERT ON CONFLICT UPDATE so it's safe to call multiple times.
|
|
28
|
+
* Returns the article ID.
|
|
29
|
+
*/
|
|
30
|
+
export declare function saveArticle(article: {
|
|
31
|
+
keyword: string;
|
|
32
|
+
title: string;
|
|
33
|
+
slug: string;
|
|
34
|
+
content: string;
|
|
35
|
+
meta_description: string;
|
|
36
|
+
provider: string;
|
|
37
|
+
model: string;
|
|
38
|
+
word_count: number;
|
|
39
|
+
citations?: string[];
|
|
40
|
+
project_id?: string;
|
|
41
|
+
}): Promise<string | null>;
|
|
42
|
+
/**
|
|
43
|
+
* List articles for the active project with optional filters.
|
|
44
|
+
*/
|
|
45
|
+
export declare function listArticles(opts: {
|
|
46
|
+
project_id?: string;
|
|
47
|
+
status?: string;
|
|
48
|
+
search?: string;
|
|
49
|
+
limit?: number;
|
|
50
|
+
offset?: number;
|
|
51
|
+
source?: string;
|
|
52
|
+
}): Promise<{
|
|
53
|
+
articles: ArticleRecord[];
|
|
54
|
+
total: number;
|
|
55
|
+
}>;
|
|
56
|
+
/**
|
|
57
|
+
* Get a single article by ID with full content.
|
|
58
|
+
*/
|
|
59
|
+
export declare function getArticle(articleId: string): Promise<ArticleRecord | null>;
|
|
60
|
+
//# sourceMappingURL=articles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"articles.d.ts","sourceRoot":"","sources":["../../src/db/articles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgDzB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAqFxD;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAyCjF"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server — Article Persistence
|
|
3
|
+
*
|
|
4
|
+
* Functions for saving, querying, and retrieving articles from the database.
|
|
5
|
+
* Articles are scoped by user_id + project_id and tagged with source='mcp'
|
|
6
|
+
* so the web dashboard can distinguish MCP-generated content.
|
|
7
|
+
*/
|
|
8
|
+
import { getPool } from './client.js';
|
|
9
|
+
import { getUserContext } from '../auth/context.js';
|
|
10
|
+
/**
|
|
11
|
+
* Save a generated article to the database.
|
|
12
|
+
* Uses INSERT ON CONFLICT UPDATE so it's safe to call multiple times.
|
|
13
|
+
* Returns the article ID.
|
|
14
|
+
*/
|
|
15
|
+
export async function saveArticle(article) {
|
|
16
|
+
const db = getPool();
|
|
17
|
+
if (!db)
|
|
18
|
+
return null;
|
|
19
|
+
const ctx = getUserContext();
|
|
20
|
+
if (!ctx.authenticated)
|
|
21
|
+
return null;
|
|
22
|
+
const projectId = article.project_id || ctx.activeProjectId;
|
|
23
|
+
if (!projectId) {
|
|
24
|
+
console.error('[DB] Cannot save article: no active project');
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
const result = await db.query(`INSERT INTO articles (
|
|
29
|
+
user_id, project_id, topic, main_keyword, keywords,
|
|
30
|
+
content, meta_description, status, provider, model,
|
|
31
|
+
word_count, slug, research_citations, source, created_at, updated_at
|
|
32
|
+
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, NOW(), NOW())
|
|
33
|
+
RETURNING id`, [
|
|
34
|
+
ctx.user.id,
|
|
35
|
+
projectId,
|
|
36
|
+
article.title, // topic = title for MCP articles
|
|
37
|
+
article.keyword, // main_keyword
|
|
38
|
+
article.keyword, // keywords (same as keyword for MCP)
|
|
39
|
+
article.content,
|
|
40
|
+
article.meta_description,
|
|
41
|
+
'completed',
|
|
42
|
+
article.provider,
|
|
43
|
+
article.model,
|
|
44
|
+
article.word_count,
|
|
45
|
+
article.slug,
|
|
46
|
+
JSON.stringify(article.citations || []),
|
|
47
|
+
'mcp',
|
|
48
|
+
]);
|
|
49
|
+
const articleId = result.rows[0]?.id;
|
|
50
|
+
if (articleId) {
|
|
51
|
+
console.error(`[DB] Article saved: "${article.title}" (${articleId})`);
|
|
52
|
+
}
|
|
53
|
+
return articleId || null;
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
console.error(`[DB] Failed to save article "${article.title}":`, err.message);
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* List articles for the active project with optional filters.
|
|
62
|
+
*/
|
|
63
|
+
export async function listArticles(opts) {
|
|
64
|
+
const db = getPool();
|
|
65
|
+
if (!db)
|
|
66
|
+
return { articles: [], total: 0 };
|
|
67
|
+
const ctx = getUserContext();
|
|
68
|
+
if (!ctx.authenticated)
|
|
69
|
+
return { articles: [], total: 0 };
|
|
70
|
+
const projectId = opts.project_id || ctx.activeProjectId;
|
|
71
|
+
if (!projectId)
|
|
72
|
+
return { articles: [], total: 0 };
|
|
73
|
+
const limit = Math.min(opts.limit || 50, 200);
|
|
74
|
+
const offset = opts.offset || 0;
|
|
75
|
+
// Build WHERE clauses
|
|
76
|
+
const conditions = ['user_id = $1', 'project_id = $2'];
|
|
77
|
+
const params = [ctx.user.id, projectId];
|
|
78
|
+
let paramIndex = 3;
|
|
79
|
+
if (opts.status && opts.status !== 'all') {
|
|
80
|
+
conditions.push(`status = $${paramIndex}`);
|
|
81
|
+
params.push(opts.status);
|
|
82
|
+
paramIndex++;
|
|
83
|
+
}
|
|
84
|
+
if (opts.source) {
|
|
85
|
+
conditions.push(`source = $${paramIndex}`);
|
|
86
|
+
params.push(opts.source);
|
|
87
|
+
paramIndex++;
|
|
88
|
+
}
|
|
89
|
+
if (opts.search) {
|
|
90
|
+
conditions.push(`(topic ILIKE $${paramIndex} OR main_keyword ILIKE $${paramIndex} OR content ILIKE $${paramIndex})`);
|
|
91
|
+
params.push(`%${opts.search}%`);
|
|
92
|
+
paramIndex++;
|
|
93
|
+
}
|
|
94
|
+
const where = conditions.join(' AND ');
|
|
95
|
+
try {
|
|
96
|
+
// Get total count
|
|
97
|
+
const countResult = await db.query(`SELECT COUNT(*) as total FROM articles WHERE ${where}`, params);
|
|
98
|
+
const total = parseInt(countResult.rows[0]?.total || '0', 10);
|
|
99
|
+
// Get paginated results (without full content for list view)
|
|
100
|
+
const dataResult = await db.query(`SELECT id, topic, main_keyword as keyword,
|
|
101
|
+
COALESCE((content IS NOT NULL AND content != ''), false) as has_content,
|
|
102
|
+
SUBSTRING(content FROM 1 FOR 200) as content_preview,
|
|
103
|
+
meta_description, status, provider, model, word_count,
|
|
104
|
+
slug, research_citations as citations, source,
|
|
105
|
+
created_at, project_id
|
|
106
|
+
FROM articles
|
|
107
|
+
WHERE ${where}
|
|
108
|
+
ORDER BY created_at DESC
|
|
109
|
+
LIMIT $${paramIndex} OFFSET $${paramIndex + 1}`, [...params, limit, offset]);
|
|
110
|
+
const articles = dataResult.rows.map((row) => ({
|
|
111
|
+
id: row.id,
|
|
112
|
+
topic: row.topic,
|
|
113
|
+
keyword: row.keyword || '',
|
|
114
|
+
title: row.topic, // topic stores the title
|
|
115
|
+
slug: row.slug || '',
|
|
116
|
+
content: row.content_preview ? row.content_preview + '...' : '',
|
|
117
|
+
has_content: row.has_content,
|
|
118
|
+
meta_description: row.meta_description || '',
|
|
119
|
+
status: row.status || 'completed',
|
|
120
|
+
provider: row.provider || '',
|
|
121
|
+
model: row.model || '',
|
|
122
|
+
word_count: row.word_count || 0,
|
|
123
|
+
citations: row.citations || [],
|
|
124
|
+
source: row.source || 'web',
|
|
125
|
+
created_at: row.created_at,
|
|
126
|
+
project_id: row.project_id,
|
|
127
|
+
}));
|
|
128
|
+
return { articles, total };
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
console.error('[DB] Failed to list articles:', err.message);
|
|
132
|
+
return { articles: [], total: 0 };
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Get a single article by ID with full content.
|
|
137
|
+
*/
|
|
138
|
+
export async function getArticle(articleId) {
|
|
139
|
+
const db = getPool();
|
|
140
|
+
if (!db)
|
|
141
|
+
return null;
|
|
142
|
+
const ctx = getUserContext();
|
|
143
|
+
if (!ctx.authenticated)
|
|
144
|
+
return null;
|
|
145
|
+
try {
|
|
146
|
+
const result = await db.query(`SELECT id, topic, main_keyword as keyword, content, meta_description,
|
|
147
|
+
status, provider, model, word_count, slug,
|
|
148
|
+
research_citations as citations, source, created_at, project_id
|
|
149
|
+
FROM articles
|
|
150
|
+
WHERE id = $1 AND user_id = $2`, [articleId, ctx.user.id]);
|
|
151
|
+
if (result.rows.length === 0)
|
|
152
|
+
return null;
|
|
153
|
+
const row = result.rows[0];
|
|
154
|
+
return {
|
|
155
|
+
id: row.id,
|
|
156
|
+
topic: row.topic,
|
|
157
|
+
keyword: row.keyword || '',
|
|
158
|
+
title: row.topic,
|
|
159
|
+
slug: row.slug || '',
|
|
160
|
+
content: row.content || '',
|
|
161
|
+
meta_description: row.meta_description || '',
|
|
162
|
+
status: row.status || 'completed',
|
|
163
|
+
provider: row.provider || '',
|
|
164
|
+
model: row.model || '',
|
|
165
|
+
word_count: row.word_count || 0,
|
|
166
|
+
citations: row.citations || [],
|
|
167
|
+
source: row.source || 'web',
|
|
168
|
+
created_at: row.created_at,
|
|
169
|
+
project_id: row.project_id,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
catch (err) {
|
|
173
|
+
console.error('[DB] Failed to get article:', err.message);
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=articles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"articles.js","sourceRoot":"","sources":["../../src/db/articles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server — Database Client
|
|
3
|
+
*
|
|
4
|
+
* Connects to the BPAI InsForge Postgres database.
|
|
5
|
+
* Used for persisting generated articles so they survive beyond the MCP session.
|
|
6
|
+
*
|
|
7
|
+
* Connection URL is loaded from:
|
|
8
|
+
* 1. Auth endpoint response (preferred)
|
|
9
|
+
* 2. BPAI_DATABASE_URL environment variable (fallback)
|
|
10
|
+
*/
|
|
11
|
+
import pg from 'pg';
|
|
12
|
+
/**
|
|
13
|
+
* Set the database URL (called after auth, if the endpoint returns it).
|
|
14
|
+
*/
|
|
15
|
+
export declare function setDatabaseUrl(url: string): void;
|
|
16
|
+
/**
|
|
17
|
+
* Get or create the connection pool.
|
|
18
|
+
* Lazy-initializes on first call.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getPool(): pg.Pool | null;
|
|
21
|
+
/**
|
|
22
|
+
* Run the articles table migration if it doesn't exist.
|
|
23
|
+
* Safe to call multiple times (uses IF NOT EXISTS).
|
|
24
|
+
*/
|
|
25
|
+
export declare function ensureArticlesTable(): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Gracefully close the pool (called on shutdown).
|
|
28
|
+
*/
|
|
29
|
+
export declare function closePool(): Promise<void>;
|
|
30
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AAMpB;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED;;;GAGG;AACH,wBAAgB,OAAO,IAAI,EAAE,CAAC,IAAI,GAAG,IAAI,CA6BxC;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CA+CzD;AAED;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAM/C"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server — Database Client
|
|
3
|
+
*
|
|
4
|
+
* Connects to the BPAI InsForge Postgres database.
|
|
5
|
+
* Used for persisting generated articles so they survive beyond the MCP session.
|
|
6
|
+
*
|
|
7
|
+
* Connection URL is loaded from:
|
|
8
|
+
* 1. Auth endpoint response (preferred)
|
|
9
|
+
* 2. BPAI_DATABASE_URL environment variable (fallback)
|
|
10
|
+
*/
|
|
11
|
+
import pg from 'pg';
|
|
12
|
+
const { Pool } = pg;
|
|
13
|
+
let pool = null;
|
|
14
|
+
let connectionUrl = null;
|
|
15
|
+
/**
|
|
16
|
+
* Set the database URL (called after auth, if the endpoint returns it).
|
|
17
|
+
*/
|
|
18
|
+
export function setDatabaseUrl(url) {
|
|
19
|
+
connectionUrl = url;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get or create the connection pool.
|
|
23
|
+
* Lazy-initializes on first call.
|
|
24
|
+
*/
|
|
25
|
+
export function getPool() {
|
|
26
|
+
if (pool)
|
|
27
|
+
return pool;
|
|
28
|
+
const url = connectionUrl || process.env.BPAI_DATABASE_URL;
|
|
29
|
+
if (!url) {
|
|
30
|
+
console.error('[DB] No database URL configured. Articles will NOT be persisted.');
|
|
31
|
+
console.error('[DB] Set BPAI_DATABASE_URL in your MCP client env to enable article storage.');
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
pool = new Pool({
|
|
36
|
+
connectionString: url,
|
|
37
|
+
ssl: { rejectUnauthorized: false },
|
|
38
|
+
max: 3, // MCP server is single-user, keep pool small
|
|
39
|
+
idleTimeoutMillis: 60000,
|
|
40
|
+
connectionTimeoutMillis: 10000,
|
|
41
|
+
});
|
|
42
|
+
pool.on('error', (err) => {
|
|
43
|
+
console.error('[DB] Pool error:', err.message);
|
|
44
|
+
});
|
|
45
|
+
console.error('[DB] Connection pool initialized');
|
|
46
|
+
return pool;
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
console.error('[DB] Failed to create pool:', err.message);
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Run the articles table migration if it doesn't exist.
|
|
55
|
+
* Safe to call multiple times (uses IF NOT EXISTS).
|
|
56
|
+
*/
|
|
57
|
+
export async function ensureArticlesTable() {
|
|
58
|
+
const db = getPool();
|
|
59
|
+
if (!db)
|
|
60
|
+
return;
|
|
61
|
+
try {
|
|
62
|
+
await db.query(`
|
|
63
|
+
CREATE TABLE IF NOT EXISTS articles (
|
|
64
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
65
|
+
user_id UUID NOT NULL,
|
|
66
|
+
project_id UUID NOT NULL,
|
|
67
|
+
topic TEXT NOT NULL,
|
|
68
|
+
main_keyword TEXT DEFAULT '',
|
|
69
|
+
keywords TEXT DEFAULT '',
|
|
70
|
+
content TEXT DEFAULT '',
|
|
71
|
+
meta_description TEXT DEFAULT '',
|
|
72
|
+
status TEXT DEFAULT 'completed',
|
|
73
|
+
seo_data JSONB DEFAULT '{}',
|
|
74
|
+
faq_schema JSONB DEFAULT NULL,
|
|
75
|
+
research_data TEXT DEFAULT NULL,
|
|
76
|
+
research_citations JSONB DEFAULT '[]',
|
|
77
|
+
seo_score REAL DEFAULT NULL,
|
|
78
|
+
provider TEXT DEFAULT '',
|
|
79
|
+
model TEXT DEFAULT '',
|
|
80
|
+
word_count INTEGER DEFAULT 0,
|
|
81
|
+
slug TEXT DEFAULT '',
|
|
82
|
+
source TEXT DEFAULT 'mcp',
|
|
83
|
+
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
84
|
+
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
-- Index for fast project-scoped queries
|
|
88
|
+
CREATE INDEX IF NOT EXISTS idx_articles_user_project
|
|
89
|
+
ON articles(user_id, project_id);
|
|
90
|
+
|
|
91
|
+
-- Index for keyword search
|
|
92
|
+
CREATE INDEX IF NOT EXISTS idx_articles_topic
|
|
93
|
+
ON articles(topic);
|
|
94
|
+
|
|
95
|
+
-- Index for status filtering
|
|
96
|
+
CREATE INDEX IF NOT EXISTS idx_articles_status
|
|
97
|
+
ON articles(status);
|
|
98
|
+
`);
|
|
99
|
+
console.error('[DB] Articles table verified');
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
console.error('[DB] Migration failed:', err.message);
|
|
103
|
+
// Non-fatal — the table might already exist with a slightly different schema
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Gracefully close the pool (called on shutdown).
|
|
108
|
+
*/
|
|
109
|
+
export async function closePool() {
|
|
110
|
+
if (pool) {
|
|
111
|
+
await pool.end();
|
|
112
|
+
pool = null;
|
|
113
|
+
console.error('[DB] Connection pool closed');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAEpB,IAAI,IAAI,GAAmB,IAAI,CAAC;AAChC,IAAI,aAAa,GAAkB,IAAI,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACtC,aAAa,GAAG,GAAG,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO;IACnB,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,GAAG,GAAG,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC3D,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;QAClF,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;QAC9F,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACD,IAAI,GAAG,IAAI,IAAI,CAAC;YACZ,gBAAgB,EAAE,GAAG;YACrB,GAAG,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE;YAClC,GAAG,EAAE,CAAC,EAAe,6CAA6C;YAClE,iBAAiB,EAAE,KAAK;YACxB,uBAAuB,EAAE,KAAK;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAC5B,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACrC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE;QAAE,OAAO;IAEhB,IAAI,CAAC;QACD,MAAM,EAAE,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAoCd,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACrD,6EAA6E;IACjF,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC3B,IAAI,IAAI,EAAE,CAAC;QACP,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,IAAI,GAAG,IAAI,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;AACL,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -61,6 +61,7 @@ async function startServer() {
|
|
|
61
61
|
const { McpServer } = await import('@modelcontextprotocol/sdk/server/mcp.js');
|
|
62
62
|
const { StdioServerTransport } = await import('@modelcontextprotocol/sdk/server/stdio.js');
|
|
63
63
|
const { authenticate } = await import('./auth/validate.js');
|
|
64
|
+
const { ensureArticlesTable, closePool } = await import('./db/client.js');
|
|
64
65
|
const { registerGenerationTools } = await import('./tools/generation.js');
|
|
65
66
|
const { registerResearchTools } = await import('./tools/research.js');
|
|
66
67
|
const { registerWordPressTools } = await import('./tools/wordpress.js');
|
|
@@ -70,6 +71,7 @@ async function startServer() {
|
|
|
70
71
|
const { registerCSVTools } = await import('./tools/csv.js');
|
|
71
72
|
const { registerKnowledgeBaseTools } = await import('./tools/knowledgebase.js');
|
|
72
73
|
const { registerLinkingTools } = await import('./tools/linking.js');
|
|
74
|
+
const { registerArticleTools } = await import('./tools/articles.js');
|
|
73
75
|
// ============================================
|
|
74
76
|
// SERVER SETUP
|
|
75
77
|
// ============================================
|
|
@@ -93,6 +95,7 @@ async function startServer() {
|
|
|
93
95
|
registerCSVTools(server);
|
|
94
96
|
registerKnowledgeBaseTools(server);
|
|
95
97
|
registerLinkingTools(server);
|
|
98
|
+
registerArticleTools(server);
|
|
96
99
|
// ============================================
|
|
97
100
|
// START SERVER
|
|
98
101
|
// ============================================
|
|
@@ -103,10 +106,26 @@ async function startServer() {
|
|
|
103
106
|
console.error(`[BPAI MCP Server] Authentication failed: ${error.message}`);
|
|
104
107
|
process.exit(1);
|
|
105
108
|
}
|
|
109
|
+
// Initialize database for article persistence
|
|
110
|
+
try {
|
|
111
|
+
await ensureArticlesTable();
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
console.error(`[BPAI MCP Server] DB init warning: ${err.message} (articles will not be persisted)`);
|
|
115
|
+
}
|
|
116
|
+
// Graceful DB shutdown
|
|
117
|
+
const shutdown = async () => {
|
|
118
|
+
await closePool();
|
|
119
|
+
process.exit(0);
|
|
120
|
+
};
|
|
121
|
+
process.removeAllListeners('SIGTERM');
|
|
122
|
+
process.removeAllListeners('SIGINT');
|
|
123
|
+
process.on('SIGTERM', shutdown);
|
|
124
|
+
process.on('SIGINT', shutdown);
|
|
106
125
|
const transport = new StdioServerTransport();
|
|
107
126
|
await server.connect(transport);
|
|
108
127
|
console.error('[BPAI MCP Server] Started successfully');
|
|
109
|
-
console.error('[BPAI MCP Server] Available tool groups: generation, research, wordpress, indexing, seo, projects, csv, knowledgebase, linking');
|
|
128
|
+
console.error('[BPAI MCP Server] Available tool groups: generation, research, wordpress, indexing, seo, projects, csv, knowledgebase, linking, articles');
|
|
110
129
|
console.error('[BPAI MCP Server] Transport: stdio');
|
|
111
130
|
// ============================================
|
|
112
131
|
// PERIODIC HEALTH MONITORING
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server — Article Library Tools
|
|
3
|
+
*
|
|
4
|
+
* Tools for browsing, searching, and retrieving previously generated articles.
|
|
5
|
+
* This is the "Article Library" — the safety net that prevents content loss.
|
|
6
|
+
*/
|
|
7
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
8
|
+
export declare function registerArticleTools(server: McpServer): void;
|
|
9
|
+
//# sourceMappingURL=articles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"articles.d.ts","sourceRoot":"","sources":["../../src/tools/articles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqH5D"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server — Article Library Tools
|
|
3
|
+
*
|
|
4
|
+
* Tools for browsing, searching, and retrieving previously generated articles.
|
|
5
|
+
* This is the "Article Library" — the safety net that prevents content loss.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { getUserContext } from '../auth/context.js';
|
|
9
|
+
import { listArticles, getArticle } from '../db/articles.js';
|
|
10
|
+
export function registerArticleTools(server) {
|
|
11
|
+
// ============================================
|
|
12
|
+
// list_articles
|
|
13
|
+
// ============================================
|
|
14
|
+
server.tool('list_articles', 'Browse and search your generated article library. Articles are stored per-project and persist across sessions. Returns content previews; use get_article for full content.', {
|
|
15
|
+
project_id: z.string().optional().describe('Project ID (defaults to active project)'),
|
|
16
|
+
search: z.string().optional().describe('Search articles by keyword, title, or content'),
|
|
17
|
+
status: z.string().optional().default('all').describe('Filter by status: completed, error, all'),
|
|
18
|
+
source: z.string().optional().describe('Filter by source: mcp, web, or all (default: all)'),
|
|
19
|
+
limit: z.number().optional().default(20).describe('Number of articles to return (max 200)'),
|
|
20
|
+
offset: z.number().optional().default(0).describe('Pagination offset'),
|
|
21
|
+
}, async (args) => {
|
|
22
|
+
const ctx = getUserContext();
|
|
23
|
+
if (!ctx.authenticated) {
|
|
24
|
+
return { content: [{ type: 'text', text: JSON.stringify({ error: 'Not authenticated.' }, null, 2) }] };
|
|
25
|
+
}
|
|
26
|
+
const { articles, total } = await listArticles({
|
|
27
|
+
project_id: args.project_id,
|
|
28
|
+
status: args.status,
|
|
29
|
+
search: args.search,
|
|
30
|
+
source: args.source,
|
|
31
|
+
limit: args.limit,
|
|
32
|
+
offset: args.offset,
|
|
33
|
+
});
|
|
34
|
+
// Get project name for context
|
|
35
|
+
const projectId = args.project_id || ctx.activeProjectId;
|
|
36
|
+
const project = ctx.projects.find(p => p.id === projectId);
|
|
37
|
+
return {
|
|
38
|
+
content: [{
|
|
39
|
+
type: 'text', text: JSON.stringify({
|
|
40
|
+
status: 'success',
|
|
41
|
+
project: project?.name || projectId,
|
|
42
|
+
total,
|
|
43
|
+
showing: articles.length,
|
|
44
|
+
offset: args.offset || 0,
|
|
45
|
+
articles: articles.map(a => ({
|
|
46
|
+
id: a.id,
|
|
47
|
+
title: a.title,
|
|
48
|
+
keyword: a.keyword,
|
|
49
|
+
slug: a.slug,
|
|
50
|
+
word_count: a.word_count,
|
|
51
|
+
provider: a.provider,
|
|
52
|
+
model: a.model,
|
|
53
|
+
source: a.source,
|
|
54
|
+
status: a.status,
|
|
55
|
+
created_at: a.created_at,
|
|
56
|
+
content_preview: a.content,
|
|
57
|
+
})),
|
|
58
|
+
tip: total > (args.limit || 20)
|
|
59
|
+
? `Showing ${articles.length} of ${total}. Use offset=${(args.offset || 0) + (args.limit || 20)} to see more.`
|
|
60
|
+
: undefined,
|
|
61
|
+
}, null, 2)
|
|
62
|
+
}],
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
// ============================================
|
|
66
|
+
// get_article
|
|
67
|
+
// ============================================
|
|
68
|
+
server.tool('get_article', 'Retrieve the full content of a specific article by its ID. Use list_articles first to find article IDs.', {
|
|
69
|
+
article_id: z.string().describe('The article UUID (from list_articles)'),
|
|
70
|
+
}, async (args) => {
|
|
71
|
+
const ctx = getUserContext();
|
|
72
|
+
if (!ctx.authenticated) {
|
|
73
|
+
return { content: [{ type: 'text', text: JSON.stringify({ error: 'Not authenticated.' }, null, 2) }] };
|
|
74
|
+
}
|
|
75
|
+
const article = await getArticle(args.article_id);
|
|
76
|
+
if (!article) {
|
|
77
|
+
return {
|
|
78
|
+
content: [{
|
|
79
|
+
type: 'text', text: JSON.stringify({
|
|
80
|
+
error: `Article not found: ${args.article_id}. Use list_articles to browse available articles.`,
|
|
81
|
+
}, null, 2)
|
|
82
|
+
}],
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
content: [{
|
|
87
|
+
type: 'text', text: JSON.stringify({
|
|
88
|
+
status: 'success',
|
|
89
|
+
article: {
|
|
90
|
+
id: article.id,
|
|
91
|
+
title: article.title,
|
|
92
|
+
keyword: article.keyword,
|
|
93
|
+
slug: article.slug,
|
|
94
|
+
content: article.content,
|
|
95
|
+
meta_description: article.meta_description,
|
|
96
|
+
word_count: article.word_count,
|
|
97
|
+
provider: article.provider,
|
|
98
|
+
model: article.model,
|
|
99
|
+
citations: article.citations,
|
|
100
|
+
source: article.source,
|
|
101
|
+
status: article.status,
|
|
102
|
+
created_at: article.created_at,
|
|
103
|
+
project_id: article.project_id,
|
|
104
|
+
},
|
|
105
|
+
}, null, 2)
|
|
106
|
+
}],
|
|
107
|
+
};
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=articles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"articles.js","sourceRoot":"","sources":["../../src/tools/articles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generation.d.ts","sourceRoot":"","sources":["../../src/tools/generation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"generation.d.ts","sourceRoot":"","sources":["../../src/tools/generation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,QAugBxD"}
|
package/dist/tools/generation.js
CHANGED
|
@@ -14,6 +14,7 @@ import { generateContent, generateContentWithRetry, listModels } from '../ai/eng
|
|
|
14
14
|
import { buildGenerationPrompt, HUMANIZE_PROMPT } from '../ai/prompts.js';
|
|
15
15
|
import { getUserContext, getApiKey, getKnowledgeBaseContext, getProjectSettings } from '../auth/context.js';
|
|
16
16
|
import { fetchAllSitemapUrls, detectPermalinkPattern } from './linking.js';
|
|
17
|
+
import { saveArticle } from '../db/articles.js';
|
|
17
18
|
export function registerGenerationTools(server) {
|
|
18
19
|
// ============================================
|
|
19
20
|
// generate_article
|
|
@@ -146,13 +147,29 @@ export function registerGenerationTools(server) {
|
|
|
146
147
|
title = titleMatch[1].trim();
|
|
147
148
|
}
|
|
148
149
|
const wordCount = finalText.split(/\s+/).length;
|
|
150
|
+
// Persist to database
|
|
151
|
+
const articleId = await saveArticle({
|
|
152
|
+
keyword: args.keyword,
|
|
153
|
+
title,
|
|
154
|
+
slug: slugify(title),
|
|
155
|
+
content: finalText,
|
|
156
|
+
meta_description: metaDescription,
|
|
157
|
+
provider,
|
|
158
|
+
model: settings.model,
|
|
159
|
+
word_count: wordCount,
|
|
160
|
+
citations: result.citations || [],
|
|
161
|
+
project_id: args.project_id,
|
|
162
|
+
});
|
|
149
163
|
return {
|
|
150
164
|
content: [{
|
|
151
165
|
type: 'text', text: JSON.stringify({
|
|
152
166
|
status: 'success',
|
|
167
|
+
article_id: articleId || undefined,
|
|
168
|
+
persisted: !!articleId,
|
|
153
169
|
article: {
|
|
154
170
|
title,
|
|
155
171
|
keyword: args.keyword,
|
|
172
|
+
slug: slugify(title),
|
|
156
173
|
content: finalText,
|
|
157
174
|
meta_description: metaDescription,
|
|
158
175
|
word_count: wordCount,
|
|
@@ -371,12 +388,38 @@ export function registerGenerationTools(server) {
|
|
|
371
388
|
const titleMatch = text.match(/^#\s+(.+)/m);
|
|
372
389
|
if (titleMatch)
|
|
373
390
|
title = titleMatch[1].trim();
|
|
391
|
+
// Extract meta description if present
|
|
392
|
+
let metaDescription = '';
|
|
393
|
+
const metaMatch = text.match(/META_DESCRIPTION:\s*(.+)/i);
|
|
394
|
+
if (metaMatch) {
|
|
395
|
+
metaDescription = metaMatch[1].trim();
|
|
396
|
+
text = text.replace(/META_DESCRIPTION:\s*.+/i, '').trim();
|
|
397
|
+
}
|
|
374
398
|
results.push({
|
|
375
399
|
keyword,
|
|
376
400
|
status: 'success',
|
|
377
401
|
title,
|
|
402
|
+
slug: slugify(title),
|
|
403
|
+
meta_description: metaDescription,
|
|
378
404
|
word_count: text.split(/\s+/).length,
|
|
405
|
+
content: text,
|
|
379
406
|
content_preview: text.substring(0, 200) + '...',
|
|
407
|
+
provider,
|
|
408
|
+
model: args.model || getDefaultModel(provider),
|
|
409
|
+
citations: result.citations || [],
|
|
410
|
+
});
|
|
411
|
+
// Persist to database
|
|
412
|
+
await saveArticle({
|
|
413
|
+
keyword,
|
|
414
|
+
title,
|
|
415
|
+
slug: slugify(title),
|
|
416
|
+
content: text,
|
|
417
|
+
meta_description: metaDescription,
|
|
418
|
+
provider,
|
|
419
|
+
model: args.model || getDefaultModel(provider),
|
|
420
|
+
word_count: text.split(/\s+/).length,
|
|
421
|
+
citations: result.citations || [],
|
|
422
|
+
project_id: args.project_id,
|
|
380
423
|
});
|
|
381
424
|
}
|
|
382
425
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generation.js","sourceRoot":"","sources":["../../src/tools/generation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generation.js","sourceRoot":"","sources":["../../src/tools/generation.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.
|
|
3
|
+
"version": "1.2.0",
|
|
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",
|
|
@@ -39,10 +39,12 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
42
|
+
"pg": "^8.18.0",
|
|
42
43
|
"zod": "^4.3.6"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
45
46
|
"@types/node": "^22.15.0",
|
|
47
|
+
"@types/pg": "^8.16.0",
|
|
46
48
|
"tsx": "^4.19.4",
|
|
47
49
|
"typescript": "^5.9.3"
|
|
48
50
|
},
|