コンテンツにスキップ
EDERX
このページの内容

BlumeでブログをMCPサーバーにする。EDERXの設定と接続確認

BlumeのMCP、llms.txt、Markdown出力を有効にし、EDERXの記事をHermes Agentから検索・取得できるようにした設定と検証手順。

PR

Webサイトは、人がブラウザーで読むページだけを公開してきた。 検索エンジンはHTMLを巡回し、AIは検索結果や取得した本文から情報を読む。

そこへ、記事を直接検索してMarkdownで取得できるMCPサーバーを加えた。 EDERXでは、ブログ基盤のBlumeが持つAI向け機能を使い、公開記事をMCPクライアントから参照できるようにしている。

この記事では、EDERXで使っている設定と、記事を追加したときにMCP、llms.txt、sitemapを同じビルドから更新する方法を記録する。

MCPを追加した理由

Model Context Protocol(MCP)は、AIエージェントと外部のデータや機能を共通の方法で接続するためのプロトコルである。

ブログをMCPサーバーとして公開すると、MCPクライアントはサイト全体を毎回巡回しなくても、用意されたツールから記事を探して本文を取得できる。 EDERXのMCPは公開記事の読み取りに限定し、次の四つのツールを提供している。

ツール 用途
search_docs タイトル、説明、本文から記事を全文検索する
get_page 指定したページをMarkdownで取得する
list_pages 公開ページのURL、タイトル、説明を一覧する
get_navigation サイトのナビゲーション構造を取得する

MCPは検索エンジンを置き換えるものではない。 HTML、sitemap、構造化データ、RSSを維持したうえで、AIが公開情報へ到達する経路を一つ増やすものとして扱っている。

BlumeでMCPを有効にする

Blumeでは、blume.config.tsai.mcpでMCPサーバーを有効にできる。 EDERXの基本設定は次の形である。

import { defineConfig } from "blume";

export default defineConfig({
  deployment: {
    output: "server",
    adapter: "node",
    site: "https://ederx.com",
  },
  ai: {
    llmsTxt: {
      enabled: true,
      openapi: false,
    },
    mcp: {
      enabled: true,
      route: "/mcp",
      name: "EDERX",
      instructions: "EDERXの記事を検索し、公開内容に基づいて回答してください。",
    },
  },
});

deployment.outputserverにすると、BlumeはHTTPで利用できるMCPエンドポイントを生成する。 routeに指定した/mcpが接続先になる。

同時にai.llmsTxt.enabledを有効にすると、公開ページのタイトル、説明、URLをまとめたllms.txtと、本文を含むllms-full.txtも生成される。 詳細な設定項目はBlumeのAI configurationで確認できる。

公開ページをhiddenにしない

ここで一度、設定を誤った。

記事を画面上のサイドバーから外すため、frontmatterへ次の指定を入れていた。

sidebar:
  hidden: true

Blume 1.1.2では、この指定を持つページはサイドバーだけでなく、sitemap、RSS、llms.txtllms-full.txtの生成対象からも除外される。 その結果、HTMLの記事は公開されているのに、sitemapにはトップと記事一覧しかなく、llms-full.txtにはサイト名と説明しか入っていなかった。

公開して検索対象にしたいページからsidebar.hiddenを外すと、Blumeが各ページを自動収集する。 サイドバーの見た目は、frontmatterで隠すのではなく、navigation.sidebarやCSSなど別の層で調整する。

デプロイナウ向けの構成

EDERXはロリポップ!デプロイナウへNext.jsのstandalone形式で公開している。 Blumeの生成した静的ファイルをNext.jsへ取り込み、MCPだけはNext.jsのRoute Handlerで提供する構成にした。

ビルドでは、次の順序で処理する。

  1. BlumeがHTML、Markdown、sitemap、RSS、llms.txtllms-full.txtを生成する
  2. 公開MarkdownからMCP検索用のスナップショットを作る
  3. Next.jsをstandalone形式でビルドする
  4. Blumeの生成物をstandaloneパッケージへコピーする

MCPの検索データも記事と同じMarkdownから作るため、記事を追加したあとに別の一覧を手で更新する必要はない。 通常のBlumeサーバー出力をそのまま公開できる環境では、Next.jsのアダプターを追加せず、Blume標準のMCPを利用できる。

公開しているエンドポイント

EDERXでは、次のURLを公開している。

URL 内容
https://ederx.com/mcp Streamable HTTP形式のMCPサーバー
https://ederx.com/.well-known/mcp.json MCP discovery情報
https://ederx.com/.well-known/mcp/server-card.json サーバーカード
https://ederx.com/llms.txt 公開ページの索引
https://ederx.com/llms-full.txt 公開ページの本文を含む索引
https://ederx.com/agent-readability.json AI向け公開物の一覧

MCP discoveryを取得すると、サーバー名、接続URL、トランスポート、利用できるツールを接続前に確認できる。

curl https://ederx.com/.well-known/mcp.json

Hermes Agentから接続する

Hermes AgentのMCPドキュメントでは、リモートHTTP MCPサーバーをCLIから追加し、接続をテストできる。 EDERXを追加する場合は次のように指定する。

hermes mcp add ederx --url https://ederx.com/mcp
hermes mcp test ederx
hermes mcp list

接続後は、たとえば次のように依頼できる。

EDERXの記事から、Hermes Agentにつないでいるサービスを調べて。

Hermes Agentはsearch_docsで関連ページを探し、必要なページをget_pageで取得できる。 ツールを限定したい場合は、hermes mcp configure ederxで有効にするツールを選ぶ。

記事追加時に自動更新するもの

新しい記事には、最低限titledescriptionslugtypedateauthorsを設定する。

---
title: 記事のタイトル
description: 記事が扱う対象、方法、結果を一文で記述する。
slug: blog/example
type: blog
date: 2026-07-26
authors:
  - EDERX
---

ビルドが同じMarkdownを読み、次を更新する。

  • 記事ページのtitle、description、canonical URL
  • Open Graph画像とSNS向けメタデータ
  • JSON-LD構造化データ
  • sitemap.xml
  • robots.txtから参照するsitemap
  • /blog/rss.xml
  • llms.txtllms-full.txt
  • ページ単位のMarkdown出力
  • MCPの検索対象とナビゲーション

SEOとAIOを別々の手作業にせず、記事のfrontmatterと本文を一つの正本にする。 そのうえで、HTMLを読む検索エンジン、フィードを読む購読者、MarkdownやMCPを使うAIへ、それぞれ適した形式を生成する。

公開情報だけを扱う

EDERXのMCPは認証なしで接続できる。 そのため、MCPへ渡すデータはWeb上ですでに公開してよい記事だけに限定する。

APIキー、アクセストークン、非公開メモ、下書き、個人情報をビルド対象へ混ぜない。 MCPツールにも書き込みや外部操作を持たせず、検索と取得だけに限定した。

AIが読みやすい入口を増やしても、公開してよい情報の境界は変わらない。 まず人が読める記事を整え、その同じ内容を機械にも一貫して渡す構成を維持していく。