@channel47/dataforseo-mcp-server 1.0.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/LICENSE +21 -0
- package/README.md +155 -0
- package/dist/api/ai-optimization/index.d.ts +3 -0
- package/dist/api/ai-optimization/index.js +178 -0
- package/dist/api/ai-optimization/index.js.map +1 -0
- package/dist/api/app-data/index.d.ts +3 -0
- package/dist/api/app-data/index.js +115 -0
- package/dist/api/app-data/index.js.map +1 -0
- package/dist/api/backlinks/index.d.ts +3 -0
- package/dist/api/backlinks/index.js +186 -0
- package/dist/api/backlinks/index.js.map +1 -0
- package/dist/api/business-data/index.d.ts +3 -0
- package/dist/api/business-data/index.js +235 -0
- package/dist/api/business-data/index.js.map +1 -0
- package/dist/api/client.d.ts +10 -0
- package/dist/api/client.js +54 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/content-analysis/index.d.ts +3 -0
- package/dist/api/content-analysis/index.js +64 -0
- package/dist/api/content-analysis/index.js.map +1 -0
- package/dist/api/content-generation/index.d.ts +3 -0
- package/dist/api/content-generation/index.js +75 -0
- package/dist/api/content-generation/index.js.map +1 -0
- package/dist/api/domain-analytics/index.d.ts +3 -0
- package/dist/api/domain-analytics/index.js +69 -0
- package/dist/api/domain-analytics/index.js.map +1 -0
- package/dist/api/keywords/index.d.ts +3 -0
- package/dist/api/keywords/index.js +73 -0
- package/dist/api/keywords/index.js.map +1 -0
- package/dist/api/labs/index.d.ts +3 -0
- package/dist/api/labs/index.js +315 -0
- package/dist/api/labs/index.js.map +1 -0
- package/dist/api/localfalcon/index.d.ts +7 -0
- package/dist/api/localfalcon/index.js +109 -0
- package/dist/api/localfalcon/index.js.map +1 -0
- package/dist/api/merchant/index.d.ts +3 -0
- package/dist/api/merchant/index.js +133 -0
- package/dist/api/merchant/index.js.map +1 -0
- package/dist/api/onpage/index.d.ts +3 -0
- package/dist/api/onpage/index.js +68 -0
- package/dist/api/onpage/index.js.map +1 -0
- package/dist/api/serp/index.d.ts +3 -0
- package/dist/api/serp/index.js +99 -0
- package/dist/api/serp/index.js.map +1 -0
- package/dist/api/tools.d.ts +11 -0
- package/dist/api/tools.js +61 -0
- package/dist/api/tools.js.map +1 -0
- package/dist/api/types.d.ts +89 -0
- package/dist/api/types.js +19 -0
- package/dist/api/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
interface LocalFalconClientConfig {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
baseUrl?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function registerLocalFalconTools(server: McpServer, config: LocalFalconClientConfig): void;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { registerTool } from "../tools.js";
|
|
3
|
+
class LocalFalconClient {
|
|
4
|
+
constructor(config) {
|
|
5
|
+
this.apiKey = config.apiKey;
|
|
6
|
+
this.baseUrl = config.baseUrl || "https://www.localfalcon.com/api";
|
|
7
|
+
}
|
|
8
|
+
async get(path, params) {
|
|
9
|
+
const url = new URL(`${this.baseUrl}${path}`);
|
|
10
|
+
if (params) {
|
|
11
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
12
|
+
if (value !== undefined) {
|
|
13
|
+
url.searchParams.append(key, String(value));
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
const response = await fetch(url.toString(), {
|
|
18
|
+
method: "GET",
|
|
19
|
+
headers: {
|
|
20
|
+
"Content-Type": "application/json",
|
|
21
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
if (!response.ok) {
|
|
25
|
+
const errorText = await response.text();
|
|
26
|
+
throw new Error(`Local Falcon API error: ${response.status} ${response.statusText} - ${errorText}`);
|
|
27
|
+
}
|
|
28
|
+
return response.json();
|
|
29
|
+
}
|
|
30
|
+
async post(path, data) {
|
|
31
|
+
const response = await fetch(`${this.baseUrl}${path}`, {
|
|
32
|
+
method: "POST",
|
|
33
|
+
headers: {
|
|
34
|
+
"Content-Type": "application/json",
|
|
35
|
+
"Authorization": `Bearer ${this.apiKey}`
|
|
36
|
+
},
|
|
37
|
+
body: JSON.stringify(data)
|
|
38
|
+
});
|
|
39
|
+
if (!response.ok) {
|
|
40
|
+
const errorText = await response.text();
|
|
41
|
+
throw new Error(`Local Falcon API error: ${response.status} ${response.statusText} - ${errorText}`);
|
|
42
|
+
}
|
|
43
|
+
return response.json();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export function registerLocalFalconTools(server, config) {
|
|
47
|
+
const client = new LocalFalconClient(config);
|
|
48
|
+
// Local Falcon - Calculate Grid Points from Base Coordinate
|
|
49
|
+
registerTool(server, "localfalcon_calculate_grid_points", z.object({
|
|
50
|
+
lat: z.number().describe("Base latitude coordinate"),
|
|
51
|
+
lng: z.number().describe("Base longitude coordinate"),
|
|
52
|
+
distance: z.number().describe("Distance between grid points (in miles or kilometers)"),
|
|
53
|
+
units: z.enum(["miles", "kilometers"]).default("miles").describe("Distance unit"),
|
|
54
|
+
points: z.number().min(1).max(100).default(20).describe("Number of grid points to calculate")
|
|
55
|
+
}), async (params) => {
|
|
56
|
+
const response = await client.post("/v1/grid/", params);
|
|
57
|
+
return response;
|
|
58
|
+
}, client);
|
|
59
|
+
// Local Falcon - Search for Google My Business Locations
|
|
60
|
+
registerTool(server, "localfalcon_search_gmb_locations", z.object({
|
|
61
|
+
query: z.string().describe("Search query for finding Google My Business locations"),
|
|
62
|
+
lat: z.number().optional().describe("Optional latitude to center search around"),
|
|
63
|
+
lng: z.number().optional().describe("Optional longitude to center search around"),
|
|
64
|
+
include_sabs: z.boolean().default(true).describe("Include Service Area Businesses in results")
|
|
65
|
+
}), async (params) => {
|
|
66
|
+
const response = await client.post("/v1/places/", params);
|
|
67
|
+
return response;
|
|
68
|
+
}, client);
|
|
69
|
+
// Local Falcon - Get Business Ranking at Specific Coordinate Point
|
|
70
|
+
registerTool(server, "localfalcon_get_ranking_at_coordinate", z.object({
|
|
71
|
+
lat: z.number().describe("Latitude for the search point"),
|
|
72
|
+
lng: z.number().describe("Longitude for the search point"),
|
|
73
|
+
keyword: z.string().describe("Search term to use"),
|
|
74
|
+
place_id: z.string().describe("Google place ID to get ranking for"),
|
|
75
|
+
language: z.string().optional().describe("Language code (e.g., 'en')"),
|
|
76
|
+
country: z.string().optional().describe("Country code (e.g., 'us')")
|
|
77
|
+
}), async (params) => {
|
|
78
|
+
const response = await client.post("/v1/result/", params);
|
|
79
|
+
return response;
|
|
80
|
+
}, client);
|
|
81
|
+
// Local Falcon - Keyword Search at a Specific Coordinate Point
|
|
82
|
+
registerTool(server, "localfalcon_keyword_search_at_coordinate", z.object({
|
|
83
|
+
lat: z.number().describe("Latitude for the search point"),
|
|
84
|
+
lng: z.number().describe("Longitude for the search point"),
|
|
85
|
+
keyword: z.string().describe("Search term to use"),
|
|
86
|
+
language: z.string().optional().describe("Language code (e.g., 'en')"),
|
|
87
|
+
country: z.string().optional().describe("Country code (e.g., 'us')"),
|
|
88
|
+
limit: z.number().min(1).max(20).default(20).optional().describe("Number of results to return")
|
|
89
|
+
}), async (params) => {
|
|
90
|
+
const response = await client.post("/v1/search/", params);
|
|
91
|
+
return response;
|
|
92
|
+
}, client);
|
|
93
|
+
// Local Falcon - Run a Full Grid Search
|
|
94
|
+
registerTool(server, "localfalcon_run_grid_search", z.object({
|
|
95
|
+
lat: z.number().describe("Base latitude coordinate"),
|
|
96
|
+
lng: z.number().describe("Base longitude coordinate"),
|
|
97
|
+
keyword: z.string().describe("Search term to use"),
|
|
98
|
+
place_id: z.string().describe("Google place ID to get ranking for"),
|
|
99
|
+
distance: z.number().describe("Distance between grid points (in miles or kilometers)"),
|
|
100
|
+
units: z.enum(["miles", "kilometers"]).default("miles").describe("Distance unit"),
|
|
101
|
+
points: z.number().min(1).max(100).default(20).describe("Number of grid points to use"),
|
|
102
|
+
language: z.string().optional().describe("Language code (e.g., 'en')"),
|
|
103
|
+
country: z.string().optional().describe("Country code (e.g., 'us')")
|
|
104
|
+
}), async (params) => {
|
|
105
|
+
const response = await client.post("/v1/scan/", params);
|
|
106
|
+
return response;
|
|
107
|
+
}, client);
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/localfalcon/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { registerTool } from "../tools.js";
|
|
3
|
+
export function registerMerchantTools(server, apiClient) {
|
|
4
|
+
// Merchant Google Search
|
|
5
|
+
registerTool(server, "merchant_google_search", z.object({
|
|
6
|
+
keyword: z.string().describe("Product name or related keyword"),
|
|
7
|
+
location_name: z.string().optional().describe("Location name"),
|
|
8
|
+
location_code: z.number().optional().describe("Location code"),
|
|
9
|
+
language_name: z.string().optional().describe("Language name"),
|
|
10
|
+
language_code: z.string().optional().describe("Language code"),
|
|
11
|
+
depth: z.number().optional().describe("Number of results to return"),
|
|
12
|
+
limit: z.number().optional().describe("Maximum number of results to return per page"),
|
|
13
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
14
|
+
}), async (params, client) => {
|
|
15
|
+
const response = await client.post("/merchant/google/search/live", [params]);
|
|
16
|
+
return response;
|
|
17
|
+
}, apiClient);
|
|
18
|
+
// Merchant Google Product Specs
|
|
19
|
+
registerTool(server, "merchant_google_product_specs", z.object({
|
|
20
|
+
product_id: z.string().describe("Google Shopping Product ID"),
|
|
21
|
+
location_name: z.string().optional().describe("Location name"),
|
|
22
|
+
location_code: z.number().optional().describe("Location code"),
|
|
23
|
+
language_name: z.string().optional().describe("Language name"),
|
|
24
|
+
language_code: z.string().optional().describe("Language code")
|
|
25
|
+
}), async (params, client) => {
|
|
26
|
+
const response = await client.post("/merchant/google/product_specs/live", [params]);
|
|
27
|
+
return response;
|
|
28
|
+
}, apiClient);
|
|
29
|
+
// Merchant Google Product Info
|
|
30
|
+
registerTool(server, "merchant_google_product_info", z.object({
|
|
31
|
+
product_id: z.string().describe("Google Shopping Product ID"),
|
|
32
|
+
location_name: z.string().optional().describe("Location name"),
|
|
33
|
+
location_code: z.number().optional().describe("Location code"),
|
|
34
|
+
language_name: z.string().optional().describe("Language name"),
|
|
35
|
+
language_code: z.string().optional().describe("Language code")
|
|
36
|
+
}), async (params, client) => {
|
|
37
|
+
const response = await client.post("/merchant/google/product_info/live", [params]);
|
|
38
|
+
return response;
|
|
39
|
+
}, apiClient);
|
|
40
|
+
// Merchant Google Sellers
|
|
41
|
+
registerTool(server, "merchant_google_sellers", z.object({
|
|
42
|
+
product_id: z.string().describe("Google Shopping Product ID"),
|
|
43
|
+
location_name: z.string().optional().describe("Location name"),
|
|
44
|
+
location_code: z.number().optional().describe("Location code"),
|
|
45
|
+
language_name: z.string().optional().describe("Language name"),
|
|
46
|
+
language_code: z.string().optional().describe("Language code")
|
|
47
|
+
}), async (params, client) => {
|
|
48
|
+
const response = await client.post("/merchant/google/sellers/live", [params]);
|
|
49
|
+
return response;
|
|
50
|
+
}, apiClient);
|
|
51
|
+
// Merchant Google Reviews
|
|
52
|
+
registerTool(server, "merchant_google_reviews", z.object({
|
|
53
|
+
product_id: z.string().describe("Google Shopping Product ID"),
|
|
54
|
+
location_name: z.string().optional().describe("Location name"),
|
|
55
|
+
location_code: z.number().optional().describe("Location code"),
|
|
56
|
+
language_name: z.string().optional().describe("Language name"),
|
|
57
|
+
language_code: z.string().optional().describe("Language code"),
|
|
58
|
+
depth: z.number().optional().describe("Number of reviews to retrieve"),
|
|
59
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
60
|
+
}), async (params, client) => {
|
|
61
|
+
const response = await client.post("/merchant/google/reviews/live", [params]);
|
|
62
|
+
return response;
|
|
63
|
+
}, apiClient);
|
|
64
|
+
// Merchant Google Locations
|
|
65
|
+
registerTool(server, "merchant_google_locations", z.object({
|
|
66
|
+
country: z.string().optional().describe("Filter locations by country name")
|
|
67
|
+
}), async (params, client) => {
|
|
68
|
+
const url = params.country
|
|
69
|
+
? `/merchant/google/locations?country=${encodeURIComponent(params.country)}`
|
|
70
|
+
: "/merchant/google/locations";
|
|
71
|
+
const response = await client.get(url);
|
|
72
|
+
return response;
|
|
73
|
+
}, apiClient);
|
|
74
|
+
// Merchant Google Languages
|
|
75
|
+
registerTool(server, "merchant_google_languages", {}, async (_params, client) => {
|
|
76
|
+
const response = await client.get("/merchant/google/languages");
|
|
77
|
+
return response;
|
|
78
|
+
}, apiClient);
|
|
79
|
+
// Merchant Amazon Search
|
|
80
|
+
registerTool(server, "merchant_amazon_search", z.object({
|
|
81
|
+
keyword: z.string().describe("Product name or related keyword"),
|
|
82
|
+
location_name: z.string().optional().describe("Location name"),
|
|
83
|
+
location_code: z.number().optional().describe("Location code"),
|
|
84
|
+
language_name: z.string().optional().describe("Language name"),
|
|
85
|
+
language_code: z.string().optional().describe("Language code"),
|
|
86
|
+
depth: z.number().optional().describe("Number of results to return"),
|
|
87
|
+
limit: z.number().optional().describe("Maximum number of results to return per page"),
|
|
88
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
89
|
+
}), async (params, client) => {
|
|
90
|
+
const response = await client.post("/merchant/amazon/search/live", [params]);
|
|
91
|
+
return response;
|
|
92
|
+
}, apiClient);
|
|
93
|
+
// Merchant Amazon Product Info
|
|
94
|
+
registerTool(server, "merchant_amazon_product_info", z.object({
|
|
95
|
+
asin: z.string().describe("Amazon ASIN"),
|
|
96
|
+
location_name: z.string().optional().describe("Location name"),
|
|
97
|
+
location_code: z.number().optional().describe("Location code"),
|
|
98
|
+
language_name: z.string().optional().describe("Language name"),
|
|
99
|
+
language_code: z.string().optional().describe("Language code")
|
|
100
|
+
}), async (params, client) => {
|
|
101
|
+
const response = await client.post("/merchant/amazon/product_info/live", [params]);
|
|
102
|
+
return response;
|
|
103
|
+
}, apiClient);
|
|
104
|
+
// Merchant Amazon Reviews
|
|
105
|
+
registerTool(server, "merchant_amazon_reviews", z.object({
|
|
106
|
+
asin: z.string().describe("Amazon ASIN"),
|
|
107
|
+
location_name: z.string().optional().describe("Location name"),
|
|
108
|
+
location_code: z.number().optional().describe("Location code"),
|
|
109
|
+
language_name: z.string().optional().describe("Language name"),
|
|
110
|
+
language_code: z.string().optional().describe("Language code"),
|
|
111
|
+
depth: z.number().optional().describe("Number of reviews to retrieve"),
|
|
112
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
113
|
+
}), async (params, client) => {
|
|
114
|
+
const response = await client.post("/merchant/amazon/reviews/live", [params]);
|
|
115
|
+
return response;
|
|
116
|
+
}, apiClient);
|
|
117
|
+
// Merchant Amazon Locations
|
|
118
|
+
registerTool(server, "merchant_amazon_locations", z.object({
|
|
119
|
+
country: z.string().optional().describe("Filter locations by country name")
|
|
120
|
+
}), async (params, client) => {
|
|
121
|
+
const url = params.country
|
|
122
|
+
? `/merchant/amazon/locations?country=${encodeURIComponent(params.country)}`
|
|
123
|
+
: "/merchant/amazon/locations";
|
|
124
|
+
const response = await client.get(url);
|
|
125
|
+
return response;
|
|
126
|
+
}, apiClient);
|
|
127
|
+
// Merchant Amazon Languages
|
|
128
|
+
registerTool(server, "merchant_amazon_languages", {}, async (_params, client) => {
|
|
129
|
+
const response = await client.get("/merchant/amazon/languages");
|
|
130
|
+
return response;
|
|
131
|
+
}, apiClient);
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/merchant/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { registerTool } from "../tools.js";
|
|
3
|
+
export function registerOnPageTools(server, apiClient) {
|
|
4
|
+
// OnPage Task Post
|
|
5
|
+
registerTool(server, "onpage_task_post", z.object({
|
|
6
|
+
target: z.string().describe("Target URL to analyze"),
|
|
7
|
+
max_crawl_pages: z.number().optional().describe("Maximum number of pages to crawl"),
|
|
8
|
+
load_resources: z.boolean().optional().describe("Load page resources"),
|
|
9
|
+
enable_javascript: z.boolean().optional().describe("Enable JavaScript execution"),
|
|
10
|
+
limit: z.number().optional().describe("Maximum number of results to return")
|
|
11
|
+
}), async (params, client) => {
|
|
12
|
+
const response = await client.post("/on_page/task_post", [params]);
|
|
13
|
+
return response;
|
|
14
|
+
}, apiClient);
|
|
15
|
+
// OnPage Tasks Ready
|
|
16
|
+
registerTool(server, "onpage_tasks_ready", {}, async (_params, client) => {
|
|
17
|
+
const response = await client.get("/on_page/tasks_ready");
|
|
18
|
+
return response;
|
|
19
|
+
}, apiClient);
|
|
20
|
+
// OnPage Task Result Summary
|
|
21
|
+
registerTool(server, "onpage_summary", z.object({
|
|
22
|
+
id: z.string().describe("Task ID")
|
|
23
|
+
}), async (params, client) => {
|
|
24
|
+
const response = await client.get(`/on_page/summary/${params.id}`);
|
|
25
|
+
return response;
|
|
26
|
+
}, apiClient);
|
|
27
|
+
// OnPage Task Result Pages
|
|
28
|
+
registerTool(server, "onpage_pages", z.object({
|
|
29
|
+
id: z.string().describe("Task ID"),
|
|
30
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
31
|
+
offset: z.number().optional().describe("Offset for pagination"),
|
|
32
|
+
filters: z.array(z.any()).optional().describe("Array of filter objects")
|
|
33
|
+
}), async (params, client) => {
|
|
34
|
+
const { id, ...restParams } = params;
|
|
35
|
+
const response = await client.post(`/on_page/pages/${id}`, [restParams]);
|
|
36
|
+
return response;
|
|
37
|
+
}, apiClient);
|
|
38
|
+
// OnPage Task Result Resources
|
|
39
|
+
registerTool(server, "onpage_resources", z.object({
|
|
40
|
+
id: z.string().describe("Task ID"),
|
|
41
|
+
url: z.string().describe("URL of the page to get resources for"),
|
|
42
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
43
|
+
offset: z.number().optional().describe("Offset for pagination"),
|
|
44
|
+
filters: z.array(z.any()).optional().describe("Array of filter objects")
|
|
45
|
+
}), async (params, client) => {
|
|
46
|
+
const { id, ...restParams } = params;
|
|
47
|
+
const response = await client.post(`/on_page/resources/${id}`, [restParams]);
|
|
48
|
+
return response;
|
|
49
|
+
}, apiClient);
|
|
50
|
+
// OnPage Task Force Stop
|
|
51
|
+
registerTool(server, "onpage_task_force_stop", z.object({
|
|
52
|
+
id: z.string().describe("Task ID")
|
|
53
|
+
}), async (params, client) => {
|
|
54
|
+
const response = await client.post("/on_page/task_force_stop", [{ id: params.id }]);
|
|
55
|
+
return response;
|
|
56
|
+
}, apiClient);
|
|
57
|
+
// OnPage Duplicate Content
|
|
58
|
+
registerTool(server, "onpage_duplicate_content", z.object({
|
|
59
|
+
id: z.string().describe("Task ID"),
|
|
60
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
61
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
62
|
+
}), async (params, client) => {
|
|
63
|
+
const { id, ...restParams } = params;
|
|
64
|
+
const response = await client.post(`/on_page/duplicate_content/${id}`, [restParams]);
|
|
65
|
+
return response;
|
|
66
|
+
}, apiClient);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/onpage/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { registerTool, registerTaskTool } from "../tools.js";
|
|
3
|
+
// SERP Google Organic API schemas
|
|
4
|
+
const googleOrganicLiveSchema = z.object({
|
|
5
|
+
keyword: z.string().describe("The search query or keyword"),
|
|
6
|
+
location_code: z.number().describe("The location code for the search"),
|
|
7
|
+
language_code: z.string().describe("The language code for the search"),
|
|
8
|
+
device: z.enum(["desktop", "mobile", "tablet"]).optional().describe("The device type for the search"),
|
|
9
|
+
os: z.enum(["windows", "macos", "ios", "android"]).optional().describe("The operating system for the search"),
|
|
10
|
+
depth: z.number().optional().describe("Maximum number of results to return"),
|
|
11
|
+
se_domain: z.string().optional().describe("Search engine domain (e.g., google.com)")
|
|
12
|
+
});
|
|
13
|
+
const googleOrganicTaskSchema = googleOrganicLiveSchema.extend({
|
|
14
|
+
priority: z.number().min(1).max(2).optional().describe("Task priority: 1 (normal) or 2 (high)"),
|
|
15
|
+
tag: z.string().optional().describe("Custom identifier for the task"),
|
|
16
|
+
postback_url: z.string().optional().describe("URL to receive a callback when the task is completed"),
|
|
17
|
+
postback_data: z.string().optional().describe("Custom data to be passed in the callback")
|
|
18
|
+
});
|
|
19
|
+
export function registerSerpTools(server, apiClient) {
|
|
20
|
+
// Google Organic Live
|
|
21
|
+
registerTool(server, "serp_google_organic_live", googleOrganicLiveSchema, async (params, client) => {
|
|
22
|
+
const response = await client.post("/serp/google/organic/live", [params]);
|
|
23
|
+
return response;
|
|
24
|
+
}, apiClient);
|
|
25
|
+
// Google Organic Task-based (POST, READY, GET)
|
|
26
|
+
registerTaskTool(server, "serp_google_organic_task", googleOrganicTaskSchema, async (params, client) => {
|
|
27
|
+
const response = await client.post("/serp/google/organic/task_post", [params]);
|
|
28
|
+
return response;
|
|
29
|
+
}, async (client) => {
|
|
30
|
+
const response = await client.get("/serp/google/organic/tasks_ready");
|
|
31
|
+
return response;
|
|
32
|
+
}, async (id, client) => {
|
|
33
|
+
const response = await client.get(`/serp/google/organic/task_get/${id}`);
|
|
34
|
+
return response;
|
|
35
|
+
}, apiClient);
|
|
36
|
+
// Google Maps Live
|
|
37
|
+
registerTool(server, "serp_google_maps_live", googleOrganicLiveSchema.extend({
|
|
38
|
+
local_pack_type: z.enum(["maps", "local_pack"]).optional().describe("Type of local pack results")
|
|
39
|
+
}), async (params, client) => {
|
|
40
|
+
const response = await client.post("/serp/google/maps/live", [params]);
|
|
41
|
+
return response;
|
|
42
|
+
}, apiClient);
|
|
43
|
+
// Google Images Live
|
|
44
|
+
registerTool(server, "serp_google_images_live", googleOrganicLiveSchema, async (params, client) => {
|
|
45
|
+
const response = await client.post("/serp/google/images/live", [params]);
|
|
46
|
+
return response;
|
|
47
|
+
}, apiClient);
|
|
48
|
+
// Google News Live
|
|
49
|
+
registerTool(server, "serp_google_news_live", googleOrganicLiveSchema, async (params, client) => {
|
|
50
|
+
const response = await client.post("/serp/google/news/live", [params]);
|
|
51
|
+
return response;
|
|
52
|
+
}, apiClient);
|
|
53
|
+
// Google Jobs Live
|
|
54
|
+
registerTool(server, "serp_google_jobs_live", googleOrganicLiveSchema, async (params, client) => {
|
|
55
|
+
const response = await client.post("/serp/google/jobs/live", [params]);
|
|
56
|
+
return response;
|
|
57
|
+
}, apiClient);
|
|
58
|
+
// Google Shopping Live
|
|
59
|
+
registerTool(server, "serp_google_shopping_live", googleOrganicLiveSchema, async (params, client) => {
|
|
60
|
+
const response = await client.post("/serp/google/shopping/live", [params]);
|
|
61
|
+
return response;
|
|
62
|
+
}, apiClient);
|
|
63
|
+
// Bing Organic Live
|
|
64
|
+
registerTool(server, "serp_bing_organic_live", googleOrganicLiveSchema, async (params, client) => {
|
|
65
|
+
const response = await client.post("/serp/bing/organic/live", [params]);
|
|
66
|
+
return response;
|
|
67
|
+
}, apiClient);
|
|
68
|
+
// Yahoo Organic Live
|
|
69
|
+
registerTool(server, "serp_yahoo_organic_live", googleOrganicLiveSchema, async (params, client) => {
|
|
70
|
+
const response = await client.post("/serp/yahoo/organic/live", [params]);
|
|
71
|
+
return response;
|
|
72
|
+
}, apiClient);
|
|
73
|
+
// Baidu Organic Live
|
|
74
|
+
registerTool(server, "serp_baidu_organic_live", googleOrganicLiveSchema, async (params, client) => {
|
|
75
|
+
const response = await client.post("/serp/baidu/organic/live", [params]);
|
|
76
|
+
return response;
|
|
77
|
+
}, apiClient);
|
|
78
|
+
// YouTube Organic Live
|
|
79
|
+
registerTool(server, "serp_youtube_organic_live", googleOrganicLiveSchema, async (params, client) => {
|
|
80
|
+
const response = await client.post("/serp/youtube/organic/live", [params]);
|
|
81
|
+
return response;
|
|
82
|
+
}, apiClient);
|
|
83
|
+
// SERP API Locations
|
|
84
|
+
registerTool(server, "serp_google_locations", {
|
|
85
|
+
country: z.string().optional().describe("Filter locations by country name")
|
|
86
|
+
}, async (params, client) => {
|
|
87
|
+
const url = params.country
|
|
88
|
+
? `/serp/google/locations?country=${encodeURIComponent(params.country)}`
|
|
89
|
+
: "/serp/google/locations";
|
|
90
|
+
const response = await client.get(url);
|
|
91
|
+
return response;
|
|
92
|
+
}, apiClient);
|
|
93
|
+
// SERP API Languages
|
|
94
|
+
registerTool(server, "serp_google_languages", {}, async (_params, client) => {
|
|
95
|
+
const response = await client.get("/serp/google/languages");
|
|
96
|
+
return response;
|
|
97
|
+
}, apiClient);
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/serp/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { DataForSeoClient } from "./client.js";
|
|
4
|
+
/**
|
|
5
|
+
* Base helper function to register an MCP tool for DataForSEO API
|
|
6
|
+
*/
|
|
7
|
+
export declare function registerTool<T extends z.ZodRawShape>(server: McpServer, name: string, schema: z.ZodObject<T> | T, handler: (params: z.infer<z.ZodObject<T>>, client: DataForSeoClient) => Promise<any>, client: DataForSeoClient): void;
|
|
8
|
+
/**
|
|
9
|
+
* Helper for registering a task-based tool (POST, READY, GET pattern)
|
|
10
|
+
*/
|
|
11
|
+
export declare function registerTaskTool<PostT extends z.ZodRawShape>(server: McpServer, baseName: string, postSchema: z.ZodObject<PostT> | PostT, postHandler: (params: z.infer<z.ZodObject<PostT>>, client: DataForSeoClient) => Promise<any>, readyHandler: (client: DataForSeoClient) => Promise<any>, getHandler: (id: string, client: DataForSeoClient) => Promise<any>, client: DataForSeoClient): void;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Base helper function to register an MCP tool for DataForSEO API
|
|
4
|
+
*/
|
|
5
|
+
export function registerTool(server, name, schema, handler, client) {
|
|
6
|
+
// Extract the shape from ZodObject if needed
|
|
7
|
+
const shape = schema instanceof z.ZodObject ? schema.shape : schema;
|
|
8
|
+
server.tool(name, shape, async (params, _context) => {
|
|
9
|
+
try {
|
|
10
|
+
// We get the apiClient from the closure
|
|
11
|
+
const result = await handler(params, client);
|
|
12
|
+
return {
|
|
13
|
+
content: [
|
|
14
|
+
{
|
|
15
|
+
type: "text",
|
|
16
|
+
text: JSON.stringify(result, null, 2)
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
console.error(`Error in ${name} tool:`, error);
|
|
23
|
+
if (error instanceof Error) {
|
|
24
|
+
return {
|
|
25
|
+
content: [
|
|
26
|
+
{
|
|
27
|
+
type: "text",
|
|
28
|
+
text: JSON.stringify({
|
|
29
|
+
error: error.message,
|
|
30
|
+
stack: error.stack
|
|
31
|
+
}, null, 2)
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
content: [
|
|
38
|
+
{
|
|
39
|
+
type: "text",
|
|
40
|
+
text: JSON.stringify({
|
|
41
|
+
error: "Unknown error occurred",
|
|
42
|
+
details: error
|
|
43
|
+
}, null, 2)
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Helper for registering a task-based tool (POST, READY, GET pattern)
|
|
52
|
+
*/
|
|
53
|
+
export function registerTaskTool(server, baseName, postSchema, postHandler, readyHandler, getHandler, client) {
|
|
54
|
+
// Register POST tool
|
|
55
|
+
registerTool(server, `${baseName}_post`, postSchema, postHandler, client);
|
|
56
|
+
// Register READY tool
|
|
57
|
+
registerTool(server, `${baseName}_ready`, {}, (_params, client) => readyHandler(client), client);
|
|
58
|
+
// Register GET tool
|
|
59
|
+
registerTool(server, `${baseName}_get`, { id: z.string() }, (params, client) => getHandler(params.id, client), client);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/api/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAiB,EACjB,IAAY,EACZ,MAA0B,EAC1B,OAAoF,EACpF,MAAwB;IAExB,6CAA6C;IAC7C,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAEnE,MAAM,CAAC,IAAY,CAClB,IAAI,EACJ,KAAK,EACL,KAAK,EAAE,MAAW,EAAE,QAAa,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,wCAAwC;YACxC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAiC,EAAE,MAAM,CAAC,CAAC;YAExE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;qBACtC;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,QAAQ,EAAE,KAAK,CAAC,CAAC;YAE/C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,KAAK,EAAE,KAAK,CAAC,OAAO;gCACpB,KAAK,EAAE,KAAK,CAAC,KAAK;6BACnB,EAAE,IAAI,EAAE,CAAC,CAAC;yBACZ;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,wBAAwB;4BAC/B,OAAO,EAAE,KAAK;yBACf,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ;iBACF;aACF,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAiB,EACjB,QAAgB,EAChB,UAAsC,EACtC,WAA4F,EAC5F,YAAwD,EACxD,UAAkE,EAClE,MAAwB;IAExB,qBAAqB;IACrB,YAAY,CACV,MAAM,EACN,GAAG,QAAQ,OAAO,EAClB,UAAU,EACV,WAAW,EACX,MAAM,CACP,CAAC;IAEF,sBAAsB;IACtB,YAAY,CACV,MAAM,EACN,GAAG,QAAQ,QAAQ,EACnB,EAAE,EACF,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EACzC,MAAM,CACP,CAAC;IAEF,oBAAoB;IACpB,YAAY,CACV,MAAM,EACN,GAAG,QAAQ,MAAM,EACjB,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAClB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EACjD,MAAM,CACP,CAAC;AACJ,CAAC"}
|