@heyseo/mcp-server 0.1.3 → 0.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/README.md CHANGED
@@ -1,6 +1,10 @@
1
- # HeySeo MCP Server
1
+ <div align="center">
2
+ <img src="https://heyseo.app/img/logo.svg" alt="HeySeo Logo" width="200" />
2
3
 
3
- Connect your LLM to your SEO data. Query Google Search Console, Google Analytics 4, and PageSpeed Insights directly from Claude, ChatGPT, Cursor, or any MCP-compatible client.
4
+ # HeySeo MCP Server
5
+
6
+ Connect your LLM to your SEO data. Query Google Search Console, Google Analytics 4, and PageSpeed Insights directly from Claude, ChatGPT, Cursor, or any MCP-compatible client.
7
+ </div>
4
8
 
5
9
  ## Quick Start
6
10
 
@@ -144,6 +148,16 @@ Restart Claude Desktop, Cursor, or your MCP client to load the new server.
144
148
 
145
149
  ## Available Tools
146
150
 
151
+ ### Site Management
152
+
153
+ **Select a site before running SEO operations.** The MCP server requires explicit site selection to ensure data isolation and prevent accidental cross-site operations.
154
+
155
+ | Tool | Description |
156
+ |------|-------------|
157
+ | `heyseo_list_sites` | List all available sites and their connection status (GSC/GA4) |
158
+ | `heyseo_select_site` | Select a specific site for all subsequent operations |
159
+ | `heyseo_get_current_site` | Get information about the currently selected site |
160
+
147
161
  ### Google Search Console
148
162
 
149
163
  | Tool | Description |
@@ -220,6 +234,25 @@ Pre-built prompts for common SEO tasks:
220
234
 
221
235
  ## Usage Examples
222
236
 
237
+ ### Site Selection (Start here!)
238
+
239
+ Before performing any SEO operations, you must select a site:
240
+
241
+ **List available sites:**
242
+ > "Show me all my connected sites"
243
+
244
+ **Select a site:**
245
+ > "Select the site with ID: abc123def456"
246
+ >
247
+ > Or ask Claude to list sites and select one for you
248
+
249
+ **Check current site:**
250
+ > "What site am I currently working with?"
251
+
252
+ ### SEO Operations
253
+
254
+ Once a site is selected, you can perform SEO operations:
255
+
223
256
  **Get top keywords:**
224
257
  > "What are my top 10 keywords this month?"
225
258
 
@@ -249,6 +282,44 @@ Pre-built prompts for common SEO tasks:
249
282
 
250
283
  ---
251
284
 
285
+ ## Site Selection Workflow
286
+
287
+ The HeySeo MCP server uses explicit site selection to prevent data isolation issues:
288
+
289
+ ### Typical Workflow
290
+
291
+ 1. **Initialize**: User starts a conversation with Claude
292
+ 2. **List Sites**: User asks to see available sites
293
+ ```
294
+ → heyseo_list_sites
295
+ ← Returns all available sites with IDs and connection status
296
+ ```
297
+ 3. **Select Site**: User chooses which site to work with
298
+ ```
299
+ → heyseo_select_site { siteId: "your-site-id" }
300
+ ← Confirms selection and shows site details
301
+ ```
302
+ 4. **Verify Selection**: (Optional) User confirms the current site
303
+ ```
304
+ → heyseo_get_current_site
305
+ ← Returns details of the selected site
306
+ ```
307
+ 5. **Perform Operations**: All subsequent SEO operations use the selected site
308
+ ```
309
+ → heyseo_query_gsc { siteId: <auto-filled>, ... }
310
+ → heyseo_top_keywords { siteId: <auto-filled>, ... }
311
+ → etc.
312
+ ```
313
+
314
+ ### Benefits
315
+
316
+ - **Data Isolation**: Prevents accidentally querying wrong site's data
317
+ - **Explicit Selection**: User clearly knows which site they're working with
318
+ - **Session Persistence**: Selection persists across multiple operations
319
+ - **Safety**: Perfect for users managing multiple sites
320
+
321
+ ---
322
+
252
323
  ## Environment Variables
253
324
 
254
325
  | Variable | Required | Default | Description |
@@ -263,23 +334,6 @@ Pre-built prompts for common SEO tasks:
263
334
 
264
335
  ---
265
336
 
266
- ## Development
267
-
268
- ```bash
269
- # Clone the repo
270
- git clone https://github.com/heyseo/mcp-server
271
- cd mcp-server
272
-
273
- # Install dependencies
274
- npm install
275
-
276
- # Build
277
- npm run build
278
-
279
- # Test locally
280
- HEYSEO_API_KEY=your_key node dist/index.js
281
- ```
282
-
283
337
  ## License
284
338
 
285
339
  MIT
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
10
10
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
11
11
  import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, ErrorCode, McpError, } from '@modelcontextprotocol/sdk/types.js';
12
12
  import { createApiClient } from './utils/api-client.js';
13
- import { allTools, executeQueryGSC, executeTopKeywords, executeTopPages, executeRankingHistory, executeQueryGA4, executeLandingPages, executeTrafficSources, executeAnalyzePageSpeed, executeBulkPageSpeed, executeComparePeriod, executeWeekOverWeek, executeFindOpportunities, executeCreateTask, executeListTasks, executeGetTask, executeUpdateTask, executeDeleteTask, executeBulkCreateTasks, executeBulkUpdateTasks, queryGSCSchema, topKeywordsSchema, topPagesSchema, rankingHistorySchema, queryGA4Schema, landingPagesSchema, trafficSourcesSchema, analyzePageSpeedSchema, bulkPageSpeedSchema, comparePeriodSchema, weekOverWeekSchema, findOpportunitiesSchema, createTaskSchema, listTasksSchema, getTaskSchema, updateTaskSchema, deleteTaskSchema, bulkCreateTasksSchema, bulkUpdateTasksSchema, } from './tools/index.js';
13
+ import { allTools, executeListSites, executeSelectSite, executeGetCurrentSite, selectSiteSchema, executeQueryGSC, executeTopKeywords, executeTopPages, executeRankingHistory, executeQueryGA4, executeLandingPages, executeTrafficSources, executeAnalyzePageSpeed, executeBulkPageSpeed, executeComparePeriod, executeWeekOverWeek, executeFindOpportunities, executeCreateTask, executeListTasks, executeGetTask, executeUpdateTask, executeDeleteTask, executeBulkCreateTasks, executeBulkUpdateTasks, queryGSCSchema, topKeywordsSchema, topPagesSchema, rankingHistorySchema, queryGA4Schema, landingPagesSchema, trafficSourcesSchema, analyzePageSpeedSchema, bulkPageSpeedSchema, comparePeriodSchema, weekOverWeekSchema, findOpportunitiesSchema, createTaskSchema, listTasksSchema, getTaskSchema, updateTaskSchema, deleteTaskSchema, bulkCreateTasksSchema, bulkUpdateTasksSchema, } from './tools/index.js';
14
14
  import { listResources, fetchResource, resourceTemplates } from './resources/index.js';
15
15
  import { promptTemplates, generatePromptMessages } from './prompts/index.js';
16
16
  // Server info
@@ -22,6 +22,7 @@ const SERVER_VERSION = '0.1.0';
22
22
  class HeySeoMCPServer {
23
23
  server;
24
24
  client = null;
25
+ selectedSiteId = null;
25
26
  constructor() {
26
27
  this.server = new Server({
27
28
  name: SERVER_NAME,
@@ -62,6 +63,24 @@ class HeySeoMCPServer {
62
63
  try {
63
64
  let result;
64
65
  switch (name) {
66
+ // Site Management Tools
67
+ case 'heyseo_list_sites': {
68
+ result = await executeListSites(client);
69
+ break;
70
+ }
71
+ case 'heyseo_select_site': {
72
+ const parsed = selectSiteSchema.parse(args);
73
+ result = await executeSelectSite(client, parsed.siteId);
74
+ // Update the selected site if valid
75
+ if (JSON.parse(result).success) {
76
+ this.selectedSiteId = parsed.siteId;
77
+ }
78
+ break;
79
+ }
80
+ case 'heyseo_get_current_site': {
81
+ result = await executeGetCurrentSite(client, this.selectedSiteId || undefined);
82
+ break;
83
+ }
65
84
  // GSC Tools
66
85
  case 'heyseo_query_gsc': {
67
86
  const parsed = queryGSCSchema.parse(args);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,SAAS,EACT,QAAQ,GACT,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAmB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EACL,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,cAAc;AACd,MAAM,WAAW,GAAG,YAAY,CAAC;AACjC,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B;;GAEG;AACH,MAAM,eAAe;IACX,MAAM,CAAS;IACf,MAAM,GAA2B,IAAI,CAAC;IAE9C;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,cAAc;SACxB,EACD;YACE,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;gBACT,SAAS,EAAE,EAAE;gBACb,OAAO,EAAE,EAAE;aACZ;SACF,CACF,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,UAAU;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YAC/D,OAAO;gBACL,KAAK,EAAE,QAAQ;aAChB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACrE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAEjC,IAAI,CAAC;gBACH,IAAI,MAAc,CAAC;gBAEnB,QAAQ,IAAI,EAAE,CAAC;oBACb,YAAY;oBACZ,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC1C,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAC/C,MAAM;oBACR,CAAC;oBACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;wBAC3B,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC7C,MAAM,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAClD,MAAM;oBACR,CAAC;oBACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC1C,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAC/C,MAAM;oBACR,CAAC;oBACD,KAAK,wBAAwB,CAAC,CAAC,CAAC;wBAC9B,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAChD,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACrD,MAAM;oBACR,CAAC;oBAED,YAAY;oBACZ,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC1C,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAC/C,MAAM;oBACR,CAAC;oBACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;wBAC5B,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC9C,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACnD,MAAM;oBACR,CAAC;oBACD,KAAK,wBAAwB,CAAC,CAAC,CAAC;wBAC9B,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAChD,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACrD,MAAM;oBACR,CAAC;oBAED,kBAAkB;oBAClB,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAClD,MAAM,GAAG,MAAM,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACvD,MAAM;oBACR,CAAC;oBACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;wBAC7B,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC/C,MAAM,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACpD,MAAM;oBACR,CAAC;oBAED,mBAAmB;oBACnB,KAAK,wBAAwB,CAAC,CAAC,CAAC;wBAC9B,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC/C,MAAM,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACpD,MAAM;oBACR,CAAC;oBACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;wBAC7B,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC9C,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACnD,MAAM;oBACR,CAAC;oBACD,KAAK,2BAA2B,CAAC,CAAC,CAAC;wBACjC,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACnD,MAAM,GAAG,MAAM,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACxD,MAAM;oBACR,CAAC;oBAED,aAAa;oBACb,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC5C,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACjD,MAAM;oBACR,CAAC;oBACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;wBACzB,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC3C,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAChD,MAAM;oBACR,CAAC;oBACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACzC,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAC9C,MAAM;oBACR,CAAC;oBACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC5C,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACjD,MAAM;oBACR,CAAC;oBACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC5C,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACjD,MAAM;oBACR,CAAC;oBACD,KAAK,0BAA0B,CAAC,CAAC,CAAC;wBAChC,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACjD,MAAM,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACtD,MAAM;oBACR,CAAC;oBACD,KAAK,0BAA0B,CAAC,CAAC,CAAC;wBAChC,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACjD,MAAM,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACtD,MAAM;oBACR,CAAC;oBAED;wBACE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC;gBAC1E,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,MAAM;yBACb;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;oBAC9B,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;gBACvF,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;yBAC9D;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACnE,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjC,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC9C,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,+DAA+D;gBAC/D,OAAO;oBACL,SAAS,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACvC,GAAG,EAAE,CAAC,CAAC,WAAW;wBAClB,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;qBACrB,CAAC,CAAC;iBACJ,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,wBAAwB;QACxB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACzE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAEjC,IAAI,CAAC;gBACH,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC/D,OAAO;oBACL,QAAQ,EAAE;wBACR;4BACE,GAAG;4BACH,QAAQ;4BACR,IAAI,EAAE,OAAO;yBACd;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,cAAc,EACxB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CACnE,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACjE,OAAO;gBACL,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACnC,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;iBACvB,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,qBAAqB;QACrB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACtE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAEjD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,mBAAmB,IAAI,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,8BAA8B;YAC9B,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACrC,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC/C,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,aAAa,EACvB,8BAA8B,GAAG,CAAC,IAAI,EAAE,CACzC,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAE1D,OAAO;gBACL,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,QAAQ;aACT,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;YAC9B,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC,CAAC;QAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG;QACP,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,sBAAsB,cAAc,mBAAmB,CAAC,CAAC;IACzE,CAAC;CACF;AAED,mBAAmB;AACnB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;AACrC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC3B,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,16 +2,56 @@
2
2
  * Tool Registry
3
3
  * Exports all tools for the HeySeo MCP server
4
4
  */
5
+ import { siteTools, listSitesSchema, getCurrentSiteSchema, selectSiteSchema, executeListSites, executeSelectSite, executeGetCurrentSite } from './site.js';
5
6
  import { gscTools, queryGSCSchema, topKeywordsSchema, topPagesSchema, rankingHistorySchema, executeQueryGSC, executeTopKeywords, executeTopPages, executeRankingHistory } from './gsc.js';
6
7
  import { ga4Tools, queryGA4Schema, landingPagesSchema, trafficSourcesSchema, executeQueryGA4, executeLandingPages, executeTrafficSources } from './ga4.js';
7
8
  import { pagespeedTools, analyzePageSpeedSchema, bulkPageSpeedSchema, executeAnalyzePageSpeed, executeBulkPageSpeed } from './pagespeed.js';
8
9
  import { comparisonTools, comparePeriodSchema, findOpportunitiesSchema, weekOverWeekSchema, executeComparePeriod, executeFindOpportunities, executeWeekOverWeek } from './comparison.js';
9
10
  import { taskTools, createTaskSchema, listTasksSchema, getTaskSchema, updateTaskSchema, deleteTaskSchema, bulkCreateTasksSchema, bulkUpdateTasksSchema, executeCreateTask, executeListTasks, executeGetTask, executeUpdateTask, executeDeleteTask, executeBulkCreateTasks, executeBulkUpdateTasks } from './tasks.js';
10
- export { gscTools, queryGSCSchema, topKeywordsSchema, topPagesSchema, rankingHistorySchema, executeQueryGSC, executeTopKeywords, executeTopPages, executeRankingHistory, ga4Tools, queryGA4Schema, landingPagesSchema, trafficSourcesSchema, executeQueryGA4, executeLandingPages, executeTrafficSources, pagespeedTools, analyzePageSpeedSchema, bulkPageSpeedSchema, executeAnalyzePageSpeed, executeBulkPageSpeed, comparisonTools, comparePeriodSchema, findOpportunitiesSchema, weekOverWeekSchema, executeComparePeriod, executeFindOpportunities, executeWeekOverWeek, taskTools, createTaskSchema, listTasksSchema, getTaskSchema, updateTaskSchema, deleteTaskSchema, bulkCreateTasksSchema, bulkUpdateTasksSchema, executeCreateTask, executeListTasks, executeGetTask, executeUpdateTask, executeDeleteTask, executeBulkCreateTasks, executeBulkUpdateTasks, };
11
+ export { siteTools, listSitesSchema, getCurrentSiteSchema, selectSiteSchema, executeListSites, executeSelectSite, executeGetCurrentSite, gscTools, queryGSCSchema, topKeywordsSchema, topPagesSchema, rankingHistorySchema, executeQueryGSC, executeTopKeywords, executeTopPages, executeRankingHistory, ga4Tools, queryGA4Schema, landingPagesSchema, trafficSourcesSchema, executeQueryGA4, executeLandingPages, executeTrafficSources, pagespeedTools, analyzePageSpeedSchema, bulkPageSpeedSchema, executeAnalyzePageSpeed, executeBulkPageSpeed, comparisonTools, comparePeriodSchema, findOpportunitiesSchema, weekOverWeekSchema, executeComparePeriod, executeFindOpportunities, executeWeekOverWeek, taskTools, createTaskSchema, listTasksSchema, getTaskSchema, updateTaskSchema, deleteTaskSchema, bulkCreateTasksSchema, bulkUpdateTasksSchema, executeCreateTask, executeListTasks, executeGetTask, executeUpdateTask, executeDeleteTask, executeBulkCreateTasks, executeBulkUpdateTasks, };
11
12
  /**
12
13
  * All tool definitions for MCP registration
13
14
  */
14
15
  export declare const allTools: ({
16
+ inputSchema: {
17
+ [x: string]: unknown;
18
+ type: "object";
19
+ properties?: {
20
+ [x: string]: object;
21
+ } | undefined;
22
+ required?: string[] | undefined;
23
+ };
24
+ name: string;
25
+ description?: string | undefined;
26
+ outputSchema?: {
27
+ [x: string]: unknown;
28
+ type: "object";
29
+ properties?: {
30
+ [x: string]: object;
31
+ } | undefined;
32
+ required?: string[] | undefined;
33
+ } | undefined;
34
+ annotations?: {
35
+ title?: string | undefined;
36
+ readOnlyHint?: boolean | undefined;
37
+ destructiveHint?: boolean | undefined;
38
+ idempotentHint?: boolean | undefined;
39
+ openWorldHint?: boolean | undefined;
40
+ } | undefined;
41
+ execution?: {
42
+ taskSupport?: "optional" | "required" | "forbidden" | undefined;
43
+ } | undefined;
44
+ _meta?: {
45
+ [x: string]: unknown;
46
+ } | undefined;
47
+ icons?: {
48
+ src: string;
49
+ mimeType?: string | undefined;
50
+ sizes?: string[] | undefined;
51
+ theme?: "light" | "dark" | undefined;
52
+ }[] | undefined;
53
+ title?: string | undefined;
54
+ } | {
15
55
  name: string;
16
56
  description: string;
17
57
  inputSchema: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAEL,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EAErB,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EAErB,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EAEpB,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EAEnB,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,GACvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoBjD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@
2
2
  * Tool Registry
3
3
  * Exports all tools for the HeySeo MCP server
4
4
  */
5
+ // Site Tools
6
+ import { siteTools, listSitesSchema, getCurrentSiteSchema, selectSiteSchema, executeListSites, executeSelectSite, executeGetCurrentSite, } from './site.js';
5
7
  // GSC Tools
6
8
  import { gscTools, queryGSCSchema, topKeywordsSchema, topPagesSchema, rankingHistorySchema, executeQueryGSC, executeTopKeywords, executeTopPages, executeRankingHistory, } from './gsc.js';
7
9
  // GA4 Tools
@@ -14,6 +16,8 @@ import { comparisonTools, comparePeriodSchema, findOpportunitiesSchema, weekOver
14
16
  import { taskTools, createTaskSchema, listTasksSchema, getTaskSchema, updateTaskSchema, deleteTaskSchema, bulkCreateTasksSchema, bulkUpdateTasksSchema, executeCreateTask, executeListTasks, executeGetTask, executeUpdateTask, executeDeleteTask, executeBulkCreateTasks, executeBulkUpdateTasks, } from './tasks.js';
15
17
  // Re-export everything
16
18
  export {
19
+ // Site
20
+ siteTools, listSitesSchema, getCurrentSiteSchema, selectSiteSchema, executeListSites, executeSelectSite, executeGetCurrentSite,
17
21
  // GSC
18
22
  gscTools, queryGSCSchema, topKeywordsSchema, topPagesSchema, rankingHistorySchema, executeQueryGSC, executeTopKeywords, executeTopPages, executeRankingHistory,
19
23
  // GA4
@@ -28,6 +32,8 @@ taskTools, createTaskSchema, listTasksSchema, getTaskSchema, updateTaskSchema, d
28
32
  * All tool definitions for MCP registration
29
33
  */
30
34
  export const allTools = [
35
+ // Site
36
+ ...siteTools,
31
37
  // GSC
32
38
  ...gscTools,
33
39
  // GA4
@@ -43,6 +49,9 @@ export const allTools = [
43
49
  * Tool name to category mapping
44
50
  */
45
51
  export const toolCategories = {
52
+ heyseo_list_sites: 'site',
53
+ heyseo_select_site: 'site',
54
+ heyseo_get_current_site: 'site',
46
55
  heyseo_query_gsc: 'gsc',
47
56
  heyseo_top_keywords: 'gsc',
48
57
  heyseo_top_pages: 'gsc',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Site Management Tools
3
+ * Tools for selecting and managing the current working site in the MCP context
4
+ */
5
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
6
+ import { z } from 'zod';
7
+ import { HeySeoApiClient } from '../utils/api-client.js';
8
+ /**
9
+ * List all available sites
10
+ */
11
+ export declare function executeListSites(client: HeySeoApiClient): Promise<string>;
12
+ /**
13
+ * Get current selected site
14
+ */
15
+ export declare function executeGetCurrentSite(client: HeySeoApiClient, siteId?: string): Promise<string>;
16
+ /**
17
+ * Validate and confirm site selection
18
+ */
19
+ export declare function executeSelectSite(client: HeySeoApiClient, siteId: string): Promise<string>;
20
+ /**
21
+ * Site management tool schemas
22
+ */
23
+ export declare const listSitesSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
24
+ export declare const getCurrentSiteSchema: z.ZodObject<{
25
+ siteId: z.ZodOptional<z.ZodString>;
26
+ }, "strip", z.ZodTypeAny, {
27
+ siteId?: string | undefined;
28
+ }, {
29
+ siteId?: string | undefined;
30
+ }>;
31
+ export declare const selectSiteSchema: z.ZodObject<{
32
+ siteId: z.ZodString;
33
+ }, "strip", z.ZodTypeAny, {
34
+ siteId: string;
35
+ }, {
36
+ siteId: string;
37
+ }>;
38
+ /**
39
+ * Site management tool definitions
40
+ */
41
+ export declare const siteTools: Tool[];
42
+ //# sourceMappingURL=site.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../src/tools/site.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAmC/E;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCrG;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgChG;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,gDAAe,CAAC;AAE5C,eAAO,MAAM,oBAAoB;;;;;;EAE/B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;EAE3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,IAAI,EAsC3B,CAAC"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Site Management Tools
3
+ * Tools for selecting and managing the current working site in the MCP context
4
+ */
5
+ import { z } from 'zod';
6
+ /**
7
+ * List all available sites
8
+ */
9
+ export async function executeListSites(client) {
10
+ try {
11
+ const sites = await client.getSites();
12
+ if (!sites || sites.length === 0) {
13
+ return JSON.stringify({
14
+ success: true,
15
+ data: {
16
+ sites: [],
17
+ message: 'No sites available. Please add a site first.'
18
+ }
19
+ });
20
+ }
21
+ const formattedSites = sites.map((site) => ({
22
+ id: site.id,
23
+ name: site.name,
24
+ url: site.url,
25
+ gscConnected: site.gscConnected !== false,
26
+ ga4Connected: site.ga4Connected !== false
27
+ }));
28
+ return JSON.stringify({
29
+ success: true,
30
+ data: {
31
+ sites: formattedSites,
32
+ count: formattedSites.length
33
+ }
34
+ });
35
+ }
36
+ catch (error) {
37
+ return JSON.stringify({
38
+ success: false,
39
+ error: error instanceof Error ? error.message : 'Failed to list sites'
40
+ });
41
+ }
42
+ }
43
+ /**
44
+ * Get current selected site
45
+ */
46
+ export async function executeGetCurrentSite(client, siteId) {
47
+ try {
48
+ if (!siteId) {
49
+ return JSON.stringify({
50
+ success: false,
51
+ error: 'No site currently selected. Use heyseo_select_site to choose a site.'
52
+ });
53
+ }
54
+ const sites = await client.getSites();
55
+ const site = sites?.find((s) => s.id === siteId);
56
+ if (!site) {
57
+ return JSON.stringify({
58
+ success: false,
59
+ error: `Site with ID "${siteId}" not found`
60
+ });
61
+ }
62
+ return JSON.stringify({
63
+ success: true,
64
+ data: {
65
+ id: site.id,
66
+ name: site.name,
67
+ url: site.url,
68
+ gscConnected: site.gscConnected !== false,
69
+ ga4Connected: site.ga4Connected !== false
70
+ }
71
+ });
72
+ }
73
+ catch (error) {
74
+ return JSON.stringify({
75
+ success: false,
76
+ error: error instanceof Error ? error.message : 'Failed to get current site'
77
+ });
78
+ }
79
+ }
80
+ /**
81
+ * Validate and confirm site selection
82
+ */
83
+ export async function executeSelectSite(client, siteId) {
84
+ try {
85
+ const sites = await client.getSites();
86
+ const site = sites?.find((s) => s.id === siteId);
87
+ if (!site) {
88
+ return JSON.stringify({
89
+ success: false,
90
+ error: `Site with ID "${siteId}" not found. Use heyseo_list_sites to see available sites.`
91
+ });
92
+ }
93
+ return JSON.stringify({
94
+ success: true,
95
+ data: {
96
+ selected: true,
97
+ site: {
98
+ id: site.id,
99
+ name: site.name,
100
+ url: site.url,
101
+ gscConnected: site.gscConnected !== false,
102
+ ga4Connected: site.ga4Connected !== false
103
+ },
104
+ message: `Successfully selected site: ${site.name}. All subsequent operations will use this site.`
105
+ }
106
+ });
107
+ }
108
+ catch (error) {
109
+ return JSON.stringify({
110
+ success: false,
111
+ error: error instanceof Error ? error.message : 'Failed to select site'
112
+ });
113
+ }
114
+ }
115
+ /**
116
+ * Site management tool schemas
117
+ */
118
+ export const listSitesSchema = z.object({});
119
+ export const getCurrentSiteSchema = z.object({
120
+ siteId: z.string().optional().describe('The currently selected site ID')
121
+ });
122
+ export const selectSiteSchema = z.object({
123
+ siteId: z.string().describe('The ID of the site to select for operations')
124
+ });
125
+ /**
126
+ * Site management tool definitions
127
+ */
128
+ export const siteTools = [
129
+ {
130
+ name: 'heyseo_list_sites',
131
+ description: 'List all available sites for the current company. Shows site names, URLs, and connection status for GSC and GA4.',
132
+ inputSchema: {
133
+ type: 'object',
134
+ properties: {},
135
+ required: []
136
+ }
137
+ },
138
+ {
139
+ name: 'heyseo_select_site',
140
+ description: 'Select a specific site to work with for all subsequent SEO operations. This determines which site\'s data will be queried.',
141
+ inputSchema: {
142
+ type: 'object',
143
+ properties: {
144
+ siteId: {
145
+ type: 'string',
146
+ description: 'The ID of the site to select'
147
+ }
148
+ },
149
+ required: ['siteId']
150
+ }
151
+ },
152
+ {
153
+ name: 'heyseo_get_current_site',
154
+ description: 'Get information about the currently selected site. Returns site details and connection status.',
155
+ inputSchema: {
156
+ type: 'object',
157
+ properties: {
158
+ siteId: {
159
+ type: 'string',
160
+ description: 'The currently selected site ID (stored in context)'
161
+ }
162
+ },
163
+ required: []
164
+ }
165
+ }
166
+ ];
167
+ //# sourceMappingURL=site.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site.js","sourceRoot":"","sources":["../../src/tools/site.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * SEO Audit Workflow Tools
3
+ * Composite workflow tools for high-level site analysis
4
+ */
5
+ import { z } from 'zod';
6
+ import type { HeySeoApiClient } from '../utils/api-client.js';
7
+ export declare const siteAuditSchema: z.ZodObject<{
8
+ siteId: z.ZodString;
9
+ days: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ siteId: string;
12
+ days: number;
13
+ }, {
14
+ siteId: string;
15
+ days?: number | undefined;
16
+ }>;
17
+ export type SiteAuditInput = z.infer<typeof siteAuditSchema>;
18
+ /**
19
+ * Execute site audit workflow
20
+ * Performs comprehensive SEO audit including GSC, GA4, and opportunities analysis
21
+ */
22
+ export declare function executeSiteAudit(client: HeySeoApiClient, input: SiteAuditInput): Promise<string>;
23
+ /**
24
+ * Workflow tool definitions for MCP
25
+ */
26
+ export declare const workflowTools: {
27
+ name: string;
28
+ description: string;
29
+ inputSchema: {
30
+ type: string;
31
+ properties: {
32
+ siteId: {
33
+ type: string;
34
+ description: string;
35
+ };
36
+ days: {
37
+ type: string;
38
+ minimum: number;
39
+ maximum: number;
40
+ default: number;
41
+ description: string;
42
+ };
43
+ };
44
+ required: string[];
45
+ };
46
+ hints: {
47
+ readOnlyHint: boolean;
48
+ destructiveHint: boolean;
49
+ idempotentHint: boolean;
50
+ openWorldHint: boolean;
51
+ };
52
+ }[];
53
+ //# sourceMappingURL=workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,eAAO,MAAM,eAAe;;;;;;;;;EAS1B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE7D;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,MAAM,CAAC,CAgHjB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BzB,CAAC"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * SEO Audit Workflow Tools
3
+ * Composite workflow tools for high-level site analysis
4
+ */
5
+ import { z } from 'zod';
6
+ import { formatResponse, formatErrorResponse } from '../utils/response-formatter.js';
7
+ // Schema for site audit workflow
8
+ export const siteAuditSchema = z.object({
9
+ siteId: z.string().describe('The ID of the site to audit'),
10
+ days: z
11
+ .number()
12
+ .min(7)
13
+ .max(90)
14
+ .optional()
15
+ .default(28)
16
+ .describe('Number of days to analyze'),
17
+ });
18
+ /**
19
+ * Execute site audit workflow
20
+ * Performs comprehensive SEO audit including GSC, GA4, and opportunities analysis
21
+ */
22
+ export async function executeSiteAudit(client, input) {
23
+ try {
24
+ // Calculate date range
25
+ const endDate = new Date().toISOString().split('T')[0];
26
+ const startDate = new Date(Date.now() - input.days * 24 * 60 * 60 * 1000)
27
+ .toISOString()
28
+ .split('T')[0];
29
+ // Fetch all data in parallel
30
+ const [site, overview, topKeywords, topPages, opportunities] = await Promise.all([
31
+ client.getSite(input.siteId),
32
+ client.getSiteOverview(input.siteId, { startDate, endDate }),
33
+ client.getTopKeywords(input.siteId, { startDate, endDate, limit: 10 }),
34
+ client.getTopPages(input.siteId, { startDate, endDate, limit: 10 }),
35
+ client.getOpportunities(input.siteId),
36
+ ]);
37
+ // Extract and format GSC metrics
38
+ const gscRow = overview.gsc.rows[0];
39
+ const gscMetrics = {
40
+ clicks: gscRow?.clicks || 0,
41
+ impressions: gscRow?.impressions || 0,
42
+ ctr: gscRow ? `${(gscRow.ctr * 100).toFixed(2)}%` : '0%',
43
+ avgPosition: gscRow?.position.toFixed(1) || 'N/A',
44
+ };
45
+ // Extract and format GA4 metrics
46
+ const ga4Row = overview.ga4[0];
47
+ const ga4Metrics = {
48
+ sessions: ga4Row?.metrics?.sessions || 0,
49
+ activeUsers: ga4Row?.metrics?.activeUsers || 0,
50
+ bounceRate: ga4Row?.metrics?.bounceRate
51
+ ? `${(ga4Row.metrics.bounceRate * 100).toFixed(1)}%`
52
+ : '0%',
53
+ engagementRate: ga4Row?.metrics?.engagementRate
54
+ ? `${(ga4Row.metrics.engagementRate * 100).toFixed(1)}%`
55
+ : '0%',
56
+ };
57
+ // Format top keywords
58
+ const topKeywordsList = topKeywords.rows.slice(0, 10).map((row, index) => ({
59
+ rank: index + 1,
60
+ keyword: row.keys[0] || 'N/A',
61
+ clicks: row.clicks || 0,
62
+ position: row.position.toFixed(1),
63
+ }));
64
+ // Format top pages
65
+ const topPagesList = topPages.rows.slice(0, 10).map((row, index) => ({
66
+ rank: index + 1,
67
+ page: row.keys[0] || 'N/A',
68
+ clicks: row.clicks || 0,
69
+ position: row.position.toFixed(1),
70
+ }));
71
+ // Count opportunities by type and find high-priority items
72
+ const opportunitiesByType = {
73
+ keyword: 0,
74
+ page: 0,
75
+ technical: 0,
76
+ content: 0,
77
+ };
78
+ const highPriorityOpportunities = [];
79
+ for (const opp of opportunities) {
80
+ const type = opp.type;
81
+ if (type in opportunitiesByType) {
82
+ opportunitiesByType[type]++;
83
+ }
84
+ if (opp.priority === 'high' && highPriorityOpportunities.length < 5) {
85
+ highPriorityOpportunities.push({
86
+ type: opp.type,
87
+ title: opp.title,
88
+ priority: opp.priority,
89
+ });
90
+ }
91
+ }
92
+ // Build audit report
93
+ const auditReport = {
94
+ siteInfo: {
95
+ name: site.name || 'N/A',
96
+ url: site.url || 'N/A',
97
+ gscConnected: site.gscConnected,
98
+ ga4Connected: site.ga4Connected,
99
+ },
100
+ period: {
101
+ startDate,
102
+ endDate,
103
+ days: input.days,
104
+ },
105
+ metrics: {
106
+ gsc: gscMetrics,
107
+ ga4: ga4Metrics,
108
+ },
109
+ topKeywords: topKeywordsList,
110
+ topPages: topPagesList,
111
+ opportunities: {
112
+ total: opportunities.length,
113
+ byType: opportunitiesByType,
114
+ topPriority: highPriorityOpportunities,
115
+ },
116
+ };
117
+ return formatResponse(true, auditReport, {
118
+ summary: `Site audit for ${site.name || site.url} completed`,
119
+ period: { startDate, endDate },
120
+ });
121
+ }
122
+ catch (error) {
123
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
124
+ return formatErrorResponse(errorMessage, 'siteAudit');
125
+ }
126
+ }
127
+ /**
128
+ * Workflow tool definitions for MCP
129
+ */
130
+ export const workflowTools = [
131
+ {
132
+ name: 'heyseo_site_audit',
133
+ description: `Perform comprehensive SEO audit for a site.
134
+
135
+ Analyzes GSC performance data, GA4 user engagement metrics, top keywords and pages, and SEO opportunities.
136
+ Returns a complete site health assessment with actionable insights.`,
137
+ inputSchema: {
138
+ type: 'object',
139
+ properties: {
140
+ siteId: {
141
+ type: 'string',
142
+ description: 'The ID of the site to audit',
143
+ },
144
+ days: {
145
+ type: 'number',
146
+ minimum: 7,
147
+ maximum: 90,
148
+ default: 28,
149
+ description: 'Number of days to analyze',
150
+ },
151
+ },
152
+ required: ['siteId'],
153
+ },
154
+ hints: {
155
+ readOnlyHint: true,
156
+ destructiveHint: false,
157
+ idempotentHint: true,
158
+ openWorldHint: true,
159
+ },
160
+ },
161
+ ];
162
+ //# sourceMappingURL=workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Response Formatter Utility
3
+ * Provides standardized response formatting functions for MCP tool responses
4
+ */
5
+ /**
6
+ * Standardized response format for all MCP tool responses
7
+ */
8
+ export interface FormattedResponse {
9
+ success: boolean;
10
+ summary?: string;
11
+ data: unknown;
12
+ meta?: {
13
+ period?: {
14
+ startDate?: string;
15
+ endDate?: string;
16
+ };
17
+ totalResults?: number;
18
+ rowCount?: number;
19
+ [key: string]: unknown;
20
+ };
21
+ error?: string;
22
+ }
23
+ /**
24
+ * Options for formatting responses
25
+ */
26
+ export interface FormatResponseOptions {
27
+ summary?: string;
28
+ period?: {
29
+ startDate?: string;
30
+ endDate?: string;
31
+ };
32
+ totalResults?: number;
33
+ rowCount?: number;
34
+ }
35
+ /**
36
+ * Format a successful response into standardized JSON format
37
+ *
38
+ * @param success - Whether the operation was successful
39
+ * @param data - The response data
40
+ * @param options - Optional formatting options
41
+ * @returns JSON string of FormattedResponse
42
+ */
43
+ export declare function formatResponse(success: boolean, data: unknown, options?: FormatResponseOptions): string;
44
+ /**
45
+ * Format an error response into standardized JSON format
46
+ *
47
+ * @param message - The error message
48
+ * @param context - Optional context information
49
+ * @returns JSON string of FormattedResponse with success=false
50
+ */
51
+ export declare function formatErrorResponse(message: string, context?: string): string;
52
+ /**
53
+ * Get actionable suggestions based on error message
54
+ * Helps LLM agents self-correct
55
+ *
56
+ * @param errorMessage - The error message to analyze
57
+ * @returns Actionable suggestion string
58
+ */
59
+ export declare function getSuggestion(errorMessage: string): string;
60
+ /**
61
+ * Truncate text to a maximum length and add ellipsis with details
62
+ *
63
+ * @param text - The text to truncate
64
+ * @param maxLength - Maximum length before truncation (default: 25000)
65
+ * @returns Truncated text with ellipsis message if over limit
66
+ */
67
+ export declare function truncateText(text: string, maxLength?: number): string;
68
+ //# sourceMappingURL=response-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-formatter.d.ts","sourceRoot":"","sources":["../../src/utils/response-formatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE;YACP,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC;QACF,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAgCR;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAyB7E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAyD1D;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,MAAc,GAAG,MAAM,CAO5E"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Response Formatter Utility
3
+ * Provides standardized response formatting functions for MCP tool responses
4
+ */
5
+ /**
6
+ * Format a successful response into standardized JSON format
7
+ *
8
+ * @param success - Whether the operation was successful
9
+ * @param data - The response data
10
+ * @param options - Optional formatting options
11
+ * @returns JSON string of FormattedResponse
12
+ */
13
+ export function formatResponse(success, data, options = {}) {
14
+ const response = {
15
+ success,
16
+ data,
17
+ };
18
+ // Add summary if provided
19
+ if (options.summary !== undefined) {
20
+ response.summary = options.summary;
21
+ }
22
+ // Build meta object if any meta options are provided
23
+ const metaEntries = [];
24
+ if (options.period !== undefined) {
25
+ metaEntries.push(['period', options.period]);
26
+ }
27
+ if (options.totalResults !== undefined) {
28
+ metaEntries.push(['totalResults', options.totalResults]);
29
+ }
30
+ if (options.rowCount !== undefined) {
31
+ metaEntries.push(['rowCount', options.rowCount]);
32
+ }
33
+ // Only add meta if there are entries
34
+ if (metaEntries.length > 0) {
35
+ response.meta = Object.fromEntries(metaEntries);
36
+ }
37
+ return JSON.stringify(response, null, 2);
38
+ }
39
+ /**
40
+ * Format an error response into standardized JSON format
41
+ *
42
+ * @param message - The error message
43
+ * @param context - Optional context information
44
+ * @returns JSON string of FormattedResponse with success=false
45
+ */
46
+ export function formatErrorResponse(message, context) {
47
+ const suggestion = getSuggestion(message);
48
+ const response = {
49
+ success: false,
50
+ data: null,
51
+ error: message,
52
+ };
53
+ // Add context and suggestion in meta if provided or available
54
+ const metaEntries = [];
55
+ if (context !== undefined) {
56
+ metaEntries.push(['context', context]);
57
+ }
58
+ if (suggestion) {
59
+ metaEntries.push(['suggestion', suggestion]);
60
+ }
61
+ if (metaEntries.length > 0) {
62
+ response.meta = Object.fromEntries(metaEntries);
63
+ }
64
+ return JSON.stringify(response, null, 2);
65
+ }
66
+ /**
67
+ * Get actionable suggestions based on error message
68
+ * Helps LLM agents self-correct
69
+ *
70
+ * @param errorMessage - The error message to analyze
71
+ * @returns Actionable suggestion string
72
+ */
73
+ export function getSuggestion(errorMessage) {
74
+ const lowerError = errorMessage.toLowerCase();
75
+ // Rate limit errors
76
+ if (lowerError.includes('rate limit') || lowerError.includes('429')) {
77
+ return 'Consider batching requests or implementing exponential backoff. Try again after the rate limit window resets. Check the error details for reset time.';
78
+ }
79
+ // API key errors
80
+ if (lowerError.includes('api key') ||
81
+ lowerError.includes('unauthorized') ||
82
+ lowerError.includes('401') ||
83
+ lowerError.includes('authentication')) {
84
+ return 'Verify that your API key is valid and has not expired. Check that the API key is properly set in the environment or configuration. Ensure you have the required permissions.';
85
+ }
86
+ // Site/resource not found errors
87
+ if (lowerError.includes('site') ||
88
+ lowerError.includes('not found') ||
89
+ lowerError.includes('404') ||
90
+ lowerError.includes('does not exist')) {
91
+ return 'Verify that the site ID is correct and that the site is connected to your account. Check that you have access to this site. Try listing all available sites to confirm the ID.';
92
+ }
93
+ // Date range errors
94
+ if (lowerError.includes('date') ||
95
+ lowerError.includes('start') ||
96
+ lowerError.includes('end')) {
97
+ return 'Check that start date is before end date. Ensure dates are in valid format (YYYY-MM-DD). Verify that the date range contains data for the requested period.';
98
+ }
99
+ // Invalid parameter errors
100
+ if (lowerError.includes('parameter') ||
101
+ lowerError.includes('invalid') ||
102
+ lowerError.includes('required')) {
103
+ return 'Review the required parameters and ensure they are provided correctly. Check the tool documentation for valid parameter values and formats. Ensure all mandatory parameters are included.';
104
+ }
105
+ // Server errors
106
+ if (lowerError.includes('server') ||
107
+ lowerError.includes('500') ||
108
+ lowerError.includes('503')) {
109
+ return 'The server is temporarily unavailable. Try again in a few moments. If the problem persists, check the service status page.';
110
+ }
111
+ // Generic fallback
112
+ return 'Please check the error details above. Review the tool documentation and verify your parameters are correct. Try again or contact support if the issue persists.';
113
+ }
114
+ /**
115
+ * Truncate text to a maximum length and add ellipsis with details
116
+ *
117
+ * @param text - The text to truncate
118
+ * @param maxLength - Maximum length before truncation (default: 25000)
119
+ * @returns Truncated text with ellipsis message if over limit
120
+ */
121
+ export function truncateText(text, maxLength = 25000) {
122
+ if (text.length <= maxLength) {
123
+ return text;
124
+ }
125
+ const omittedChars = text.length - maxLength;
126
+ return text.slice(0, maxLength) + `\n\n... (truncated, ${omittedChars} characters omitted)`;
127
+ }
128
+ //# sourceMappingURL=response-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-formatter.js","sourceRoot":"","sources":["../../src/utils/response-formatter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heyseo/mcp-server",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
4
4
  "description": "HeySeo MCP Server - Connect LLMs to your SEO data",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",