BlumeでブログをMCPサーバーにする。EDERXの設定と接続確認
BlumeのMCP、llms.txt、Markdown出力を有効にし、EDERXの記事をHermes Agentから検索・取得できるようにした設定と検証手順。
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.tsのai.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.outputをserverにすると、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.txt、llms-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で提供する構成にした。
ビルドでは、次の順序で処理する。
- BlumeがHTML、Markdown、sitemap、RSS、
llms.txt、llms-full.txtを生成する - 公開MarkdownからMCP検索用のスナップショットを作る
- Next.jsをstandalone形式でビルドする
- 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で有効にするツールを選ぶ。
記事追加時に自動更新するもの
新しい記事には、最低限title、description、slug、type、date、authorsを設定する。
---
title: 記事のタイトル
description: 記事が扱う対象、方法、結果を一文で記述する。
slug: blog/example
type: blog
date: 2026-07-26
authors:
- EDERX
---
ビルドが同じMarkdownを読み、次を更新する。
- 記事ページの
title、description、canonical URL - Open Graph画像とSNS向けメタデータ
- JSON-LD構造化データ
sitemap.xmlrobots.txtから参照するsitemap/blog/rss.xmlllms.txtとllms-full.txt- ページ単位のMarkdown出力
- MCPの検索対象とナビゲーション
SEOとAIOを別々の手作業にせず、記事のfrontmatterと本文を一つの正本にする。 そのうえで、HTMLを読む検索エンジン、フィードを読む購読者、MarkdownやMCPを使うAIへ、それぞれ適した形式を生成する。
公開情報だけを扱う
EDERXのMCPは認証なしで接続できる。 そのため、MCPへ渡すデータはWeb上ですでに公開してよい記事だけに限定する。
APIキー、アクセストークン、非公開メモ、下書き、個人情報をビルド対象へ混ぜない。 MCPツールにも書き込みや外部操作を持たせず、検索と取得だけに限定した。
AIが読みやすい入口を増やしても、公開してよい情報の境界は変わらない。 まず人が読める記事を整え、その同じ内容を機械にも一貫して渡す構成を維持していく。