mcpField
S
Sidewise

Sidewise

リモート
github.com/nulljoshその他01 週間前に更新
リポジトリ

Sidewise について

Sidewiseは、政治的な傾向の異なる報道機関のニュースを集約し、一方だけが報じている話題を示します。ウェブリーダー、API、ターミナルクライアント、認証不要のMCPサーバーから利用できます。

主な機能

  1. 01ニュースを集約し報道機関の傾向を表示
  2. 02見出しを分類し一方だけの報道を抽出
  3. 03報道機関ごとの見出しを比較
  4. 04フィードの状態とデータの完全性を確認

活用シーン

  1. 01異なる政治的傾向のニュースを確認
  2. 02一方だけが報じている話題を見つける
  3. 03同じ話題の見出しや表現を比較
  4. 04フィード障害や古いデータを確認

MCP 対応

ステートレスなStreamable HTTP MCPサーバーを通じて、ニュース取得、ブラインドスポット検索、報道比較、フィード状態確認のツールを公開します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://news.heyitsmejosh.com/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

README の画像

Sidewise

version license GitHub

反対側は何を読んでいるのでしょうか?

Sidewise は、さまざまな政治的立場の14のニュース編集部から16のフィードを取得し、それぞれを左派、中央、右派に分類して、盲点、つまり片方の陣営だけが報じている記事を見つけます。無料です。アカウントもキーも制限もありません。

同じニュース編集部の2つのフィードは、1つの声として数えます。出版社がメインフィードの隣にオピニオン欄を設け、それを2つの情報源だと言うことはできません。

利用方法は5つあります。ウェブリーダー、ネイティブのiPhone、iPad、Macアプリ、JSON API、MCP サーバー、ターミナルクライアント(swift build && ./.build/debug/sidewise-tui 5 — tui/を参照)。

README の画像

スクリーンショット

Sidewise

アプリ

ios/にある、iOSとmacOSで共通のコードベースを使用したSwiftUIアプリです。同じ公開APIを読み込みます。アカウント不要、トラッキングなし。保存した記事、フォロー、閲覧履歴、フィードキャッシュはデバイス上に保持されます。

iPhoneおよびiPadアプリで、記事の一覧表示に加えてできることは次のとおりです。

  • 比較。 記事を開くと、各メディアの見出しが評価とリンクとともに、左から右へ並んで表示されます。「比較」タブには、2つ以上のメディアが報じている記事だけが表示されます。1つのメディアしか報じていない記事には、その旨が表示され、比較があるかのように装うことはありません。 フィードのクラスタには無関係な項目が含まれることがあるため、記事の見出しが比較に残るのは、記事のタイトルと意味のある単語を少なくとも2つ共有している場合だけです。
  • メディアとフォロー中。 すべてのメディアを評価と最近の見出しとともに表示します。メディアをフォローまたはミュートできます。ミュートしたメディアは表示されなくなり、フォローしたメディアは専用のタブに表示されます。
  • マイ・ダイエット。 今週実際に開いた記事の左派、中央、右派の割合、平均的な政治的傾向、最も多く開いたメディアを確認できます。
  • 共有機能拡張。 Safariからリンクを共有すると、ドメインに基づいてそのメディアのSidewiseでの評価を表示します。評価されていないメディアの場合は、その旨を知らせます。
  • ウィジェット。 トップ記事とそのバイアスバーを表示する、小型および中型のホーム画面ウィジェットです。
cd ios && xcodegen generate
xcodebuild -scheme Sidewise-iOS -destination 'generic/platform=iOS Simulator' build

MCP

claude mcp add --transport http sidewise https://sidewise.jaybulb.com/mcp
ツールパラメーター戻り値
get_newsview、outlet、bias、developing、q、limit現在の見出し。記事ごとにフラット表示、またはクラスタ表示
get_blindspotslimit片方の政治的陣営だけが報じている記事
compare_coverageq(必須)、limit各陣営の見出しでの同一記事の紹介と、それぞれに固有の単語
get_feed_health:応答したフィードと、提供データが完全なものか、古いデータで代替されたものか

空の結果や片方の陣営に偏った結果を信頼する前に、get_feed_healthを呼び出してください。そうしないと、障害とニュースの少ない日が同じように見えてしまいます。

ステートレスなストリーミング可能HTTPで、認証は不要です。Claude Desktop、Claude Code、Cursorなど、あらゆるMCPクライアントで利用できます。

API

GET https://sidewise.jaybulb.com/api/stories。すべてのパラメーターは省略可能です。

ParamValuesDefault
viewlatest、stories、bothboth
outlet任意の配信元名(例:Hacker News)すべて
biasleft、center、rightすべて
blindspottrueオフ
developingtrue:過去90分間に3つ以上の報道機関が報じたニュースオフ
comparetrue:各ストーリーに左右対比の内訳を付加オフ
q見出しと要約テキストに対する部分一致なし
limit1~20060クラスター/120件の見出し

エンドポイントはほかに2つあります。GET /api/health は各フィードの状態を報告し、半数を超えるフィードが停止している場合は 503 を返すため、そのまま監視先に指定できます。GET /api/sources は各フィードとそのバイアス、陣営、親報道機関を一覧表示します。

curl 'https://sidewise.jaybulb.com/api/stories?view=stories&blindspot=true'
curl 'https://sidewise.jaybulb.com/api/stories?view=latest&outlet=Hacker%20News&limit=10'
{
  "updated": 1754700000000,
  "stories": [
    {
      "title": "Fed holds rates steady",
      "blindspot": false,
      "sources": [
        { "title": "Fed holds rates steady", "link": "https://…", "outlet": "NPR", "bias": -1 },
        { "title": "Fed refuses to cut rates", "link": "https://…", "outlet": "Fox News", "bias": 2 }
      ]
    }
  ],
  "latest": [
    { "title": "Fed holds rates steady", "link": "https://…", "outlet": "NPR", "bias": -1, "ts": 1754699000000 }
  ]
}

CORS はすべて許可されています。フィードの再取得は最短でも2分間隔です。レスポンスは no-store です(下記参照)。ts はエポックミリ秒で、フィードに日付がない場合は 0 です。これらは並べ替え時に末尾になります。完全な仕様は openapi.yaml、エージェント向けの案内は llms.txt を参照してください。

仕組み

1つの Cloudflare Worker(worker.js)が src/feeds.js のすべてのフィードをポーリングし、1回のプールされた取得からページ、API、MCP を提供します。

  • latest:すべての見出しを新しい順に表示します。
  • stories:タイトルのキーワードの重複に基づいて見出しをクラスター化します。各ソースには左派、中道、右派のタグを付けます。一方の陣営だけに偏ったクラスターには blindspot のフラグを付けます。

キャッシュされるのは、1つの定数キーに保存されるフィード取得結果だけです。フィルタリングは、その後に shape() 内でリクエストごとに行われ、レスポンスは no-store で返されます。このゾーンの CDN キャッシュはクエリ文字列を無視するため、クエリ文字列をキャッシュすると、あるユーザーの ?outlet= がすべてのユーザーに返されてしまいます。いずれの場合も再取得は行われず、低コストのフィルタリングだけが再実行されます。

クラスターはクラスター化の 後に フィルタリングされます。フラットなフィードは120件の上限を適用する 前に フィルタリングされます。どちらの順序も重要です。入力を先に絞り込むと、配信元をまたいだ比較ができなくなります。上限を適用した後にフィルタリングすると、規模の小さい配信元が表示されなくなります。

アーキテクチャ

バイアススコア

各ソースには -2(左派)から +2(右派)までのスコアが付いています。0 は中道、または Hacker News や Daring Fireball のようなテクノロジー系配信元の場合は非政治的を表します。これらは FEEDS に手作業で割り当てた、厳密な評価ではなく大まかな傾向を示すスコアです。

CBC · The Guardian · NPR · BBC · Global News · National Post · Fox News · NY Post · Daily Wire · Hacker News · Daring Fireball · NBC News · Wall Street Journal · NY Post Opinion · Vancouver Sun · The Province

worker.js の先頭にある FEEDS に [outlet, bias, url] を追加すると、配信元を追加できます。RSS 2.0 または Atom フィードであれば利用できます。

開発

npm test         # 95 checks, no network
npm run feeds    # check every feed for freshness, not just a 200
npm run deploy   # wrangler deploy

FEEDS を変更した後は npm run feeds を実行してください。このコマンドは、ゾンビフィードを検出する唯一の方法である 更新頻度 を確認します。ゾンビフィードとは、XML に問題がなく200を返すものの、最新の項目が2年前のままになっているフィードです。CNN ではこれが3年間続いていました。項目数の確認では検出できませんでした。

Cloudflare Workers と Static Assets を使用します。1回のデプロイでページ、/api/stories、/mcp を提供します。

テスト

test/ には、ネットワークにも Worker ランタイムにも依存せず、src/ の4つのモジュールを対象にしたテストがあります。

FileWhat it holds down
parse.test.mjsエンティティのデコード、二重エスケープされた要約、CDATA と Atom の形式、および javascript: と data: リンクの拒否
stories.test.mjsクラスタリング、ブラインドスポットの判定に使われる「フィードではなく報道機関を数える」ルール、ニュースの進展を判定する時間枠、フィルタリングをクラスター化後に行う順序
load.test.mjsフィードのエラー報告、タイムアウト、縮退時/古いデータのフォールバック、および不正な取得結果で直近の正常なデータを上書きしないルール
worker.test.mjsクエリの解析と上限設定、および404、405、500を含め、/api/ 以下がすべてCORS付きのJSONを返すこと
mcp.test.mjsJSON-RPC のフレーミング、不正な入力、各ツールの仕様

セキュリティについては、SECURITY.md を参照してください。

ライセンス

MIT 2026、Joshua Trommel。見出しとリンクの権利は各発行元に帰属します。Sidewise は何も保存せず、元のページへのリンクを提供します。

ホワイトペーパー

技術ホワイトペーパー

API とエージェントツール

REST(/api/*)、POST /mcp サーバー、および読者向けページ内 WebMCP ツール (public/webmcp.js)は、同じ 4 つの操作を公開します。互いにテストされているため、 動作に差異が生じることはありません。詳しくは docs/API.md をご覧ください。

コメント

MCP は初めてですか?

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

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