@heyseo/mcp-server 0.1.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/README.md +284 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +258 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +22 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +267 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/index.d.ts +38 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +247 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/tools/comparison.d.ts +159 -0
- package/dist/tools/comparison.d.ts.map +1 -0
- package/dist/tools/comparison.js +482 -0
- package/dist/tools/comparison.js.map +1 -0
- package/dist/tools/ga4.d.ts +182 -0
- package/dist/tools/ga4.d.ts.map +1 -0
- package/dist/tools/ga4.js +429 -0
- package/dist/tools/ga4.js.map +1 -0
- package/dist/tools/gsc.d.ts +194 -0
- package/dist/tools/gsc.d.ts.map +1 -0
- package/dist/tools/gsc.js +348 -0
- package/dist/tools/gsc.js.map +1 -0
- package/dist/tools/index.d.ts +392 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +59 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/pagespeed.d.ts +88 -0
- package/dist/tools/pagespeed.d.ts.map +1 -0
- package/dist/tools/pagespeed.js +285 -0
- package/dist/tools/pagespeed.js.map +1 -0
- package/dist/tools/tasks.d.ts +71 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +116 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/types.d.ts +151 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/api-client.d.ts +69 -0
- package/dist/utils/api-client.d.ts.map +1 -0
- package/dist/utils/api-client.js +202 -0
- package/dist/utils/api-client.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HeySeo API Client
|
|
3
|
+
* Handles communication with the HeySeo backend API
|
|
4
|
+
*/
|
|
5
|
+
import type { HeySeoConfig, HeySeoSite, GSCQueryParams, GSCQueryResult, GA4QueryParams, GA4Row, PageSpeedResult, SEOOpportunity, KanbanTask } from '../types.js';
|
|
6
|
+
export declare class HeySeoApiClient {
|
|
7
|
+
private config;
|
|
8
|
+
constructor(config: HeySeoConfig);
|
|
9
|
+
private request;
|
|
10
|
+
/**
|
|
11
|
+
* Get all connected sites for the authenticated user
|
|
12
|
+
*/
|
|
13
|
+
getSites(): Promise<HeySeoSite[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Get a specific site by ID
|
|
16
|
+
*/
|
|
17
|
+
getSite(siteId: string): Promise<HeySeoSite>;
|
|
18
|
+
/**
|
|
19
|
+
* Query Google Search Console analytics
|
|
20
|
+
*/
|
|
21
|
+
queryGSC(params: GSCQueryParams): Promise<GSCQueryResult>;
|
|
22
|
+
/**
|
|
23
|
+
* Query Google Analytics 4 data
|
|
24
|
+
*/
|
|
25
|
+
queryGA4(params: GA4QueryParams): Promise<GA4Row[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Run PageSpeed Insights analysis
|
|
28
|
+
*/
|
|
29
|
+
analyzePageSpeed(url: string, strategy?: 'mobile' | 'desktop'): Promise<PageSpeedResult>;
|
|
30
|
+
/**
|
|
31
|
+
* Get SEO opportunities for a site
|
|
32
|
+
*/
|
|
33
|
+
getOpportunities(siteId: string, type?: 'keyword' | 'page' | 'technical' | 'content'): Promise<SEOOpportunity[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Create a Kanban task
|
|
36
|
+
*/
|
|
37
|
+
createTask(task: Omit<KanbanTask, 'id' | 'createdAt' | 'updatedAt'>): Promise<KanbanTask>;
|
|
38
|
+
/**
|
|
39
|
+
* Get top keywords for a site
|
|
40
|
+
*/
|
|
41
|
+
getTopKeywords(siteId: string, options?: {
|
|
42
|
+
startDate?: string;
|
|
43
|
+
endDate?: string;
|
|
44
|
+
limit?: number;
|
|
45
|
+
}): Promise<GSCQueryResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Get top pages for a site
|
|
48
|
+
*/
|
|
49
|
+
getTopPages(siteId: string, options?: {
|
|
50
|
+
startDate?: string;
|
|
51
|
+
endDate?: string;
|
|
52
|
+
limit?: number;
|
|
53
|
+
}): Promise<GSCQueryResult>;
|
|
54
|
+
/**
|
|
55
|
+
* Get site overview metrics
|
|
56
|
+
*/
|
|
57
|
+
getSiteOverview(siteId: string, options?: {
|
|
58
|
+
startDate?: string;
|
|
59
|
+
endDate?: string;
|
|
60
|
+
}): Promise<{
|
|
61
|
+
gsc: GSCQueryResult;
|
|
62
|
+
ga4: GA4Row[];
|
|
63
|
+
}>;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Create a configured API client instance
|
|
67
|
+
*/
|
|
68
|
+
export declare function createApiClient(config?: Partial<HeySeoConfig>): HeySeoApiClient;
|
|
69
|
+
//# sourceMappingURL=api-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/utils/api-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,MAAM,EACN,eAAe,EACf,cAAc,EACd,UAAU,EAEX,MAAM,aAAa,CAAC;AAErB,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,YAAY;YAIlB,OAAO;IAuBrB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAQvC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAUlD;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAqB/D;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAyBzD;;OAEG;IACG,gBAAgB,CACpB,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,QAAQ,GAAG,SAAoB,GACxC,OAAO,CAAC,eAAe,CAAC;IAc3B;;OAEG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,GAClD,OAAO,CAAC,cAAc,EAAE,CAAC;IAW5B;;OAEG;IACG,UAAU,CACd,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,GACvD,OAAO,CAAC,UAAU,CAAC;IActB;;OAEG;IACG,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GACL,OAAO,CAAC,cAAc,CAAC;IAgB1B;;OAEG;IACG,WAAW,CACf,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GACL,OAAO,CAAC,cAAc,CAAC;IAgB1B;;OAEG;IACG,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KACb,GACL,OAAO,CAAC;QACT,GAAG,EAAE,cAAc,CAAC;QACpB,GAAG,EAAE,MAAM,EAAE,CAAC;KACf,CAAC;CA+BH;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,eAAe,CAWnF"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HeySeo API Client
|
|
3
|
+
* Handles communication with the HeySeo backend API
|
|
4
|
+
*/
|
|
5
|
+
export class HeySeoApiClient {
|
|
6
|
+
config;
|
|
7
|
+
constructor(config) {
|
|
8
|
+
this.config = config;
|
|
9
|
+
}
|
|
10
|
+
async request(endpoint, options = {}) {
|
|
11
|
+
const url = `${this.config.baseUrl}${endpoint}`;
|
|
12
|
+
const response = await fetch(url, {
|
|
13
|
+
...options,
|
|
14
|
+
headers: {
|
|
15
|
+
'Content-Type': 'application/json',
|
|
16
|
+
Authorization: `Bearer ${this.config.apiKey}`,
|
|
17
|
+
...options.headers,
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
if (!response.ok) {
|
|
21
|
+
const error = await response.text();
|
|
22
|
+
throw new Error(`HeySeo API Error (${response.status}): ${error}`);
|
|
23
|
+
}
|
|
24
|
+
return response.json();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get all connected sites for the authenticated user
|
|
28
|
+
*/
|
|
29
|
+
async getSites() {
|
|
30
|
+
const response = await this.request('/api/mcp/sites');
|
|
31
|
+
if (!response.success || !response.data) {
|
|
32
|
+
throw new Error(response.error || 'Failed to fetch sites');
|
|
33
|
+
}
|
|
34
|
+
return response.data;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get a specific site by ID
|
|
38
|
+
*/
|
|
39
|
+
async getSite(siteId) {
|
|
40
|
+
const response = await this.request(`/api/mcp/sites/${siteId}`);
|
|
41
|
+
if (!response.success || !response.data) {
|
|
42
|
+
throw new Error(response.error || 'Failed to fetch site');
|
|
43
|
+
}
|
|
44
|
+
return response.data;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Query Google Search Console analytics
|
|
48
|
+
*/
|
|
49
|
+
async queryGSC(params) {
|
|
50
|
+
const response = await this.request(`/api/mcp/sites/${params.siteId}/gsc`, {
|
|
51
|
+
method: 'POST',
|
|
52
|
+
body: JSON.stringify({
|
|
53
|
+
startDate: params.startDate,
|
|
54
|
+
endDate: params.endDate,
|
|
55
|
+
dimensions: params.dimensions || ['query'],
|
|
56
|
+
rowLimit: params.rowLimit || 1000,
|
|
57
|
+
startRow: params.startRow || 0,
|
|
58
|
+
filters: params.filters,
|
|
59
|
+
}),
|
|
60
|
+
});
|
|
61
|
+
if (!response.success || !response.data) {
|
|
62
|
+
throw new Error(response.error || 'Failed to query GSC');
|
|
63
|
+
}
|
|
64
|
+
return response.data;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Query Google Analytics 4 data
|
|
68
|
+
*/
|
|
69
|
+
async queryGA4(params) {
|
|
70
|
+
const response = await this.request(`/api/mcp/sites/${params.siteId}/ga4`, {
|
|
71
|
+
method: 'POST',
|
|
72
|
+
body: JSON.stringify({
|
|
73
|
+
startDate: params.startDate,
|
|
74
|
+
endDate: params.endDate,
|
|
75
|
+
dimensions: params.dimensions || [],
|
|
76
|
+
metrics: params.metrics || [
|
|
77
|
+
'sessions',
|
|
78
|
+
'activeUsers',
|
|
79
|
+
'bounceRate',
|
|
80
|
+
'engagementRate',
|
|
81
|
+
],
|
|
82
|
+
limit: params.limit || 1000,
|
|
83
|
+
}),
|
|
84
|
+
});
|
|
85
|
+
if (!response.success || !response.data) {
|
|
86
|
+
throw new Error(response.error || 'Failed to query GA4');
|
|
87
|
+
}
|
|
88
|
+
return response.data;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Run PageSpeed Insights analysis
|
|
92
|
+
*/
|
|
93
|
+
async analyzePageSpeed(url, strategy = 'mobile') {
|
|
94
|
+
const response = await this.request('/api/mcp/pagespeed', {
|
|
95
|
+
method: 'POST',
|
|
96
|
+
body: JSON.stringify({ url, strategy }),
|
|
97
|
+
});
|
|
98
|
+
if (!response.success || !response.data) {
|
|
99
|
+
throw new Error(response.error || 'Failed to analyze page speed');
|
|
100
|
+
}
|
|
101
|
+
return response.data;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Get SEO opportunities for a site
|
|
105
|
+
*/
|
|
106
|
+
async getOpportunities(siteId, type) {
|
|
107
|
+
const queryParams = type ? `?type=${type}` : '';
|
|
108
|
+
const response = await this.request(`/api/mcp/sites/${siteId}/opportunities${queryParams}`);
|
|
109
|
+
if (!response.success || !response.data) {
|
|
110
|
+
throw new Error(response.error || 'Failed to fetch opportunities');
|
|
111
|
+
}
|
|
112
|
+
return response.data;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Create a Kanban task
|
|
116
|
+
*/
|
|
117
|
+
async createTask(task) {
|
|
118
|
+
const response = await this.request('/api/mcp/tasks', {
|
|
119
|
+
method: 'POST',
|
|
120
|
+
body: JSON.stringify(task),
|
|
121
|
+
});
|
|
122
|
+
if (!response.success || !response.data) {
|
|
123
|
+
throw new Error(response.error || 'Failed to create task');
|
|
124
|
+
}
|
|
125
|
+
return response.data;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Get top keywords for a site
|
|
129
|
+
*/
|
|
130
|
+
async getTopKeywords(siteId, options = {}) {
|
|
131
|
+
const { limit = 50 } = options;
|
|
132
|
+
const endDate = options.endDate || new Date().toISOString().split('T')[0];
|
|
133
|
+
const startDate = options.startDate ||
|
|
134
|
+
new Date(Date.now() - 28 * 24 * 60 * 60 * 1000).toISOString().split('T')[0];
|
|
135
|
+
return this.queryGSC({
|
|
136
|
+
siteId,
|
|
137
|
+
startDate,
|
|
138
|
+
endDate,
|
|
139
|
+
dimensions: ['query'],
|
|
140
|
+
rowLimit: limit,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get top pages for a site
|
|
145
|
+
*/
|
|
146
|
+
async getTopPages(siteId, options = {}) {
|
|
147
|
+
const { limit = 50 } = options;
|
|
148
|
+
const endDate = options.endDate || new Date().toISOString().split('T')[0];
|
|
149
|
+
const startDate = options.startDate ||
|
|
150
|
+
new Date(Date.now() - 28 * 24 * 60 * 60 * 1000).toISOString().split('T')[0];
|
|
151
|
+
return this.queryGSC({
|
|
152
|
+
siteId,
|
|
153
|
+
startDate,
|
|
154
|
+
endDate,
|
|
155
|
+
dimensions: ['page'],
|
|
156
|
+
rowLimit: limit,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get site overview metrics
|
|
161
|
+
*/
|
|
162
|
+
async getSiteOverview(siteId, options = {}) {
|
|
163
|
+
const endDate = options.endDate || new Date().toISOString().split('T')[0];
|
|
164
|
+
const startDate = options.startDate ||
|
|
165
|
+
new Date(Date.now() - 28 * 24 * 60 * 60 * 1000).toISOString().split('T')[0];
|
|
166
|
+
const [gsc, ga4] = await Promise.all([
|
|
167
|
+
this.queryGSC({
|
|
168
|
+
siteId,
|
|
169
|
+
startDate,
|
|
170
|
+
endDate,
|
|
171
|
+
dimensions: [],
|
|
172
|
+
rowLimit: 1,
|
|
173
|
+
}),
|
|
174
|
+
this.queryGA4({
|
|
175
|
+
siteId,
|
|
176
|
+
startDate,
|
|
177
|
+
endDate,
|
|
178
|
+
metrics: [
|
|
179
|
+
'sessions',
|
|
180
|
+
'activeUsers',
|
|
181
|
+
'newUsers',
|
|
182
|
+
'bounceRate',
|
|
183
|
+
'engagementRate',
|
|
184
|
+
'averageSessionDuration',
|
|
185
|
+
],
|
|
186
|
+
}),
|
|
187
|
+
]);
|
|
188
|
+
return { gsc, ga4 };
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Create a configured API client instance
|
|
193
|
+
*/
|
|
194
|
+
export function createApiClient(config = {}) {
|
|
195
|
+
const apiKey = config.apiKey || process.env.HEYSEO_API_KEY;
|
|
196
|
+
const baseUrl = config.baseUrl || process.env.HEYSEO_API_URL || 'https://heyseo.app';
|
|
197
|
+
if (!apiKey) {
|
|
198
|
+
throw new Error('HeySeo API key is required. Set HEYSEO_API_KEY environment variable or pass apiKey in config.');
|
|
199
|
+
}
|
|
200
|
+
return new HeySeoApiClient({ apiKey, baseUrl });
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/utils/api-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@heyseo/mcp-server",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "HeySeo MCP Server - Connect LLMs to your SEO data",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"heyseo-mcp": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"dev": "tsc --watch",
|
|
13
|
+
"start": "node dist/index.js",
|
|
14
|
+
"prepare": "npm run build"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"mcp",
|
|
18
|
+
"model-context-protocol",
|
|
19
|
+
"seo",
|
|
20
|
+
"google-search-console",
|
|
21
|
+
"google-analytics",
|
|
22
|
+
"heyseo",
|
|
23
|
+
"claude",
|
|
24
|
+
"anthropic"
|
|
25
|
+
],
|
|
26
|
+
"author": "HeySeo",
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
30
|
+
"zod": "^3.23.8"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@types/node": "^20.11.0",
|
|
34
|
+
"typescript": "^5.3.3"
|
|
35
|
+
},
|
|
36
|
+
"engines": {
|
|
37
|
+
"node": ">=18.0.0"
|
|
38
|
+
},
|
|
39
|
+
"files": [
|
|
40
|
+
"dist"
|
|
41
|
+
]
|
|
42
|
+
}
|