mcpField
R
ReviewWebsite.com - MCP Server

ReviewWebsite.com - MCP Server

ローカル
github.com/mrgoonie開発ツール730 週間前に更新

ReviewWebsite.com - MCP Server について

ReviewWebsite.com API を使ってウェブサイトのレビュー管理や URL 分析を行う TypeScript 製 MCP サーバーです。CLI を備え、stdio と Streamable HTTP のトランスポートに対応しています。

主な機能

  1. 01レビューの作成・取得・更新・削除
  2. 02URL の Markdown 変換
  3. 03構造化データとページ内容の抽出
  4. 04リンクの抽出とサイトの要約
  5. 05SEO キーワード・トラフィック・被リンク分析
  6. 06AI モデルと待機動作の設定

活用シーン

  1. 01AI アシスタント経由でレビューを管理
  2. 02ウェブページを Markdown や構造化データに変換
  3. 03ページ内容を確認してサイトを要約
  4. 04キーワードや被リンク指標を調査

MCP 対応

ReviewWebsite.com API の操作を MCP ツールとして AI クライアントに提供し、レビュー管理や URL 分析を可能にします。stdio と Streamable HTTP のトランスポートに対応しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

ReviewWebsite.com - MCP サーバー

このプロジェクトでは、AI アシスタントを ReviewWebsite.com API に接続する Model Context Protocol(MCP)サーバーを提供します。ウェブサイトのレビューの作成と管理、データの抽出、URL の Markdown への変換などを行えます。

ReviewWebsite Server MCP server
利用できる機能
  • ウェブサイトのレビューの作成、読み取り、更新、削除
  • 利用可能な AI モデルの取得
  • AI を使用した URL の Markdown への変換
  • AI を使用した URL からの構造化データの抽出
  • URL のスクレイピングとコンテンツの抽出
  • ウェブサイトからのリンクの抽出
  • AI を使用した URL とウェブサイトの要約
  • SEO インサイト(キーワードのアイデア、キーワードの難易度、トラフィック分析、バックリンク)
  • AI モデルとパラメーターのカスタマイズ
  • 待機動作とタイミングの制御

ReviewWeb.site

対応トランスポート

  • "stdio" トランスポート - CLI の使用時のデフォルトのトランスポート
  • "Streamable HTTP" トランスポート - ウェブベースのクライアント向け
    • 認証の実装(Bearer <token> を指定する「Authorization」ヘッダー)
  • 「sse」トランスポート (非推奨)
  • テストの作成

使用方法

CLI
# Get available AI models
npm run dev:cli -- get-ai-models --api-key "your-api-key"

# Create a new review
npm run dev:cli -- create-review --url "https://example.com" --instructions "Review this website" --api-key "your-api-key"

# Get a specific review by ID
npm run dev:cli -- get-review --review-id "review-id" --api-key "your-api-key"

# List all reviews
npm run dev:cli -- list-reviews --page 1 --limit 10 --api-key "your-api-key"

# Update a review
npm run dev:cli -- update-review --review-id "review-id" --url "https://example.com" --instructions "Updated instructions" --api-key "your-api-key"

# Delete a review
npm run dev:cli -- delete-review --review-id "review-id" --api-key "your-api-key"

# Convert URL to Markdown
npm run dev:cli -- convert-to-markdown --url "https://example.com" --model "gpt-4o" --api-key "your-api-key"

# Extract structured data from URL
npm run dev:cli -- extract-data --url "https://example.com" --instructions "Extract product information" --api-key "your-api-key"

# Scrape URL
npm run dev:cli -- scrape-url --url "https://example.com" --api-key "your-api-key"

# Extract links from URL
npm run dev:cli -- extract-links --url "https://example.com" --type "all" --api-key "your-api-key"

# Summarize URL
npm run dev:cli -- summarize-url --url "https://example.com" --model "gpt-4o" --api-key "your-api-key"

# Get keyword ideas for SEO
npm run dev:cli -- seo-keyword-ideas --keyword "digital marketing" --country "us" --search-engine "Google" --api-key "your-api-key"

# Check keyword difficulty
npm run dev:cli -- seo-keyword-difficulty --keyword "digital marketing" --country "us" --api-key "your-api-key"

# Analyze website traffic
npm run dev:cli -- seo-traffic --domain-or-url "example.com" --mode "subdomains" --country "us" --api-key "your-api-key"

# Get backlinks for a domain
npm run dev:cli -- seo-backlinks --domain "example.com" --api-key "your-api-key"
MCP のセットアップ

stdio トランスポートを使用したローカル設定の場合:

{
  "mcpServers": {
    "reviewwebsite": {
      "command": "node",
      "args": ["/path/to/reviewwebsite-mcp-server/dist/index.js"],
      "transportType": "stdio"
    }
  }
}

リモート HTTP 設定の場合:

{
  "mcpServers": {
    "reviewwebsite": {
      "type": "http",
      "url": "http://localhost:8080/mcp"
    }
  }
}

HTTP トランスポートの環境変数:

以下の環境変数を使用して HTTP サーバーを設定できます。

  • MCP_HTTP_HOST:バインドするホスト(デフォルト:127.0.0.1)
  • MCP_HTTP_PORT:リッスンするポート(デフォルト:8080)
  • MCP_HTTP_PATH:エンドポイントのパス(デフォルト:/mcp)

ソースコードの概要

MCP とは?

Model Context Protocol(MCP)は、AI システムが外部のツールやデータソースに安全かつ状況に応じて接続できるようにするオープン標準です。

このボイラープレートは、すっきりとしたレイヤードアーキテクチャで MCP 仕様を実装しています。拡張して、あらゆる API やデータソース向けのカスタム MCP サーバーを構築できます。

このボイラープレートを使用する理由

  • 本番環境対応のアーキテクチャ:公開済みの MCP サーバーで採用されているパターンに従い、CLI、ツール、コントローラー、サービスを明確に分離しています。

  • 型安全性:開発者体験、コード品質、保守性を向上させるため、TypeScript で構築されています。

  • 動作するサンプル:CLI から API 連携までの一連のパターンを示す、完全に実装された IP ルックアップツールが含まれています。

  • テストフレームワーク:カバレッジレポートを含む、ユニットテストと CLI 統合テストの両方に対応したテスト基盤が付属しています。

  • 開発ツール:MCP サーバー開発向けに事前設定された ESLint、Prettier、TypeScript などの品質向上ツールが含まれています。


はじめに

前提条件


ステップ 1:クローンとインストール

# Clone the repository
git clone https://github.com/mrgoonie/reviewwebsite-mcp-server.git
cd reviewwebsite-mcp-server

# Install dependencies
npm install

ステップ 2:開発サーバーを起動する

デフォルトの stdio トランスポートを使用して、開発モードでサーバーを起動します。

npm run dev:server

または、Streamable HTTP トランスポートを使用します。

npm run dev:server:http

これにより、ホットリロードが有効な MCP サーバーが起動し、http://localhost:5173 で MCP Inspector を利用できるようになります。

⚙️ プロキシサーバーはポート 6277 でリッスンしています 🔍 MCP Inspector は http://127.0.0.1:6274 で稼働しています

HTTP トランスポートを使用する場合、デフォルトでは http://127.0.0.1:8080/mcp でサーバーを利用できます。


ステップ 3:ReviewWebsite API ツールをテストする

CLI で ReviewWebsite API ツールを使用します。

# Get available AI models
npm run dev:cli -- get-ai-models --api-key "your-api-key"

# Create a review
npm run dev:cli -- create-review --url "https://example.com" --instructions "Review this website" --api-key "your-api-key"

# Convert URL to Markdown
npm run dev:cli -- convert-to-markdown --url "https://example.com" --model "gpt-4o" --api-key "your-api-key"

アーキテクチャ

このボイラープレートは、関心事を分離し、保守性を高めるクリーンなレイヤーアーキテクチャのパターンに従っています。

プロジェクト構成

src/
├── cli/              # Command-line interfaces
├── controllers/      # Business logic
├── resources/        # MCP resources: expose data and content from your servers to LLMs
├── services/         # External API interactions
├── tools/            # MCP tool definitions
├── types/            # Type definitions
├── utils/            # Shared utilities
└── index.ts          # Entry point

レイヤーと役割

CLI レイヤー(src/cli/*.cli.ts)
  • 目的:引数を解析してコントローラーを呼び出すコマンドラインインターフェースを定義します
  • 命名:ファイル名は <feature>.cli.ts にします
  • テスト:CLI 統合テストは <feature>.cli.test.ts に配置します
ツールレイヤー(src/tools/*.tool.ts)
  • 目的:AI アシスタント向けに、スキーマと説明を備えた MCP ツールを定義します
  • 命名:ファイル名は <feature>.tool.ts とし、型は <feature>.types.ts に定義します
  • パターン:各ツールでは、引数の検証に zod を使用します
コントローラーレイヤー(src/controllers/*.controller.ts)
  • 目的:ビジネスロジックを実装し、エラーを処理して、レスポンスを整形します
  • 命名:ファイル名は <feature>.controller.ts にします
  • パターン:標準化された ControllerResponse オブジェクトを返します
サービスレイヤー(src/services/*.service.ts)
  • 目的:外部 API またはデータソースと連携します
  • 命名:ファイル名は <feature>.service.ts にします
  • パターン:ロジックを最小限に抑え、API とのやり取りに専念します
ユーティリティレイヤー(src/utils/*.util.ts)
  • 目的:アプリケーション全体で共有する機能を提供します
  • 主なユーティリティ:
    • logger.util.ts:構造化ログ
    • error.util.ts:エラー処理と標準化
    • formatter.util.ts:Markdown 整形ヘルパー

開発ガイド

開発スクリプト

# Start server in development mode (hot-reload & inspector)
npm run dev:server

# Run CLI in development mode
npm run dev:cli -- [command] [args]

# Build the project
npm run build

# Start server in production mode
npm run start:server

# Run CLI in production mode
npm run start:cli -- [command] [args]

テスト

# Run all tests
npm test

# Run specific tests
npm test -- src/path/to/test.ts

# Generate test coverage report
npm run test:coverage

コード品質

# Lint code
npm run lint

# Format code with Prettier
npm run format

# Check types
npm run typecheck

カスタムツールの構築

以下の手順に沿って、独自のツールをサーバーに追加します。

1. サービスレイヤーを定義する

外部 API と連携する新しいサービスを src/services/ に作成します。

// src/services/example.service.ts
import { Logger } from '../utils/logger.util.js';

const logger = Logger.forContext('services/example.service.ts');

export async function getData(param: string): Promise<any> {
	logger.debug('Getting data', { param });
	// API interaction code here
	return { result: 'example data' };
}

2. コントローラーを作成する

ビジネスロジックを処理するコントローラーを src/controllers/ に追加します。

// src/controllers/example.controller.ts
import { Logger } from '../utils/logger.util.js';
import * as exampleService from '../services/example.service.js';
import { formatMarkdown } from '../utils/formatter.util.js';
import { handleControllerError } from '../utils/error-handler.util.js';
import { ControllerResponse } from '../types/common.types.js';

const logger = Logger.forContext('controllers/example.controller.ts');

export interface GetDataOptions {
	param?: string;
}

export async function getData(
	options: GetDataOptions = {},
): Promise<ControllerResponse> {
	try {
		logger.debug('Getting data with options', options);

		const data = await exampleService.getData(options.param || 'default');

		const content = formatMarkdown(data);

		return { content };
	} catch (error) {
		throw handleControllerError(error, {
			entityType: 'ExampleData',
			operation: 'getData',
			source: 'controllers/example.controller.ts',
		});
	}
}

3. MCP ツールを実装する

ツール定義を src/tools/ に作成します。

// src/tools/example.tool.ts
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { z } from 'zod';
import { Logger } from '../utils/logger.util.js';
import { formatErrorForMcpTool } from '../utils/error.util.js';
import * as exampleController from '../controllers/example.controller.js';

const logger = Logger.forContext('tools/example.tool.ts');

const GetDataArgs = z.object({
	param: z.string().optional().describe('Optional parameter'),
});

type GetDataArgsType = z.infer<typeof GetDataArgs>;

async function handleGetData(args: GetDataArgsType) {
	try {
		logger.debug('Tool get_data called', args);

		const result = await exampleController.getData({
			param: args.param,
		});

		return {
			content: [{ type: 'text' as const, text: result.content }],
		};
	} catch (error) {
		logger.error('Tool get_data failed', error);
		return formatErrorForMcpTool(error);
	}
}

export function register(server: McpServer) {
	server.tool(
		'get_data',
		`Gets data from the example API, optionally using \`param\`.
Use this to fetch example data. Returns formatted data as Markdown.`,
		GetDataArgs.shape,
		handleGetData,
	);
}

4. CLI サポートを追加する

CLI コマンドを src/cli/ に作成します。

// src/cli/example.cli.ts
import { program } from 'commander';
import { Logger } from '../utils/logger.util.js';
import * as exampleController from '../controllers/example.controller.js';
import { handleCliError } from '../utils/error-handler.util.js';

const logger = Logger.forContext('cli/example.cli.ts');

program
	.command('get-data')
	.description('Get example data')
	.option('--param <value>', 'Optional parameter')
	.action(async (options) => {
		try {
			logger.debug('CLI get-data called', options);

			const result = await exampleController.getData({
				param: options.param,
			});

			console.log(result.content);
		} catch (error) {
			handleCliError(error);
		}
	});

5. コンポーネントを登録する

新しいコンポーネントを登録するため、エントリーポイントを更新します。

// In src/cli/index.ts
import '../cli/example.cli.js';

// In src/index.ts (for the tool)
import exampleTool from './tools/example.tool.js';
// Then in registerTools function:
exampleTool.register(server);

デバッグツール

MCP Inspector

ビジュアル MCP Inspector にアクセスして、ツールをテストし、リクエストとレスポンスの詳細を確認します。

  1. npm run dev:server を実行します
  2. ブラウザーで http://localhost:5173 を開きます
  3. UI でツールをテストし、ログを直接確認します

サーバーログ

開発用のデバッグログを有効にします。

# Set environment variable
DEBUG=true npm run dev:server

# Or configure in ~/.mcp/configs.json

MCP サーバーの公開

カスタム MCP サーバーを公開する準備ができたら、以下を行います。

  1. package.json に詳細を記入します
  2. README.md を更新してツールのドキュメントを追加します
  3. プロジェクトをビルドします:npm run build
  4. 本番ビルドをテストします:npm run start:server
  5. npm に公開します:npm publish

ライセンス

MIT ライセンス

{
	"reviewwebsite": {
		"environments": {
			"DEBUG": "true",
			"REVIEWWEBSITE_API_KEY": "your-api-key-here"
		}
	}
}

**注:**後方互換性のため、reviewwebsite キーが見つからない場合、サーバーは完全なパッケージ名(reviewwebsite-mcp-server)またはスコープなしのパッケージ名(reviewwebsite-mcp-server)を使った設定も認識します。ただし、新しい設定では短い reviewwebsite キーを使用することを推奨します。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。