@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.
Files changed (46) hide show
  1. package/README.md +284 -0
  2. package/dist/index.d.ts +10 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +258 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/prompts/index.d.ts +22 -0
  7. package/dist/prompts/index.d.ts.map +1 -0
  8. package/dist/prompts/index.js +267 -0
  9. package/dist/prompts/index.js.map +1 -0
  10. package/dist/resources/index.d.ts +38 -0
  11. package/dist/resources/index.d.ts.map +1 -0
  12. package/dist/resources/index.js +247 -0
  13. package/dist/resources/index.js.map +1 -0
  14. package/dist/tools/comparison.d.ts +159 -0
  15. package/dist/tools/comparison.d.ts.map +1 -0
  16. package/dist/tools/comparison.js +482 -0
  17. package/dist/tools/comparison.js.map +1 -0
  18. package/dist/tools/ga4.d.ts +182 -0
  19. package/dist/tools/ga4.d.ts.map +1 -0
  20. package/dist/tools/ga4.js +429 -0
  21. package/dist/tools/ga4.js.map +1 -0
  22. package/dist/tools/gsc.d.ts +194 -0
  23. package/dist/tools/gsc.d.ts.map +1 -0
  24. package/dist/tools/gsc.js +348 -0
  25. package/dist/tools/gsc.js.map +1 -0
  26. package/dist/tools/index.d.ts +392 -0
  27. package/dist/tools/index.d.ts.map +1 -0
  28. package/dist/tools/index.js +59 -0
  29. package/dist/tools/index.js.map +1 -0
  30. package/dist/tools/pagespeed.d.ts +88 -0
  31. package/dist/tools/pagespeed.d.ts.map +1 -0
  32. package/dist/tools/pagespeed.js +285 -0
  33. package/dist/tools/pagespeed.js.map +1 -0
  34. package/dist/tools/tasks.d.ts +71 -0
  35. package/dist/tools/tasks.d.ts.map +1 -0
  36. package/dist/tools/tasks.js +116 -0
  37. package/dist/tools/tasks.js.map +1 -0
  38. package/dist/types.d.ts +151 -0
  39. package/dist/types.d.ts.map +1 -0
  40. package/dist/types.js +5 -0
  41. package/dist/types.js.map +1 -0
  42. package/dist/utils/api-client.d.ts +69 -0
  43. package/dist/utils/api-client.d.ts.map +1 -0
  44. package/dist/utils/api-client.js +202 -0
  45. package/dist/utils/api-client.js.map +1 -0
  46. 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
+ }