@heyseo/mcp-server 0.2.1 → 0.3.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 +119 -22
- package/dist/index.js +382 -2
- package/dist/index.js.map +1 -1
- package/dist/tools/chat.d.ts +44 -0
- package/dist/tools/chat.d.ts.map +1 -0
- package/dist/tools/chat.js +37 -0
- package/dist/tools/chat.js.map +1 -0
- package/dist/tools/conversations.d.ts +95 -0
- package/dist/tools/conversations.d.ts.map +1 -0
- package/dist/tools/conversations.js +110 -0
- package/dist/tools/conversations.js.map +1 -0
- package/dist/tools/dataforseo.d.ts +49 -0
- package/dist/tools/dataforseo.d.ts.map +1 -0
- package/dist/tools/dataforseo.js +37 -0
- package/dist/tools/dataforseo.js.map +1 -0
- package/dist/tools/index.d.ts +1618 -75
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +105 -20
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/indexing.d.ts +134 -0
- package/dist/tools/indexing.d.ts.map +1 -1
- package/dist/tools/indexing.js +163 -0
- package/dist/tools/indexing.js.map +1 -1
- package/dist/tools/insights.d.ts +25 -2
- package/dist/tools/insights.d.ts.map +1 -1
- package/dist/tools/insights.js +27 -0
- package/dist/tools/insights.js.map +1 -1
- package/dist/tools/knowledge.d.ts +98 -0
- package/dist/tools/knowledge.d.ts.map +1 -0
- package/dist/tools/knowledge.js +69 -0
- package/dist/tools/knowledge.js.map +1 -0
- package/dist/tools/memory.d.ts +273 -0
- package/dist/tools/memory.d.ts.map +1 -1
- package/dist/tools/memory.js +153 -0
- package/dist/tools/memory.js.map +1 -1
- package/dist/tools/notifications.d.ts +75 -0
- package/dist/tools/notifications.d.ts.map +1 -0
- package/dist/tools/notifications.js +62 -0
- package/dist/tools/notifications.js.map +1 -0
- package/dist/tools/onpage.d.ts +36 -2
- package/dist/tools/onpage.d.ts.map +1 -1
- package/dist/tools/onpage.js +29 -0
- package/dist/tools/onpage.js.map +1 -1
- package/dist/tools/pagespeed.d.ts +39 -0
- package/dist/tools/pagespeed.d.ts.map +1 -1
- package/dist/tools/pagespeed.js +29 -0
- package/dist/tools/pagespeed.js.map +1 -1
- package/dist/tools/reports.d.ts +174 -0
- package/dist/tools/reports.d.ts.map +1 -1
- package/dist/tools/reports.js +142 -0
- package/dist/tools/reports.js.map +1 -1
- package/dist/tools/serp.d.ts +85 -2
- package/dist/tools/serp.d.ts.map +1 -1
- package/dist/tools/serp.js +58 -0
- package/dist/tools/serp.js.map +1 -1
- package/dist/tools/site.d.ts +47 -0
- package/dist/tools/site.d.ts.map +1 -1
- package/dist/tools/site.js +88 -1
- package/dist/tools/site.js.map +1 -1
- package/dist/tools/sitemaps.d.ts +44 -2
- package/dist/tools/sitemaps.d.ts.map +1 -1
- package/dist/tools/sitemaps.js +56 -0
- package/dist/tools/sitemaps.js.map +1 -1
- package/dist/tools/tasks.d.ts +56 -2
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +46 -0
- package/dist/tools/tasks.js.map +1 -1
- package/dist/utils/api-client.d.ts +48 -0
- package/dist/utils/api-client.d.ts.map +1 -1
- package/dist/utils/api-client.js +274 -0
- package/dist/utils/api-client.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
# HeySeo MCP Server
|
|
5
5
|
|
|
6
|
-
Connect your LLM to your SEO data. Query Google Search Console, Google Analytics 4, PageSpeed Insights, SERP data, indexing health, AI insights, and more
|
|
6
|
+
Connect your LLM to your SEO data. Query Google Search Console, Google Analytics 4, PageSpeed Insights, SERP data, indexing health, AI insights, and more - directly from Claude, ChatGPT, Cursor, or any MCP-compatible client.
|
|
7
7
|
|
|
8
|
-
**
|
|
8
|
+
**72 tools** | **10 resources** | **12 prompts**
|
|
9
9
|
</div>
|
|
10
10
|
|
|
11
11
|
## Quick Start
|
|
@@ -159,6 +159,9 @@ Restart Claude Desktop, Cursor, or your MCP client to load the new server.
|
|
|
159
159
|
| `heyseo_list_sites` | List all available sites and their connection status (GSC/GA4) |
|
|
160
160
|
| `heyseo_select_site` | Select a specific site for all subsequent operations |
|
|
161
161
|
| `heyseo_get_current_site` | Get information about the currently selected site |
|
|
162
|
+
| `heyseo_update_site` | Update site settings (name, URL) |
|
|
163
|
+
| `heyseo_delete_site` | Delete a site from your account |
|
|
164
|
+
| `heyseo_sync_analytics` | Trigger an analytics data sync for a site |
|
|
162
165
|
|
|
163
166
|
### Google Search Console
|
|
164
167
|
|
|
@@ -183,6 +186,7 @@ Restart Claude Desktop, Cursor, or your MCP client to load the new server.
|
|
|
183
186
|
|------|-------------|
|
|
184
187
|
| `heyseo_pagespeed` | Run PageSpeed Insights analysis with Core Web Vitals |
|
|
185
188
|
| `heyseo_pagespeed_bulk` | Analyze multiple pages at once |
|
|
189
|
+
| `heyseo_pagespeed_history` | Get PageSpeed analysis history for a site |
|
|
186
190
|
|
|
187
191
|
### Comparison & Opportunities
|
|
188
192
|
|
|
@@ -201,6 +205,7 @@ Restart Claude Desktop, Cursor, or your MCP client to load the new server.
|
|
|
201
205
|
| `heyseo_get_task` | Get detailed information about a specific task |
|
|
202
206
|
| `heyseo_update_task` | Update task title, description, status, priority, or category |
|
|
203
207
|
| `heyseo_delete_task` | Delete a task from the Kanban board |
|
|
208
|
+
| `heyseo_move_task` | Move or reorder a task on the Kanban board |
|
|
204
209
|
| `heyseo_bulk_create_tasks` | Create multiple tasks at once (up to 10) |
|
|
205
210
|
| `heyseo_bulk_update_tasks` | Update multiple tasks at once (up to 10) |
|
|
206
211
|
|
|
@@ -210,6 +215,11 @@ Restart Claude Desktop, Cursor, or your MCP client to load the new server.
|
|
|
210
215
|
|------|-------------|
|
|
211
216
|
| `heyseo_list_reports` | List AI-generated SEO reports (weekly/monthly) |
|
|
212
217
|
| `heyseo_get_report` | Get full report details including metrics and AI analysis |
|
|
218
|
+
| `heyseo_generate_report` | Generate a new SEO report on demand |
|
|
219
|
+
| `heyseo_delete_report` | Delete a report |
|
|
220
|
+
| `heyseo_report_settings` | Get report schedule settings for a site |
|
|
221
|
+
| `heyseo_update_report_settings` | Update report schedule (day, time, frequency) |
|
|
222
|
+
| `heyseo_send_test_report` | Send a test report email to verify setup |
|
|
213
223
|
|
|
214
224
|
### Indexing Health
|
|
215
225
|
|
|
@@ -218,39 +228,91 @@ Restart Claude Desktop, Cursor, or your MCP client to load the new server.
|
|
|
218
228
|
| `heyseo_indexing_status` | Get indexing health summary (indexed/not-indexed counts, health score) |
|
|
219
229
|
| `heyseo_indexing_pages` | List pages with their indexing verdict and coverage state |
|
|
220
230
|
| `heyseo_submit_for_indexing` | Submit a page to Google's Indexing API for faster indexing |
|
|
231
|
+
| `heyseo_indexing_check` | Trigger an indexing check for all monitored pages |
|
|
232
|
+
| `heyseo_indexing_history` | Get indexing check history over time |
|
|
233
|
+
| `heyseo_indexing_settings` | Get indexing monitoring settings |
|
|
234
|
+
| `heyseo_update_indexing_settings` | Update indexing monitoring settings |
|
|
235
|
+
| `heyseo_indexing_submissions` | Get indexing submission history |
|
|
236
|
+
| `heyseo_remove_indexing_page` | Remove a page from indexing monitoring |
|
|
221
237
|
|
|
222
238
|
### SEO Memory
|
|
223
239
|
|
|
224
240
|
| Tool | Description |
|
|
225
241
|
|------|-------------|
|
|
226
242
|
| `heyseo_get_memory` | Get full SEO memory context (strategy, goals, learnings, health trend) |
|
|
227
|
-
| `heyseo_update_strategy` | Update SEO strategy summary
|
|
228
|
-
| `heyseo_record_action` | Record an SEO action
|
|
229
|
-
| `heyseo_add_learning` | Add a key fact or success pattern to
|
|
243
|
+
| `heyseo_update_strategy` | Update SEO strategy summary |
|
|
244
|
+
| `heyseo_record_action` | Record an SEO action with hypothesis and metrics to track |
|
|
245
|
+
| `heyseo_add_learning` | Add a key fact or success pattern to site memory |
|
|
246
|
+
| `heyseo_delete_goal` | Delete a goal |
|
|
247
|
+
| `heyseo_memory_snapshots` | Get performance snapshots over time |
|
|
248
|
+
| `heyseo_generate_snapshot` | Generate a new performance snapshot |
|
|
249
|
+
| `heyseo_queue_action` | Queue an action for future implementation |
|
|
250
|
+
| `heyseo_update_queued_action` | Update a queued action's status or priority |
|
|
230
251
|
|
|
231
252
|
### AI Insights
|
|
232
253
|
|
|
233
254
|
| Tool | Description |
|
|
234
255
|
|------|-------------|
|
|
235
|
-
| `heyseo_get_insights` | Get AI-generated insights (anomalies, opportunities, alerts, trends
|
|
256
|
+
| `heyseo_get_insights` | Get AI-generated insights (anomalies, opportunities, alerts, trends) |
|
|
257
|
+
| `heyseo_generate_insights` | Generate new AI insights on demand |
|
|
258
|
+
|
|
259
|
+
### AI Knowledge
|
|
260
|
+
|
|
261
|
+
| Tool | Description |
|
|
262
|
+
|------|-------------|
|
|
263
|
+
| `heyseo_get_knowledge` | Get the AI knowledge base for a site |
|
|
264
|
+
| `heyseo_update_knowledge` | Update AI knowledge (business context, competitors, goals) |
|
|
265
|
+
|
|
266
|
+
### AI Chat
|
|
267
|
+
|
|
268
|
+
| Tool | Description |
|
|
269
|
+
|------|-------------|
|
|
270
|
+
| `heyseo_chat` | Send a message to the AI assistant about your SEO data |
|
|
271
|
+
|
|
272
|
+
### Conversations
|
|
273
|
+
|
|
274
|
+
| Tool | Description |
|
|
275
|
+
|------|-------------|
|
|
276
|
+
| `heyseo_list_conversations` | List AI chat conversations |
|
|
277
|
+
| `heyseo_get_conversation` | Get a conversation with all messages |
|
|
278
|
+
| `heyseo_create_conversation` | Create a new conversation |
|
|
279
|
+
| `heyseo_delete_conversation` | Delete a conversation |
|
|
236
280
|
|
|
237
281
|
### On-Page Audit
|
|
238
282
|
|
|
239
283
|
| Tool | Description |
|
|
240
284
|
|------|-------------|
|
|
241
|
-
| `heyseo_onpage_audit` | Run a full on-page SEO audit on any URL
|
|
285
|
+
| `heyseo_onpage_audit` | Run a full on-page SEO audit on any URL |
|
|
286
|
+
| `heyseo_onpage_history` | Get on-page audit history for a site |
|
|
242
287
|
|
|
243
288
|
### SERP Analysis
|
|
244
289
|
|
|
245
290
|
| Tool | Description |
|
|
246
291
|
|------|-------------|
|
|
247
292
|
| `heyseo_serp_search` | Search Google SERP for a keyword with organic results, featured snippets, and PAA |
|
|
293
|
+
| `heyseo_serp_history` | Get SERP search history |
|
|
294
|
+
| `heyseo_serp_batch` | Batch SERP preview for multiple keywords at once |
|
|
248
295
|
|
|
249
296
|
### Sitemaps
|
|
250
297
|
|
|
251
298
|
| Tool | Description |
|
|
252
299
|
|------|-------------|
|
|
253
|
-
| `heyseo_list_sitemaps` | List sitemaps registered in Google Search Console
|
|
300
|
+
| `heyseo_list_sitemaps` | List sitemaps registered in Google Search Console |
|
|
301
|
+
| `heyseo_submit_sitemap` | Submit a sitemap to Google Search Console |
|
|
302
|
+
| `heyseo_delete_sitemap` | Delete a sitemap from Google Search Console |
|
|
303
|
+
|
|
304
|
+
### DataForSEO
|
|
305
|
+
|
|
306
|
+
| Tool | Description |
|
|
307
|
+
|------|-------------|
|
|
308
|
+
| `heyseo_keyword_volume` | Get keyword search volume data for one or more keywords |
|
|
309
|
+
|
|
310
|
+
### Notifications
|
|
311
|
+
|
|
312
|
+
| Tool | Description |
|
|
313
|
+
|------|-------------|
|
|
314
|
+
| `heyseo_notification_settings` | Get notification settings |
|
|
315
|
+
| `heyseo_update_notification_settings` | Update notification preferences |
|
|
254
316
|
|
|
255
317
|
---
|
|
256
318
|
|
|
@@ -306,9 +368,6 @@ Before performing any SEO operations, you must select a site:
|
|
|
306
368
|
**Select a site:**
|
|
307
369
|
> "Select the site with ID: abc123def456"
|
|
308
370
|
|
|
309
|
-
**Check current site:**
|
|
310
|
-
> "What site am I currently working with?"
|
|
311
|
-
|
|
312
371
|
### Performance Analysis
|
|
313
372
|
|
|
314
373
|
> "What are my top 10 keywords this month?"
|
|
@@ -337,13 +396,19 @@ Before performing any SEO operations, you must select a site:
|
|
|
337
396
|
|
|
338
397
|
> "Submit my /new-landing-page for indexing"
|
|
339
398
|
|
|
399
|
+
> "Run an indexing check on all monitored pages"
|
|
400
|
+
|
|
401
|
+
> "Show me the indexing submission history"
|
|
402
|
+
|
|
340
403
|
### Reports & Insights
|
|
341
404
|
|
|
342
405
|
> "Show me my latest SEO reports"
|
|
343
406
|
|
|
407
|
+
> "Generate a new weekly report"
|
|
408
|
+
|
|
344
409
|
> "What AI insights do you have for my site?"
|
|
345
410
|
|
|
346
|
-
> "
|
|
411
|
+
> "Generate fresh insights for my site"
|
|
347
412
|
|
|
348
413
|
### Strategy & Memory
|
|
349
414
|
|
|
@@ -357,6 +422,18 @@ Before performing any SEO operations, you must select a site:
|
|
|
357
422
|
|
|
358
423
|
> "Add a learning: long-form guides rank better for informational queries"
|
|
359
424
|
|
|
425
|
+
> "Take a performance snapshot"
|
|
426
|
+
|
|
427
|
+
> "Queue an action to rewrite our FAQ page"
|
|
428
|
+
|
|
429
|
+
### AI Chat & Knowledge
|
|
430
|
+
|
|
431
|
+
> "Chat with the AI about my site's SEO performance"
|
|
432
|
+
|
|
433
|
+
> "Show me the AI knowledge base for this site"
|
|
434
|
+
|
|
435
|
+
> "Update the knowledge base with our business context"
|
|
436
|
+
|
|
360
437
|
### Task Management
|
|
361
438
|
|
|
362
439
|
> "Review my SEO tasks and help me prioritize them"
|
|
@@ -365,10 +442,18 @@ Before performing any SEO operations, you must select a site:
|
|
|
365
442
|
|
|
366
443
|
> "Mark all the technical tasks as done"
|
|
367
444
|
|
|
445
|
+
> "Move the title tag task to in-progress"
|
|
446
|
+
|
|
447
|
+
### Keyword Research
|
|
448
|
+
|
|
449
|
+
> "Get search volume for 'seo tools', 'seo software', 'seo platform'"
|
|
450
|
+
|
|
368
451
|
### Sitemaps
|
|
369
452
|
|
|
370
453
|
> "List my sitemaps from Google Search Console"
|
|
371
454
|
|
|
455
|
+
> "Submit a new sitemap at /sitemap.xml"
|
|
456
|
+
|
|
372
457
|
---
|
|
373
458
|
|
|
374
459
|
## API Key Scopes
|
|
@@ -378,20 +463,32 @@ When creating an API key, you can restrict access to specific features:
|
|
|
378
463
|
| Scope | Description |
|
|
379
464
|
|-------|-------------|
|
|
380
465
|
| `sites:read` | Read site information |
|
|
466
|
+
| `sites:write` | Update or delete sites |
|
|
381
467
|
| `gsc:read` | Read Google Search Console data |
|
|
382
468
|
| `ga4:read` | Read Google Analytics 4 data |
|
|
383
|
-
| `pagespeed:read` | Run PageSpeed analyses |
|
|
469
|
+
| `pagespeed:read` | Run PageSpeed analyses and view history |
|
|
384
470
|
| `tasks:read` | Read tasks |
|
|
385
|
-
| `tasks:write` | Create, update, delete tasks |
|
|
386
|
-
| `reports:read` | Read AI-generated reports |
|
|
387
|
-
| `
|
|
388
|
-
| `indexing:
|
|
389
|
-
| `
|
|
390
|
-
| `memory:
|
|
471
|
+
| `tasks:write` | Create, update, delete, move tasks |
|
|
472
|
+
| `reports:read` | Read AI-generated reports and settings |
|
|
473
|
+
| `reports:write` | Generate, delete reports and update settings |
|
|
474
|
+
| `indexing:read` | Read indexing status, pages, history, settings |
|
|
475
|
+
| `indexing:write` | Submit for indexing, run checks, update settings, remove pages |
|
|
476
|
+
| `memory:read` | Read SEO memory, snapshots |
|
|
477
|
+
| `memory:write` | Update strategy, goals, actions, learnings, snapshots |
|
|
391
478
|
| `insights:read` | Read AI-generated insights |
|
|
392
|
-
| `
|
|
393
|
-
| `
|
|
479
|
+
| `insights:write` | Generate new insights |
|
|
480
|
+
| `knowledge:read` | Read AI knowledge base |
|
|
481
|
+
| `knowledge:write` | Update AI knowledge |
|
|
482
|
+
| `onpage:read` | Run on-page audits and view history |
|
|
483
|
+
| `serp:read` | Search Google SERP and view history |
|
|
394
484
|
| `sitemaps:read` | Read GSC sitemaps |
|
|
485
|
+
| `sitemaps:write` | Submit or delete GSC sitemaps |
|
|
486
|
+
| `chat:write` | Send messages to AI assistant |
|
|
487
|
+
| `conversations:read` | Read conversations |
|
|
488
|
+
| `conversations:write` | Create or delete conversations |
|
|
489
|
+
| `notifications:read` | Read notification settings |
|
|
490
|
+
| `notifications:write` | Update notification settings |
|
|
491
|
+
| `dataforseo:read` | Access keyword volume data |
|
|
395
492
|
|
|
396
493
|
Use `all` scope for full access.
|
|
397
494
|
|
|
@@ -402,7 +499,7 @@ Use `all` scope for full access.
|
|
|
402
499
|
| Variable | Required | Default | Description |
|
|
403
500
|
|----------|----------|---------|-------------|
|
|
404
501
|
| `HEYSEO_API_KEY` | Yes | - | Your HeySeo API key |
|
|
405
|
-
| `HEYSEO_API_URL` | No | `https://
|
|
502
|
+
| `HEYSEO_API_URL` | No | `https://my.heyseo.app` | Custom API URL |
|
|
406
503
|
|
|
407
504
|
## Rate Limits
|
|
408
505
|
|
package/dist/index.js
CHANGED
|
@@ -11,8 +11,11 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
|
11
11
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
12
12
|
import { z } from 'zod';
|
|
13
13
|
import { createApiClient } from './utils/api-client.js';
|
|
14
|
-
import {
|
|
15
|
-
|
|
14
|
+
import {
|
|
15
|
+
// Execute functions
|
|
16
|
+
executeListSites, executeSelectSite, executeGetCurrentSite, executeUpdateSite, executeDeleteSite, executeSyncAnalytics, executeQueryGSC, executeTopKeywords, executeTopPages, executeRankingHistory, executeQueryGA4, executeLandingPages, executeTrafficSources, executeAnalyzePageSpeed, executeBulkPageSpeed, executePagespeedHistory, executeComparePeriod, executeWeekOverWeek, executeFindOpportunities, executeCreateTask, executeListTasks, executeGetTask, executeUpdateTask, executeDeleteTask, executeBulkCreateTasks, executeBulkUpdateTasks, executeMoveTask, executeListReports, executeGetReport, executeGenerateReport, executeDeleteReport, executeReportSettings, executeUpdateReportSettings, executeSendTestReport, executeIndexingStatus, executeIndexingPages, executeSubmitForIndexing, executeIndexingCheck, executeIndexingHistory, executeIndexingSettings, executeUpdateIndexingSettings, executeIndexingSubmissions, executeRemoveIndexingPage, executeGetMemory, executeUpdateStrategy, executeRecordAction, executeAddLearning, executeDeleteGoal, executeMemorySnapshots, executeGenerateSnapshot, executeQueueAction, executeUpdateQueuedAction, executeGetInsights, executeGenerateInsights, executeOnpageAudit, executeOnpageHistory, executeSerpSearch, executeSerpHistory, executeSerpBatch, executeListSitemaps, executeSubmitSitemap, executeDeleteSitemap, executeGetKnowledge, executeUpdateKnowledge, executeNotificationSettings, executeUpdateNotificationSettings, executeKeywordVolume, executeChat, executeListConversations, executeGetConversation, executeCreateConversation, executeDeleteConversation,
|
|
17
|
+
// Schemas
|
|
18
|
+
selectSiteSchema, updateSiteSchema, deleteSiteSchema, syncAnalyticsSchema, queryGSCSchema, topKeywordsSchema, topPagesSchema, rankingHistorySchema, queryGA4Schema, landingPagesSchema, trafficSourcesSchema, analyzePageSpeedSchema, bulkPageSpeedSchema, pagespeedHistorySchema, comparePeriodSchema, weekOverWeekSchema, findOpportunitiesSchema, createTaskSchema, listTasksSchema, getTaskSchema, updateTaskSchema, deleteTaskSchema, bulkCreateTasksSchema, bulkUpdateTasksSchema, moveTaskSchema, listReportsSchema, getReportSchema, generateReportSchema, deleteReportSchema, reportSettingsSchema, updateReportSettingsSchema, sendTestReportSchema, indexingStatusSchema, indexingPagesSchema, submitForIndexingSchema, indexingCheckSchema, indexingHistorySchema, indexingSettingsSchema, updateIndexingSettingsSchema, indexingSubmissionsSchema, removeIndexingPageSchema, getMemorySchema, updateStrategySchema, recordActionSchema, addLearningSchema, deleteGoalSchema, memorySnapshotsSchema, generateSnapshotSchema, queueActionSchema, updateQueuedActionSchema, getInsightsSchema, generateInsightsSchema, onpageAuditSchema, onpageHistorySchema, serpSearchSchema, serpHistorySchema, serpBatchSchema, listSitemapsSchema, submitSitemapSchema, deleteSitemapSchema, getKnowledgeSchema, updateKnowledgeSchema, updateNotificationSettingsSchema, keywordVolumeSchema, chatSchema, listConversationsSchema, getConversationSchema, createConversationSchema, deleteConversationSchema, } from './tools/index.js';
|
|
16
19
|
import { listResources } from './resources/index.js';
|
|
17
20
|
import { generatePromptMessages } from './prompts/index.js';
|
|
18
21
|
Sentry.init({
|
|
@@ -393,6 +396,383 @@ server.registerTool('heyseo_list_sitemaps', {
|
|
|
393
396
|
return { content: [{ type: 'text', text: result }] };
|
|
394
397
|
});
|
|
395
398
|
// ──────────────────────────────────────────
|
|
399
|
+
// Site Tools (extended)
|
|
400
|
+
// ──────────────────────────────────────────
|
|
401
|
+
server.registerTool('heyseo_update_site', {
|
|
402
|
+
title: 'Update Site',
|
|
403
|
+
description: 'Update site settings',
|
|
404
|
+
inputSchema: updateSiteSchema.shape,
|
|
405
|
+
}, async (args) => {
|
|
406
|
+
const client = getClient();
|
|
407
|
+
const result = await executeUpdateSite(client, args);
|
|
408
|
+
return { content: [{ type: 'text', text: result }] };
|
|
409
|
+
});
|
|
410
|
+
server.registerTool('heyseo_delete_site', {
|
|
411
|
+
title: 'Delete Site',
|
|
412
|
+
description: 'Delete a site',
|
|
413
|
+
inputSchema: deleteSiteSchema.shape,
|
|
414
|
+
}, async (args) => {
|
|
415
|
+
const client = getClient();
|
|
416
|
+
const result = await executeDeleteSite(client, args);
|
|
417
|
+
return { content: [{ type: 'text', text: result }] };
|
|
418
|
+
});
|
|
419
|
+
server.registerTool('heyseo_sync_analytics', {
|
|
420
|
+
title: 'Sync Analytics',
|
|
421
|
+
description: 'Trigger analytics data sync for a site',
|
|
422
|
+
inputSchema: syncAnalyticsSchema.shape,
|
|
423
|
+
}, async (args) => {
|
|
424
|
+
const client = getClient();
|
|
425
|
+
const result = await executeSyncAnalytics(client, args);
|
|
426
|
+
return { content: [{ type: 'text', text: result }] };
|
|
427
|
+
});
|
|
428
|
+
// ──────────────────────────────────────────
|
|
429
|
+
// PageSpeed Tools (extended)
|
|
430
|
+
// ──────────────────────────────────────────
|
|
431
|
+
server.registerTool('heyseo_pagespeed_history', {
|
|
432
|
+
title: 'PageSpeed History',
|
|
433
|
+
description: 'Get PageSpeed analysis history',
|
|
434
|
+
inputSchema: pagespeedHistorySchema.shape,
|
|
435
|
+
}, async (args) => {
|
|
436
|
+
const client = getClient();
|
|
437
|
+
const result = await executePagespeedHistory(client, args);
|
|
438
|
+
return { content: [{ type: 'text', text: result }] };
|
|
439
|
+
});
|
|
440
|
+
// ──────────────────────────────────────────
|
|
441
|
+
// Task Tools (extended)
|
|
442
|
+
// ──────────────────────────────────────────
|
|
443
|
+
server.registerTool('heyseo_move_task', {
|
|
444
|
+
title: 'Move Task',
|
|
445
|
+
description: 'Move or reorder a task on the Kanban board',
|
|
446
|
+
inputSchema: moveTaskSchema.shape,
|
|
447
|
+
}, async (args) => {
|
|
448
|
+
const client = getClient();
|
|
449
|
+
const result = await executeMoveTask(client, args);
|
|
450
|
+
return { content: [{ type: 'text', text: result }] };
|
|
451
|
+
});
|
|
452
|
+
// ──────────────────────────────────────────
|
|
453
|
+
// Reports Tools (extended)
|
|
454
|
+
// ──────────────────────────────────────────
|
|
455
|
+
server.registerTool('heyseo_generate_report', {
|
|
456
|
+
title: 'Generate Report',
|
|
457
|
+
description: 'Generate a new SEO report',
|
|
458
|
+
inputSchema: generateReportSchema.shape,
|
|
459
|
+
}, async (args) => {
|
|
460
|
+
const client = getClient();
|
|
461
|
+
const result = await executeGenerateReport(client, args);
|
|
462
|
+
return { content: [{ type: 'text', text: result }] };
|
|
463
|
+
});
|
|
464
|
+
server.registerTool('heyseo_delete_report', {
|
|
465
|
+
title: 'Delete Report',
|
|
466
|
+
description: 'Delete a report',
|
|
467
|
+
inputSchema: deleteReportSchema.shape,
|
|
468
|
+
}, async (args) => {
|
|
469
|
+
const client = getClient();
|
|
470
|
+
const result = await executeDeleteReport(client, args);
|
|
471
|
+
return { content: [{ type: 'text', text: result }] };
|
|
472
|
+
});
|
|
473
|
+
server.registerTool('heyseo_report_settings', {
|
|
474
|
+
title: 'Report Settings',
|
|
475
|
+
description: 'Get report schedule settings',
|
|
476
|
+
inputSchema: reportSettingsSchema.shape,
|
|
477
|
+
}, async (args) => {
|
|
478
|
+
const client = getClient();
|
|
479
|
+
const result = await executeReportSettings(client, args);
|
|
480
|
+
return { content: [{ type: 'text', text: result }] };
|
|
481
|
+
});
|
|
482
|
+
server.registerTool('heyseo_update_report_settings', {
|
|
483
|
+
title: 'Update Report Settings',
|
|
484
|
+
description: 'Update report schedule settings',
|
|
485
|
+
inputSchema: updateReportSettingsSchema.shape,
|
|
486
|
+
}, async (args) => {
|
|
487
|
+
const client = getClient();
|
|
488
|
+
const result = await executeUpdateReportSettings(client, args);
|
|
489
|
+
return { content: [{ type: 'text', text: result }] };
|
|
490
|
+
});
|
|
491
|
+
server.registerTool('heyseo_send_test_report', {
|
|
492
|
+
title: 'Send Test Report',
|
|
493
|
+
description: 'Send a test report email',
|
|
494
|
+
inputSchema: sendTestReportSchema.shape,
|
|
495
|
+
}, async (args) => {
|
|
496
|
+
const client = getClient();
|
|
497
|
+
const result = await executeSendTestReport(client, args);
|
|
498
|
+
return { content: [{ type: 'text', text: result }] };
|
|
499
|
+
});
|
|
500
|
+
// ──────────────────────────────────────────
|
|
501
|
+
// Indexing Tools (extended)
|
|
502
|
+
// ──────────────────────────────────────────
|
|
503
|
+
server.registerTool('heyseo_indexing_check', {
|
|
504
|
+
title: 'Indexing Check',
|
|
505
|
+
description: 'Trigger an indexing check for a site',
|
|
506
|
+
inputSchema: indexingCheckSchema.shape,
|
|
507
|
+
}, async (args) => {
|
|
508
|
+
const client = getClient();
|
|
509
|
+
const result = await executeIndexingCheck(client, args);
|
|
510
|
+
return { content: [{ type: 'text', text: result }] };
|
|
511
|
+
});
|
|
512
|
+
server.registerTool('heyseo_indexing_history', {
|
|
513
|
+
title: 'Indexing History',
|
|
514
|
+
description: 'Get indexing check history',
|
|
515
|
+
inputSchema: indexingHistorySchema.shape,
|
|
516
|
+
}, async (args) => {
|
|
517
|
+
const client = getClient();
|
|
518
|
+
const result = await executeIndexingHistory(client, args);
|
|
519
|
+
return { content: [{ type: 'text', text: result }] };
|
|
520
|
+
});
|
|
521
|
+
server.registerTool('heyseo_indexing_settings', {
|
|
522
|
+
title: 'Indexing Settings',
|
|
523
|
+
description: 'Get indexing monitoring settings',
|
|
524
|
+
inputSchema: indexingSettingsSchema.shape,
|
|
525
|
+
}, async (args) => {
|
|
526
|
+
const client = getClient();
|
|
527
|
+
const result = await executeIndexingSettings(client, args);
|
|
528
|
+
return { content: [{ type: 'text', text: result }] };
|
|
529
|
+
});
|
|
530
|
+
server.registerTool('heyseo_update_indexing_settings', {
|
|
531
|
+
title: 'Update Indexing Settings',
|
|
532
|
+
description: 'Update indexing monitoring settings',
|
|
533
|
+
inputSchema: updateIndexingSettingsSchema.shape,
|
|
534
|
+
}, async (args) => {
|
|
535
|
+
const client = getClient();
|
|
536
|
+
const result = await executeUpdateIndexingSettings(client, args);
|
|
537
|
+
return { content: [{ type: 'text', text: result }] };
|
|
538
|
+
});
|
|
539
|
+
server.registerTool('heyseo_indexing_submissions', {
|
|
540
|
+
title: 'Indexing Submissions',
|
|
541
|
+
description: 'Get indexing submission history',
|
|
542
|
+
inputSchema: indexingSubmissionsSchema.shape,
|
|
543
|
+
}, async (args) => {
|
|
544
|
+
const client = getClient();
|
|
545
|
+
const result = await executeIndexingSubmissions(client, args);
|
|
546
|
+
return { content: [{ type: 'text', text: result }] };
|
|
547
|
+
});
|
|
548
|
+
server.registerTool('heyseo_remove_indexing_page', {
|
|
549
|
+
title: 'Remove Indexing Page',
|
|
550
|
+
description: 'Remove a page from indexing monitoring',
|
|
551
|
+
inputSchema: removeIndexingPageSchema.shape,
|
|
552
|
+
}, async (args) => {
|
|
553
|
+
const client = getClient();
|
|
554
|
+
const result = await executeRemoveIndexingPage(client, args);
|
|
555
|
+
return { content: [{ type: 'text', text: result }] };
|
|
556
|
+
});
|
|
557
|
+
// ──────────────────────────────────────────
|
|
558
|
+
// Memory Tools (extended)
|
|
559
|
+
// ──────────────────────────────────────────
|
|
560
|
+
server.registerTool('heyseo_delete_goal', {
|
|
561
|
+
title: 'Delete Goal',
|
|
562
|
+
description: 'Delete a goal',
|
|
563
|
+
inputSchema: deleteGoalSchema.shape,
|
|
564
|
+
}, async (args) => {
|
|
565
|
+
const client = getClient();
|
|
566
|
+
const result = await executeDeleteGoal(client, args);
|
|
567
|
+
return { content: [{ type: 'text', text: result }] };
|
|
568
|
+
});
|
|
569
|
+
server.registerTool('heyseo_memory_snapshots', {
|
|
570
|
+
title: 'Memory Snapshots',
|
|
571
|
+
description: 'Get performance snapshots',
|
|
572
|
+
inputSchema: memorySnapshotsSchema.shape,
|
|
573
|
+
}, async (args) => {
|
|
574
|
+
const client = getClient();
|
|
575
|
+
const result = await executeMemorySnapshots(client, args);
|
|
576
|
+
return { content: [{ type: 'text', text: result }] };
|
|
577
|
+
});
|
|
578
|
+
server.registerTool('heyseo_generate_snapshot', {
|
|
579
|
+
title: 'Generate Snapshot',
|
|
580
|
+
description: 'Generate a new performance snapshot',
|
|
581
|
+
inputSchema: generateSnapshotSchema.shape,
|
|
582
|
+
}, async (args) => {
|
|
583
|
+
const client = getClient();
|
|
584
|
+
const result = await executeGenerateSnapshot(client, args);
|
|
585
|
+
return { content: [{ type: 'text', text: result }] };
|
|
586
|
+
});
|
|
587
|
+
server.registerTool('heyseo_queue_action', {
|
|
588
|
+
title: 'Queue Action',
|
|
589
|
+
description: 'Queue an action for future implementation',
|
|
590
|
+
inputSchema: queueActionSchema.shape,
|
|
591
|
+
}, async (args) => {
|
|
592
|
+
const client = getClient();
|
|
593
|
+
const result = await executeQueueAction(client, args);
|
|
594
|
+
return { content: [{ type: 'text', text: result }] };
|
|
595
|
+
});
|
|
596
|
+
server.registerTool('heyseo_update_queued_action', {
|
|
597
|
+
title: 'Update Queued Action',
|
|
598
|
+
description: 'Update a queued action',
|
|
599
|
+
inputSchema: updateQueuedActionSchema.shape,
|
|
600
|
+
}, async (args) => {
|
|
601
|
+
const client = getClient();
|
|
602
|
+
const result = await executeUpdateQueuedAction(client, args);
|
|
603
|
+
return { content: [{ type: 'text', text: result }] };
|
|
604
|
+
});
|
|
605
|
+
// ──────────────────────────────────────────
|
|
606
|
+
// Insights Tools (extended)
|
|
607
|
+
// ──────────────────────────────────────────
|
|
608
|
+
server.registerTool('heyseo_generate_insights', {
|
|
609
|
+
title: 'Generate Insights',
|
|
610
|
+
description: 'Generate new AI insights',
|
|
611
|
+
inputSchema: generateInsightsSchema.shape,
|
|
612
|
+
}, async (args) => {
|
|
613
|
+
const client = getClient();
|
|
614
|
+
const result = await executeGenerateInsights(client, args);
|
|
615
|
+
return { content: [{ type: 'text', text: result }] };
|
|
616
|
+
});
|
|
617
|
+
// ──────────────────────────────────────────
|
|
618
|
+
// On-Page Tools (extended)
|
|
619
|
+
// ──────────────────────────────────────────
|
|
620
|
+
server.registerTool('heyseo_onpage_history', {
|
|
621
|
+
title: 'On-Page History',
|
|
622
|
+
description: 'Get on-page audit history',
|
|
623
|
+
inputSchema: onpageHistorySchema.shape,
|
|
624
|
+
}, async (args) => {
|
|
625
|
+
const client = getClient();
|
|
626
|
+
const result = await executeOnpageHistory(client, args);
|
|
627
|
+
return { content: [{ type: 'text', text: result }] };
|
|
628
|
+
});
|
|
629
|
+
// ──────────────────────────────────────────
|
|
630
|
+
// SERP Tools (extended)
|
|
631
|
+
// ──────────────────────────────────────────
|
|
632
|
+
server.registerTool('heyseo_serp_history', {
|
|
633
|
+
title: 'SERP History',
|
|
634
|
+
description: 'Get SERP search history',
|
|
635
|
+
inputSchema: serpHistorySchema.shape,
|
|
636
|
+
}, async (args) => {
|
|
637
|
+
const client = getClient();
|
|
638
|
+
const result = await executeSerpHistory(client, args);
|
|
639
|
+
return { content: [{ type: 'text', text: result }] };
|
|
640
|
+
});
|
|
641
|
+
server.registerTool('heyseo_serp_batch', {
|
|
642
|
+
title: 'SERP Batch',
|
|
643
|
+
description: 'Batch SERP preview for multiple keywords',
|
|
644
|
+
inputSchema: serpBatchSchema.shape,
|
|
645
|
+
}, async (args) => {
|
|
646
|
+
const client = getClient();
|
|
647
|
+
const result = await executeSerpBatch(client, args);
|
|
648
|
+
return { content: [{ type: 'text', text: result }] };
|
|
649
|
+
});
|
|
650
|
+
// ──────────────────────────────────────────
|
|
651
|
+
// Sitemaps Tools (extended)
|
|
652
|
+
// ──────────────────────────────────────────
|
|
653
|
+
server.registerTool('heyseo_submit_sitemap', {
|
|
654
|
+
title: 'Submit Sitemap',
|
|
655
|
+
description: 'Submit a sitemap to GSC',
|
|
656
|
+
inputSchema: submitSitemapSchema.shape,
|
|
657
|
+
}, async (args) => {
|
|
658
|
+
const client = getClient();
|
|
659
|
+
const result = await executeSubmitSitemap(client, args);
|
|
660
|
+
return { content: [{ type: 'text', text: result }] };
|
|
661
|
+
});
|
|
662
|
+
server.registerTool('heyseo_delete_sitemap', {
|
|
663
|
+
title: 'Delete Sitemap',
|
|
664
|
+
description: 'Delete a sitemap from GSC',
|
|
665
|
+
inputSchema: deleteSitemapSchema.shape,
|
|
666
|
+
}, async (args) => {
|
|
667
|
+
const client = getClient();
|
|
668
|
+
const result = await executeDeleteSitemap(client, args);
|
|
669
|
+
return { content: [{ type: 'text', text: result }] };
|
|
670
|
+
});
|
|
671
|
+
// ──────────────────────────────────────────
|
|
672
|
+
// Knowledge Tools
|
|
673
|
+
// ──────────────────────────────────────────
|
|
674
|
+
server.registerTool('heyseo_get_knowledge', {
|
|
675
|
+
title: 'Get Knowledge',
|
|
676
|
+
description: 'Get AI knowledge base for a site',
|
|
677
|
+
inputSchema: getKnowledgeSchema.shape,
|
|
678
|
+
}, async (args) => {
|
|
679
|
+
const client = getClient();
|
|
680
|
+
const result = await executeGetKnowledge(client, args);
|
|
681
|
+
return { content: [{ type: 'text', text: result }] };
|
|
682
|
+
});
|
|
683
|
+
server.registerTool('heyseo_update_knowledge', {
|
|
684
|
+
title: 'Update Knowledge',
|
|
685
|
+
description: 'Update AI knowledge base',
|
|
686
|
+
inputSchema: updateKnowledgeSchema.shape,
|
|
687
|
+
}, async (args) => {
|
|
688
|
+
const client = getClient();
|
|
689
|
+
const result = await executeUpdateKnowledge(client, args);
|
|
690
|
+
return { content: [{ type: 'text', text: result }] };
|
|
691
|
+
});
|
|
692
|
+
// ──────────────────────────────────────────
|
|
693
|
+
// Notification Tools
|
|
694
|
+
// ──────────────────────────────────────────
|
|
695
|
+
server.registerTool('heyseo_notification_settings', {
|
|
696
|
+
title: 'Notification Settings',
|
|
697
|
+
description: 'Get notification settings',
|
|
698
|
+
}, async () => {
|
|
699
|
+
const client = getClient();
|
|
700
|
+
const result = await executeNotificationSettings(client, {});
|
|
701
|
+
return { content: [{ type: 'text', text: result }] };
|
|
702
|
+
});
|
|
703
|
+
server.registerTool('heyseo_update_notification_settings', {
|
|
704
|
+
title: 'Update Notification Settings',
|
|
705
|
+
description: 'Update notification settings',
|
|
706
|
+
inputSchema: updateNotificationSettingsSchema.shape,
|
|
707
|
+
}, async (args) => {
|
|
708
|
+
const client = getClient();
|
|
709
|
+
const result = await executeUpdateNotificationSettings(client, args);
|
|
710
|
+
return { content: [{ type: 'text', text: result }] };
|
|
711
|
+
});
|
|
712
|
+
// ──────────────────────────────────────────
|
|
713
|
+
// DataForSEO Tools
|
|
714
|
+
// ──────────────────────────────────────────
|
|
715
|
+
server.registerTool('heyseo_keyword_volume', {
|
|
716
|
+
title: 'Keyword Volume',
|
|
717
|
+
description: 'Get keyword search volume data',
|
|
718
|
+
inputSchema: keywordVolumeSchema.shape,
|
|
719
|
+
}, async (args) => {
|
|
720
|
+
const client = getClient();
|
|
721
|
+
const result = await executeKeywordVolume(client, args);
|
|
722
|
+
return { content: [{ type: 'text', text: result }] };
|
|
723
|
+
});
|
|
724
|
+
// ──────────────────────────────────────────
|
|
725
|
+
// Chat Tools
|
|
726
|
+
// ──────────────────────────────────────────
|
|
727
|
+
server.registerTool('heyseo_chat', {
|
|
728
|
+
title: 'Chat',
|
|
729
|
+
description: 'Send a message to the AI assistant about your SEO data',
|
|
730
|
+
inputSchema: chatSchema.shape,
|
|
731
|
+
}, async (args) => {
|
|
732
|
+
const client = getClient();
|
|
733
|
+
const result = await executeChat(client, args);
|
|
734
|
+
return { content: [{ type: 'text', text: result }] };
|
|
735
|
+
});
|
|
736
|
+
// ──────────────────────────────────────────
|
|
737
|
+
// Conversation Tools
|
|
738
|
+
// ──────────────────────────────────────────
|
|
739
|
+
server.registerTool('heyseo_list_conversations', {
|
|
740
|
+
title: 'List Conversations',
|
|
741
|
+
description: 'List AI chat conversations',
|
|
742
|
+
inputSchema: listConversationsSchema.shape,
|
|
743
|
+
}, async (args) => {
|
|
744
|
+
const client = getClient();
|
|
745
|
+
const result = await executeListConversations(client, args);
|
|
746
|
+
return { content: [{ type: 'text', text: result }] };
|
|
747
|
+
});
|
|
748
|
+
server.registerTool('heyseo_get_conversation', {
|
|
749
|
+
title: 'Get Conversation',
|
|
750
|
+
description: 'Get a conversation with messages',
|
|
751
|
+
inputSchema: getConversationSchema.shape,
|
|
752
|
+
}, async (args) => {
|
|
753
|
+
const client = getClient();
|
|
754
|
+
const result = await executeGetConversation(client, args);
|
|
755
|
+
return { content: [{ type: 'text', text: result }] };
|
|
756
|
+
});
|
|
757
|
+
server.registerTool('heyseo_create_conversation', {
|
|
758
|
+
title: 'Create Conversation',
|
|
759
|
+
description: 'Create a new conversation',
|
|
760
|
+
inputSchema: createConversationSchema.shape,
|
|
761
|
+
}, async (args) => {
|
|
762
|
+
const client = getClient();
|
|
763
|
+
const result = await executeCreateConversation(client, args);
|
|
764
|
+
return { content: [{ type: 'text', text: result }] };
|
|
765
|
+
});
|
|
766
|
+
server.registerTool('heyseo_delete_conversation', {
|
|
767
|
+
title: 'Delete Conversation',
|
|
768
|
+
description: 'Delete a conversation',
|
|
769
|
+
inputSchema: deleteConversationSchema.shape,
|
|
770
|
+
}, async (args) => {
|
|
771
|
+
const client = getClient();
|
|
772
|
+
const result = await executeDeleteConversation(client, args);
|
|
773
|
+
return { content: [{ type: 'text', text: result }] };
|
|
774
|
+
});
|
|
775
|
+
// ──────────────────────────────────────────
|
|
396
776
|
// Resources
|
|
397
777
|
// ──────────────────────────────────────────
|
|
398
778
|
server.registerResource('site-list', 'heyseo://sites', {
|