@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.
Files changed (54) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +155 -0
  3. package/dist/api/ai-optimization/index.d.ts +3 -0
  4. package/dist/api/ai-optimization/index.js +178 -0
  5. package/dist/api/ai-optimization/index.js.map +1 -0
  6. package/dist/api/app-data/index.d.ts +3 -0
  7. package/dist/api/app-data/index.js +115 -0
  8. package/dist/api/app-data/index.js.map +1 -0
  9. package/dist/api/backlinks/index.d.ts +3 -0
  10. package/dist/api/backlinks/index.js +186 -0
  11. package/dist/api/backlinks/index.js.map +1 -0
  12. package/dist/api/business-data/index.d.ts +3 -0
  13. package/dist/api/business-data/index.js +235 -0
  14. package/dist/api/business-data/index.js.map +1 -0
  15. package/dist/api/client.d.ts +10 -0
  16. package/dist/api/client.js +54 -0
  17. package/dist/api/client.js.map +1 -0
  18. package/dist/api/content-analysis/index.d.ts +3 -0
  19. package/dist/api/content-analysis/index.js +64 -0
  20. package/dist/api/content-analysis/index.js.map +1 -0
  21. package/dist/api/content-generation/index.d.ts +3 -0
  22. package/dist/api/content-generation/index.js +75 -0
  23. package/dist/api/content-generation/index.js.map +1 -0
  24. package/dist/api/domain-analytics/index.d.ts +3 -0
  25. package/dist/api/domain-analytics/index.js +69 -0
  26. package/dist/api/domain-analytics/index.js.map +1 -0
  27. package/dist/api/keywords/index.d.ts +3 -0
  28. package/dist/api/keywords/index.js +73 -0
  29. package/dist/api/keywords/index.js.map +1 -0
  30. package/dist/api/labs/index.d.ts +3 -0
  31. package/dist/api/labs/index.js +315 -0
  32. package/dist/api/labs/index.js.map +1 -0
  33. package/dist/api/localfalcon/index.d.ts +7 -0
  34. package/dist/api/localfalcon/index.js +109 -0
  35. package/dist/api/localfalcon/index.js.map +1 -0
  36. package/dist/api/merchant/index.d.ts +3 -0
  37. package/dist/api/merchant/index.js +133 -0
  38. package/dist/api/merchant/index.js.map +1 -0
  39. package/dist/api/onpage/index.d.ts +3 -0
  40. package/dist/api/onpage/index.js +68 -0
  41. package/dist/api/onpage/index.js.map +1 -0
  42. package/dist/api/serp/index.d.ts +3 -0
  43. package/dist/api/serp/index.js +99 -0
  44. package/dist/api/serp/index.js.map +1 -0
  45. package/dist/api/tools.d.ts +11 -0
  46. package/dist/api/tools.js +61 -0
  47. package/dist/api/tools.js.map +1 -0
  48. package/dist/api/types.d.ts +89 -0
  49. package/dist/api/types.js +19 -0
  50. package/dist/api/types.js.map +1 -0
  51. package/dist/index.d.ts +2 -0
  52. package/dist/index.js +34 -0
  53. package/dist/index.js.map +1 -0
  54. package/package.json +54 -0
@@ -0,0 +1,89 @@
1
+ export interface DataForSeoResponse<T> {
2
+ version: string;
3
+ status_code: number;
4
+ status_message: string;
5
+ time: string;
6
+ cost: number;
7
+ tasks_count: number;
8
+ tasks_error: number;
9
+ tasks: T[];
10
+ }
11
+ export interface DataForSeoTask<T> {
12
+ id: string;
13
+ status_code: number;
14
+ status_message: string;
15
+ time: string;
16
+ cost: number;
17
+ result_count: number;
18
+ path: string[];
19
+ data: any;
20
+ result: T[];
21
+ }
22
+ export interface DataForSeoErrorResponse {
23
+ version: string;
24
+ status_code: number;
25
+ status_message: string;
26
+ time: string;
27
+ }
28
+ export interface TaskPostResponse<T = any> {
29
+ id: string;
30
+ status_code: number;
31
+ status_message: string;
32
+ time: string;
33
+ cost: number;
34
+ result_count: number;
35
+ path: string[];
36
+ data: T;
37
+ result: null;
38
+ }
39
+ export interface TaskReadyResponse {
40
+ id: string;
41
+ status_code: number;
42
+ status_message: string;
43
+ time: string;
44
+ }
45
+ export interface TaskGetResponse<T = any> {
46
+ id: string;
47
+ status_code: number;
48
+ status_message: string;
49
+ time: string;
50
+ cost: number;
51
+ result_count: number;
52
+ path: string[];
53
+ data: any;
54
+ result: T[];
55
+ }
56
+ export interface LocationParameters {
57
+ location_name?: string;
58
+ location_code?: number;
59
+ language_name?: string;
60
+ language_code?: string;
61
+ }
62
+ export interface PaginationParameters {
63
+ limit?: number;
64
+ offset?: number;
65
+ }
66
+ export interface DateRangeParameters {
67
+ date_from?: string;
68
+ date_to?: string;
69
+ }
70
+ export interface TaskParameters {
71
+ tag?: string;
72
+ priority?: number;
73
+ postback_url?: string;
74
+ postback_data?: string;
75
+ }
76
+ export declare enum StatusCode {
77
+ SUCCESS = 20000,
78
+ TASK_CREATED = 20100,
79
+ NO_RESULTS = 20011,
80
+ ERROR = 40000,
81
+ AUTH_ERROR = 40100,
82
+ INVALID_PARAMETERS = 40200
83
+ }
84
+ export declare enum ApiMethod {
85
+ TASK_POST = "task_post",
86
+ TASKS_READY = "tasks_ready",
87
+ TASK_GET = "task_get",
88
+ LIVE = "live"
89
+ }
@@ -0,0 +1,19 @@
1
+ // Status codes and messages
2
+ export var StatusCode;
3
+ (function (StatusCode) {
4
+ StatusCode[StatusCode["SUCCESS"] = 20000] = "SUCCESS";
5
+ StatusCode[StatusCode["TASK_CREATED"] = 20100] = "TASK_CREATED";
6
+ StatusCode[StatusCode["NO_RESULTS"] = 20011] = "NO_RESULTS";
7
+ StatusCode[StatusCode["ERROR"] = 40000] = "ERROR";
8
+ StatusCode[StatusCode["AUTH_ERROR"] = 40100] = "AUTH_ERROR";
9
+ StatusCode[StatusCode["INVALID_PARAMETERS"] = 40200] = "INVALID_PARAMETERS";
10
+ })(StatusCode || (StatusCode = {}));
11
+ // API Methods
12
+ export var ApiMethod;
13
+ (function (ApiMethod) {
14
+ ApiMethod["TASK_POST"] = "task_post";
15
+ ApiMethod["TASKS_READY"] = "tasks_ready";
16
+ ApiMethod["TASK_GET"] = "task_get";
17
+ ApiMethod["LIVE"] = "live";
18
+ })(ApiMethod || (ApiMethod = {}));
19
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAuFA,4BAA4B;AAC5B,MAAM,CAAN,IAAY,UAOX;AAPD,WAAY,UAAU;IACpB,qDAAe,CAAA;IACf,+DAAoB,CAAA;IACpB,2DAAkB,CAAA;IAClB,iDAAa,CAAA;IACb,2DAAkB,CAAA;IAClB,2EAA0B,CAAA;AAC5B,CAAC,EAPW,UAAU,KAAV,UAAU,QAOrB;AAED,cAAc;AACd,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,oCAAuB,CAAA;IACvB,wCAA2B,CAAA;IAC3B,kCAAqB,CAAA;IACrB,0BAAa,CAAA;AACf,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { setupApiClient } from "./api/client.js";
5
+ import { registerKeywordsTools } from "./api/keywords/index.js";
6
+ async function main() {
7
+ // Get authentication credentials from environment variables
8
+ const dataForSeoLogin = process.env.DATAFORSEO_LOGIN;
9
+ const dataForSeoPassword = process.env.DATAFORSEO_PASSWORD;
10
+ if (!dataForSeoLogin || !dataForSeoPassword) {
11
+ console.error("Error: DataForSEO API credentials not provided");
12
+ console.error("Please set DATAFORSEO_LOGIN and DATAFORSEO_PASSWORD environment variables");
13
+ process.exit(1);
14
+ }
15
+ // Setup API client
16
+ const apiClient = setupApiClient(dataForSeoLogin, dataForSeoPassword);
17
+ // Create an MCP server
18
+ const server = new McpServer({
19
+ name: "DataForSEO Keywords MCP Server",
20
+ version: "1.0.0",
21
+ });
22
+ // Register keyword research tools (Google Ads, Bing Ads, Google Trends)
23
+ registerKeywordsTools(server, apiClient);
24
+ // Start receiving messages on stdin and sending messages on stdout
25
+ const transport = new StdioServerTransport();
26
+ console.error("DataForSEO Keywords MCP Server starting...");
27
+ await server.connect(transport);
28
+ console.error("DataForSEO Keywords MCP Server connected");
29
+ }
30
+ main().catch((error) => {
31
+ console.error("Error in DataForSEO Keywords MCP Server:", error);
32
+ process.exit(1);
33
+ });
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,KAAK,UAAU,IAAI;IACjB,4DAA4D;IAC5D,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACrD,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAE3D,IAAI,CAAC,eAAe,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;QAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,mBAAmB;IACnB,MAAM,SAAS,GAAG,cAAc,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;IAEtE,uBAAuB;IACvB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,gCAAgC;QACtC,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,wEAAwE;IACxE,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEzC,mEAAmE;IACnE,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAE5D,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAC5D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;IACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@channel47/dataforseo-mcp-server",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for keyword research via DataForSEO API - built for search and shopping media buyers",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "dataforseo-mcp-server": "dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "prepublishOnly": "npm run build",
18
+ "start": "node dist/index.js",
19
+ "dev": "ts-node src/index.ts"
20
+ },
21
+ "keywords": [
22
+ "mcp",
23
+ "model-context-protocol",
24
+ "dataforseo",
25
+ "api",
26
+ "seo",
27
+ "keyword-research",
28
+ "google-ads",
29
+ "bing-ads"
30
+ ],
31
+ "author": "channel47",
32
+ "license": "MIT",
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "git+https://github.com/channel47/dataforseo-mcp-server.git"
36
+ },
37
+ "homepage": "https://github.com/channel47/dataforseo-mcp-server#readme",
38
+ "bugs": {
39
+ "url": "https://github.com/channel47/dataforseo-mcp-server/issues"
40
+ },
41
+ "engines": {
42
+ "node": ">=18"
43
+ },
44
+ "dependencies": {
45
+ "@modelcontextprotocol/sdk": "^1.19.1",
46
+ "axios": "^1.6.7",
47
+ "zod": "^3.22.4"
48
+ },
49
+ "devDependencies": {
50
+ "@types/node": "^20.11.19",
51
+ "ts-node": "^10.9.2",
52
+ "typescript": "^5.3.3"
53
+ }
54
+ }