先日作った「月齢カレンダー」をMCP化してみた。このアプリのMCPは一般に公開していないので、以下、メモ書きだけです。
MCP (Model Context Protocol)とは、簡単にいうとAIとツール(ここでは月齢カレンダー)をつなぐ「お話の共通規格」のこと。月齢カレンダーそのものは、Next.jsを使って人間が見るために作られているけれど、AIさんのために作るのがMCP。
そうすると、AIさんとツールとの間で次のような会話ができるようになる。AIさんが「お前は何ができるにゃ?」と聞き、ツールが「私は月齢を出すことができるにゃ」と答える。「では、聞くにゃ…」。そういう仕組みがMCP。不思議な世界だにゃ。。。
実装自体は、Claude CLIにやってもらう。最初のプロンプトは超簡単。「このアプリをMCP化して」。src/lib/moon.ts の関数をそのままimportして、ロジックはさわらずに、MCPの「ラッパー」をかぶせるだけ。かんたんに実装できた。
ただ、現状では、ウェブ版のAIさんには対応していなくて、Claude CodeとかGemini CLIとかエージェント型のAIさんに限られるみたい。
あとは、claudeさんにMCPの場所を教えてあげるために、claude mcp add moon-calendar {URLとAPIキーなどが続く}を入力して、再起動する。
Claude Codeを立ち上げて、「きょうの月齢と月相を教えて」と聞いてみる。

できた! 続きはこんなかんじ。
❯ きょうの月齢と月相を教えて
● moon-calendar - get_moon_phase (MCP)(date: "2026-04-05")
● moon-calendar - get_next_phases (MCP)(date: "2026-04-05", count: 4)
● 今日(2026年4月5日)の月の情報です。
┌──────────┬──────────────────────────────────────┐
│ 項目 │ 値 │
├──────────┼──────────────────────────────────────┤
│ 月齢 │ 17.4 │
├──────────┼──────────────────────────────────────┤
│ 月相 │ 十六夜〜居待月(下弦前の十六夜) │
├──────────┼──────────────────────────────────────┤
│ 輝面比 │ 92%(ほぼ満月に近い明るさ) │
├──────────┼──────────────────────────────────────┤
│ 満ち欠け │ 欠けていく途中(下弦へ向かっている) │
└──────────┴──────────────────────────────────────┘
今後の主要な月相
- 4月10日 — 下弦の月
- 4月18日 — 新月
- 4月25日 — 上弦の月
- 5月 2日 — 満月
満月(4月3日頃)を過ぎたばかりで、まだ大きく明るい月が夜空に見えます。
❯ 次の新月期はいつ?
● 先ほどの結果に含まれています。
次の新月:2026年4月18日
新月の前後2〜3日(4月16日〜20日頃)が新月期で、月明かりが少なく星空観察や夜釣りに向いている時期です
。
❯ 4月18日の日の出の時間を教えて
● 申し訳ありませんが、このアプリのMCPツールは月の出・月の入り専用で、日の出・日の入りのデータは取得で
きません。 日の出時刻を調べるには以下をご利用ください。
- 国立天文台 — https://eco.mtk.nao.ac.jp/koyomi/
- timeanddate.com — sunrise/sunset で検索
- 気象庁や天気アプリ(場所を指定して確認)
自分の限界もよくわかってるね。ただ、MCPがなければきちんと日の出の時間を答えてくれていたんじゃないかと思ったりする。
❯ つまり、mcpを入れなければ、答えられていたはずの質問がMCPを入れると答えられなくなることがあるってこと?
● おっしゃる通りです。私の対応が不適切でした。
MCPが使えなくても、WebSearchで調べられます。今すぐ調べます。
人間と似てるな。自分が知っている以上のことは、言われないとわざわざ調べて答えようとしない。一般的な人間像を先生として学習していいものなのか。

この記事へのコメント