DataForSEO MCP サーバー
DataForSEO 用のモデル コンテキスト プロトコル (MCP) サーバー実装。これにより、Claude は選択した DataForSEO API と対話し、標準化されたインターフェースを通じて SEO データを取得できるようになります。
特徴
SERP API: Google、Bing、Yahoo のリアルタイム検索エンジン結果ページ (SERP) データ。
KEYWORDS_DATA API: 検索ボリューム、クリック単価、その他の指標を含むキーワード調査およびクリックストリーム データ。
ONPAGE API: カスタマイズ可能なパラメータに従って Web サイトや Web ページをクロールし、オンページ SEO パフォーマンス メトリックを取得できます。
DATAFORSEO_LABS API: DataForSEO の社内データベースと独自のアルゴリズムに基づくキーワード、SERP、ドメインに関するデータ。
Related MCP server: Google Search MCP Server
前提条件
Node.js (v14以上)
DataForSEO API 資格情報(API ログインとパスワード)
インストール
リポジトリをクローンします。
git clone https://github.com/dataforseo/mcp-server-typescript
cd mcp-server-typescript依存関係をインストールします:
npm install環境変数を設定します。
# Required
export DATAFORSEO_USERNAME=your_username
export DATAFORSEO_PASSWORD=your_password
# Optional: specify which modules to enable (comma-separated)
# If not set, all modules will be enabled
export ENABLED_MODULES="SERP,KEYWORDS_DATA,ONPAGE,DATAFORSEO_LABS,BACKLINKS,BUSINESS_DATA,DOMAIN_ANALYTICS"
# Optional: enable full API responses
# If not set or set to false, the server will filter and transform API responses to a more concise format
# If set to true, the server will return the full, unmodified API responses
export DATAFORSEO_FULL_RESPONSE="false"NPM パッケージとしてインストール
パッケージをグローバルにインストールできます。
npm install -g dataforseo-mcp-serverまたはインストールせずに直接実行します。
npx dataforseo-mcp-serverコマンドを実行する前に環境変数を設定することを忘れないでください。
# Required environment variables
export DATAFORSEO_USERNAME=your_username
export DATAFORSEO_PASSWORD=your_password
# Run with npx
npx dataforseo-mcp-server構築と実行
プロジェクトをビルドします。
npm run buildサーバーを実行します。
npm start利用可能なモジュール
以下のモジュールを有効化/無効化できます。
SERP: Google、Bing、Yahoo のリアルタイム SERP データ。KEYWORDS_DATA: キーワード調査およびクリックストリーム データ。ONPAGE: ウェブサイトやウェブページをクロールして、オンページ SEO パフォーマンス メトリックを取得します。DATAFORSEO_LABS: DataForSEO のデータベースとアルゴリズムに基づくキーワード、SERP、ドメインに関するデータ。BACKLINKS: あらゆるドメイン、サブドメイン、または Web ページのインバウンド リンク、参照ドメイン、参照ページに関するデータ。BUSINESS_DATA: Google、Trustpilot、Tripadvisor などのプラットフォームで公開されているビジネスレビューとビジネス情報に基づきます。DOMAIN_ANALYTICS: ウェブサイトの構築に使用される可能性のあるすべてのテクノロジーを識別し、Whois データを提供します。
新しいツール/モジュールの追加
モジュール構造
各モジュールは特定の DataForSEO API に対応しています。
SERPモジュール → SERP APIKEYWORDS_DATAモジュール →キーワードデータ APIONPAGEモジュール → OnPage APIDATAFORSEO_LABSモジュール → DataForSEO Labs APIBACKLINKS:モジュール →バックリンク APIBUSINESS_DATA: モジュール →ビジネスデータ APIDOMAIN_ANALYTICS: モジュール →ドメイン分析 API
実装オプション
次のいずれかを実行できます。
既存のモジュールに新しいツールを追加する
完全に新しいモジュールを作成する
新しいツールの追加
新しいモジュールまたは既存のモジュールに新しいツールを追加する方法は次のとおりです。
// src/modules/your-module/tools/your-tool.tool.ts
import { BaseTool } from '../../base.tool';
import { DataForSEOClient } from '../../../client/dataforseo.client';
import { z } from 'zod';
export class YourTool extends BaseTool {
constructor(private client: DataForSEOClient) {
super(client);
// DataForSEO API returns extensive data with many fields, which can be overwhelming
// for AI agents to process. We select only the most relevant fields to ensure
// efficient and focused responses.
this.fields = [
'title', // Example: Include the title field
'description', // Example: Include the description field
'url', // Example: Include the URL field
// Add more fields as needed
];
}
getName() {
return 'your-tool-name';
}
getDescription() {
return 'Description of what your tool does';
}
getParams(): z.ZodRawShape {
return {
// Required parameters
keyword: z.string().describe('The keyword to search for'),
location: z.string().describe('Location in format "City,Region,Country" or just "Country"'),
// Optional parameters
fields: z.array(z.string()).optional().describe('Specific fields to return in the response. If not specified, all fields will be returned'),
language: z.string().optional().describe('Language code (e.g., "en")'),
};
}
async handle(params: any) {
try {
// Make the API call
const response = await this.client.makeRequest({
endpoint: '/v3/dataforseo_endpoint_path',
method: 'POST',
body: [{
// Your request parameters
keyword: params.keyword,
location: params.location,
language: params.language,
}],
});
// Validate the response for errors
this.validateResponse(response);
//if the main data array is specified in tasks[0].result[:] field
const result = this.handleDirectResult(response);
//if main data array specified in tasks[0].result[0].items field
const result = this.handleItemsResult(response);
// Format and return the response
return this.formatResponse(result);
} catch (error) {
// Handle and format any errors
return this.formatErrorResponse(error);
}
}
}新しいモジュールの作成
モジュール用に
src/modules/の下に新しいディレクトリを作成します。
mkdir -p src/modules/your-module-nameモジュール ファイルを作成します。
// src/modules/your-module-name/your-module-name.module.ts
import { BaseModule } from '../base.module';
import { DataForSEOClient } from '../../client/dataforseo.client';
import { YourTool } from './tools/your-tool.tool';
export class YourModuleNameModule extends BaseModule {
constructor(private client: DataForSEOClient) {
super();
}
getTools() {
return {
'your-tool-name': new YourTool(this.client),
};
}
}モジュールを
src/config/modules.config.tsに登録します。
export const AVAILABLE_MODULES = [
'SERP',
'KEYWORDS_DATA',
'ONPAGE',
'DATAFORSEO_LABS',
'YOUR_MODULE_NAME' // Add your module name here
] as const;src/index.tsでモジュールを初期化します。
if (isModuleEnabled('YOUR_MODULE_NAME', enabledModules)) {
modules.push(new YourModuleNameModule(dataForSEOClient));
}次にサポートしてほしいエンドポイント/APIは何ですか?
MCPサーバーの機能拡張には常に取り組んでいます。サポートを希望するDataForSEOエンドポイントやAPIがございましたら、下記までご連絡ください。
利用可能なものを確認するには、 DataForSEO APIドキュメントを確認してください。
以下の内容で GitHub リポジトリに問題を開きます:
サポートしてほしい API/エンドポイント。
ユースケースの簡単な説明。
実装してほしい具体的な機能について説明してください。
皆様からのフィードバックは、次にサポートする API の優先順位付けに役立ちます。