Mcp Webpage Timestamps について
Mcp Webpage Timestampsは、ウェブページの作成・更新・公開日時を抽出するMCPサーバーです。複数のメタデータ形式と信頼度を示し、スクレイピングやコンテンツ分析に利用できます。
主な機能
- 01作成・更新・公開日時の抽出
- 02HTML、ヘッダー、JSON-LD、SNSメタデータの解析
- 03ヒューリスティックによる日付検出
- 04信頼度と取得元の提示
- 05複数URLの一括処理
活用シーン
- 01スクレイピングしたページに日付を追加
- 02記事の公開・更新時期の分析
- 03複数URLにまたがる時系列パターンの確認
MCP 対応
MCP対応クライアントに、単一ページと複数ページの日時抽出ツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Webページのタイムスタンプ
Webページの作成、変更、公開のタイムスタンプを抽出する、強力なModel Context Protocol (MCP) サーバーです。このツールは、ウェブスクレイピングとウェブコンテンツの時間的分析を目的として設計されています。
機能
- 包括的なタイムスタンプ抽出:Webページから作成、変更、公開のタイムスタンプを抽出します
- 複数のデータソース:HTMLメタタグ、HTTPヘッダー、JSON-LD、マイクロデータ、OpenGraph、Twitterカード、ヒューリスティック分析に対応しています
- 信頼度スコア:抽出したタイムスタンプの信頼度(高/中/低)を提示します
- バッチ処理:複数のURLからタイムスタンプを同時に抽出します
- 設定可能:タイムアウト、ユーザーエージェント、リダイレクト処理、ヒューリスティックのオプションをカスタマイズできます
- 本番環境に対応:堅牢なエラー処理、包括的なログ記録、TypeScriptに対応しています
インストール
クイックインストール
npm install -g mcp-webpage-timestamps
npxでの使用
npx mcp-webpage-timestamps
Smithery経由でのインストール
Smitheryを使って、Claude Desktopにmcp-webpage-timestampsを自動的にインストールするには:
npx -y @smithery/cli install @Fabien-desablens/mcp-webpage-timestamps --client claude
前提条件
- Node.js 18.0.0以降
- npmまたはyarn
開発用インストール
git clone https://github.com/Fabien-desablens/mcp-webpage-timestamps.git
cd mcp-webpage-timestamps
npm install
npm run build
使用方法
MCP サーバーとして
このサーバーは、MCP対応のあらゆるクライアントで使用できます。設定方法は次のとおりです。
Claude Desktopの設定
claude_desktop_config.jsonに追加します:
{
"mcpServers": {
"webpage-timestamps": {
"command": "npx",
"args": ["mcp-webpage-timestamps"],
"env": {}
}
}
}
Clineの設定
MCPの設定に追加します:
{
"mcpServers": {
"webpage-timestamps": {
"command": "npx",
"args": ["mcp-webpage-timestamps"]
}
}
}
直接使用
# Start the server
npm start
# Or run in development mode
npm run dev
APIリファレンス
ツール
extract_timestamps
単一のWebページからタイムスタンプを抽出します。
パラメーター:
url(string、必須):タイムスタンプを抽出するWebページのURLconfig(object、任意):設定オプション
設定オプション:
timeout(number):リクエストのタイムアウト(ミリ秒単位、デフォルト:10000)userAgent(string):リクエストに使用するユーザーエージェント文字列followRedirects(boolean):HTTPリダイレクトを追跡するかどうか(デフォルト:true)maxRedirects(number):追跡するリダイレクトの最大数(デフォルト:5)enableHeuristics(boolean):ヒューリスティックによるタイムスタンプ検出を有効にするかどうか(デフォルト:true)
例:
{
"name": "extract_timestamps",
"arguments": {
"url": "https://example.com/article",
"config": {
"timeout": 15000,
"enableHeuristics": true
}
}
}
batch_extract_timestamps
複数のWebページからタイムスタンプを一括で抽出します。
パラメーター:
urls(array of strings、必須):タイムスタンプを抽出するURLの配列config(object、任意):extract_timestampsと同じ設定オプション
例:
{
"name": "batch_extract_timestamps",
"arguments": {
"urls": [
"https://example.com/article1",
"https://example.com/article2",
"https://example.com/article3"
],
"config": {
"timeout": 10000
}
}
}
レスポンス形式
どちらのツールも、次の構造のJSONオブジェクトを返します。
{
url: string;
createdAt?: Date;
modifiedAt?: Date;
publishedAt?: Date;
sources: TimestampSource[];
confidence: 'high' | 'medium' | 'low';
errors?: string[];
}
TimestampSource:
{
type: 'html-meta' | 'http-header' | 'json-ld' | 'microdata' | 'opengraph' | 'twitter' | 'heuristic';
field: string;
value: string;
confidence: 'high' | 'medium' | 'low';
}
対応するタイムスタンプソース
HTMLメタタグ
article:published_timearticle:modified_timedatepubdatepublishdatelast-modifieddc.date.createddc.date.modifieddcterms.createddcterms.modified
HTTPヘッダー
Last-ModifiedDate
JSON-LD構造化データ
datePublisheddateModifieddateCreated
マイクロデータ
datePublisheddateModified
OpenGraph
og:article:published_timeog:article:modified_timeog:updated_time
Twitterカード
twitter:data1(日付情報を含む場合)
ヒューリスティック分析
datetime属性を持つ時間要素- テキスト内の一般的な日付パターン
- 日付に関連するCSSクラス
開発
スクリプト
# Development with hot reload
npm run dev
# Build the project
npm run build
# Run tests
npm test
# Run tests in watch mode
npm run test:watch
# Lint code
npm run lint
# Fix linting issues
npm run lint:fix
# Format code
npm run format
テスト
このプロジェクトには、包括的なテストが含まれています。
# Run all tests
npm test
# Run tests with coverage
npm test -- --coverage
# Run specific test file
npm test -- extractor.test.ts
コード品質
- TypeScript:厳格な型チェックによる完全な TypeScript サポート
- ESLint:推奨ルールによるコードのリント
- Prettier:コードのフォーマット
- Jest:ユニットテストと統合テスト
- 95%+ テストカバレッジ:包括的なテストスイート
使用例
基本的な使い方
import { TimestampExtractor } from './src/extractor.js';
const extractor = new TimestampExtractor();
const result = await extractor.extractTimestamps('https://example.com/article');
console.log('Published:', result.publishedAt);
console.log('Modified:', result.modifiedAt);
console.log('Confidence:', result.confidence);
console.log('Sources:', result.sources.length);
カスタム設定
const extractor = new TimestampExtractor({
timeout: 15000,
userAgent: 'MyBot/1.0',
enableHeuristics: false,
maxRedirects: 3
});
const result = await extractor.extractTimestamps('https://example.com');
バッチ処理
const urls = [
'https://example.com/article1',
'https://example.com/article2',
'https://example.com/article3'
];
const results = await Promise.all(
urls.map(url => extractor.extractTimestamps(url))
);
ユースケース
- コンテンツ分析:ウェブコンテンツの時間的な側面を分析します
- ウェブスクレイピング:スクレイピングしたページから時間に関するメタデータを抽出します
- SEO 分析:公開と変更のパターンを分析します
- 調査:ウェブコンテンツの時間的な側面を調査します
- コンテンツ管理:コンテンツのライフサイクルと更新を追跡します
エラー処理
この抽出ツールは、さまざまなエラー条件を適切に処理します。
- ネットワークエラー:タイムアウト、接続拒否、DNS 解決の失敗
- HTTP エラー:404、500、その他の HTTP ステータスコード
- 解析エラー:無効な HTML、不正な JSON-LD、解析できない日付
- 設定エラー:無効な URL、タイムアウト値など
すべてのエラーはレスポンスの errors 配列に記録されるため、堅牢なエラー処理とデバッグが可能です。
貢献
皆さまからの貢献を歓迎します!詳細については、貢献ガイドをご覧ください。
開発環境のセットアップ
- リポジトリをフォークします
- フォークしたリポジトリをクローンします:
git clone https://github.com/Fabien-desablens/mcp-webpage-timestamps.git - 依存関係をインストールします:
npm install - ブランチを作成します:
git checkout -b feature/your-feature - 変更を加えます
- テストを実行します:
npm test - 変更をコミットします:
git commit -m 'Add some feature' - ブランチにプッシュします:
git push origin feature/your-feature - プルリクエストを送信します
コードスタイル
- 既存のコードスタイルに従ってください
- 新しいコードには TypeScript を使用してください
- 新しい機能にはテストを追加してください
- 必要に応じてドキュメントを更新してください
ライセンス
MIT ライセンスです。詳細については、LICENSE ファイルをご覧ください。
サポート
- 課題:GitHub Issues
- ディスカッション:GitHub Discussions
- ドキュメント:Wiki
変更履歴
変更の詳細な履歴については、CHANGELOG.mdをご覧ください。
謝辞
- 優れた MCP フレームワークを提供するModel Context Protocol
- HTML 解析に使用するCheerio
- HTTP リクエストに使用するAxios
- 日付の解析と操作に使用するdate-fns
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。