校異源氏物語テキストDBに対する検索を行うMCPサーバの構築

概要 校異源氏物語テキストDBに対する検索を行うMCPサーバの構築を行ったので、備忘録です。 一例として、Claude Desktopから以下のように使用することができます。 https://youtu.be/8s2R9V2hEvc?si=p9SW-IvhdNSzwTLN 背景 以下の記事で、校異源氏物語テキストDBに対する検索を行うAPIサーバの構築について紹介しました。 この応用として、MCPサーバを構築することで、AIエージェントとのやりとりを試してみます。 単純なものですが、GitHubのリポジトリは以下です。 https://github.com/nakamura196/genji-mcp-server 開発にあたっては、先述したAPIサーバで提供するOpenAPIの仕様をClaude Codeに渡すことで、テンプレートから効率機に開発してくれました。 なおswagger.jsonには、以下でアクセスいただけます。 https://genji-api.aws.ldas.jp/swagger.json 使い方 npmパッケージを以下で公開しています。 https://www.npmjs.com/package/@nakamura196/genji-mcp-server そこで、以下のような設定ファイルを作成して、Claude Desktopを再起動します。 { } " } m c " } p g S e " " e n c a r j o r v i m g e " m s r : a " s n : " { d : " [ : " { - " y n " p , x " " , @ n a k a m u r a 1 9 6 / g e n j i - m c p - s e r v e r " ] 利用例 「夕顔が含まれる巻は?」などと入力すると、以下のように外部連携を使用するための許可が求められます。許可すると、問い合わせ結果に基づき、AIが回答を作成してくれます。 ...

2025年6月26日 · 1 分 · Nakamura

校異源氏物語テキストDBに対する検索を行うAPIサーバの構築

概要 校異源氏物語テキストDBに対する検索を行うAPIサーバの構築したので、備忘録です。 https://genji-api.aws.ldas.jp/ 背景 以下のページで、『校異源氏物語』のテキストデータをTEI/XMLに準拠した形で公開しています。 https://kouigenjimonogatari.github.io/ このテキストデータをElasticsearchに登録し、コマごとの検索を可能にするAPIを作成します。 使い方 以下のURLで、OpenAPIおよびSwaggerを用いた使い方の説明ページにアクセスできます。 https://genji-api.aws.ldas.jp/ 工夫点 検索語の展開 例えば以下のURLは、「夕顔」を検索キーワードとした例です。JSON:APIに準拠した入出力形式としています。 https://genji-api.aws.ldas.jp/search?q=夕顔&page[limit]=20&page[offset]=0&sort=page&filter[expandRepeatMarks]=true&filter[unifyKanjiKana]=true&filter[unifyHistoricalKana]=true&filter[unifyPhoneticChanges]=true&filter[unifyDakuon]=true&filter[vol_str]=04 夕顔 この時、以下のような結果が返却されます。入力したキーワード「夕顔」に対して、バリエーションを生成し、これらに基づく検索を行います。 { } " " } d m a e " " ] " } " } " " " " " } t t q t , t , f , s l o t a a a u r " " " " " " " " " r " " " " " i " " " " " " o i f o g " } " " e a 夕 ゆ ゆ ゆ ゆ 夕 夕 ゆ ゆ a e u u u u l e u u u u v r m f t g v : : r n 顔 う ふ ふ う か か う ふ n x n n n n t x n n n n o t i s a r o " " " ] y s " か か か か お ほ 顔 顔 s p i i i i e p i i i i l " t e l e l d s b [ { " f , お お ほ ほ " " " " f a f f f f r a f f f f _ : " t " g _ o u u { } ] : o " " " " , , , o n y y y y s n y y y y s : " : a s c m c , r , , , , r d K H P D " d K H P D t " : t t _ _ k " " " m m R a i h a : R a i h a r p 2 7 i r c o e k d 夕 e O e n s o k e n s o k " a 0 0 , o " o t t e o 顔 d p p j t n u { p j t n u : g , , n : u h s y c " Q t e i o e o e i o e o e s n e " " _ , u i a K r t n a K r t n " " " { t r : : c e o t a i i " t a i i " 0 , : _ _ o r n M n c c : M n c c : 4 e d [ " u i s a a a C a a a C { r o 0 n e " r " l h t r " l h t 夕 r c 4 t s : k : K a r k : K a r 顔 o _ " " s a n u s a n u " r c 夕 : : { " t n g e " t n g e _ o 顔 : r a e : r a e , u u " 7 [ u " s u " s p n , t e : " t e : " p t r , : r , : e " u t u t r : e r t e r t _ , u r , u r b 0 e u e u o , , e , e u , , n d " : 0 , その結果、本文中に登場する「ゆふかほ」「夕かほ」「夕顔」を一度に検索することができます。 ...

2025年6月25日 · 23 分 · Nakamura

DrupalでOpenAPIを有効にする

概要 DrupalでOpenAPIを有効にする機会がありましたので、その備忘録です。なお、以下のjson:apiモジュールを有効化済みです。 モジュールのインストール 以下の2つのモジュールをインストールします。 https://www.drupal.org/project/openapi https://www.drupal.org/project/openapi_jsonapi 結果、以下のURLで、jsonを取得することができます。 /openapi/jsonapi 以下にアクセスすると、「No UI …」と表示されます。次に、UIを追加してみます。 /admin/config/services/openapi UIの追加 以下の2つのモジュールをインストールします。 https://www.drupal.org/project/openapi_ui https://www.drupal.org/project/openapi_ui_redoc 結果、「Explore」のボタンが表示されます。 ボタンをクリックすると、以下の画面に遷移します。 /admin/config/services/openapi/redoc/jsonapi Swagger UIライクな画面が表示されます。 なお、Redocは、以下のように説明されていました。 Redoc is an open-source tool for generating documentation from OpenAPI (fka Swagger) definitions. https://github.com/Redocly/redoc 参考 以下の「Swagger UI for OpenAPI UI」についてもインストールしてみましたが、私の環境ではエラーが出てしまいました。 https://www.drupal.org/project/openapi_ui_swagger まとめ DrupalでOpenAPIを利用される際の参考になりましたら幸いです。

2023年6月14日 · 1 分 · Nakamura

OpenAPIとAWS CDKを用いてREST APIを作成する(Opensearch接続・カスタムドメイン)

概要 OpenAPIとAWS CDKを用いてREST APIを作成する機会がありましたので、その備忘録です。以下の記事がとても参考になりました。 https://zenn.dev/taroman_zenn/articles/91879cec40627c 今回作成したものは以下のリポジトリで公開しています。 https://github.com/nakamura196/CdkOpenapi Opensearchとの接続 以下のLambdaで実装しています。 https://github.com/nakamura196/CdkOpenapi/blob/main/lambda/search.ts Lambdaに環境変数を渡す必要があり、lib以下のtsファイルで以下のように記述しました。 c o n s t } ) s e r h e } ; e n u a n , a t n n v E E E E r r t d i L L L L c y i l r A A A A h : m e o S S S S F e r n T T T T n p : : m I I I I a e C C C C = t R " n _ _ _ _ h u h t H U P I n . n a : O S A N e j t n S E S D w o i d { T R S E i m l : N W X N n e e A O _ o ( . r p M R N d _ N " r E D A e _ O , o : : M j d D c E s i E e p p : F r J s r r u n S s o o p n a _ . c c r c m 1 e e e o t e 8 n s s c i , _ v s s e o X . . . s n " , E e e s ( . L n n . t . A v v e h / S . . n i l T E E v s a I L L . , m C A A E b _ S S L " d H T T A s a O I I S e / S C C T a s T _ _ I r e U P C c a S A _ h r E S I " c R S N , h " N W D . " A O E { t , M R X s E D _ " N ) A , M E " " " " , , " " , カスタムドメイン 以下のファイルを参考にしてください。間違いなどがあるかもしれませんが、カスタムドメインの登録からAPI Gatewayへの設定も行ってみました。 ...

2023年5月26日 · 2 分 · Nakamura

Swagger UIのデモで初期表示するspecificationをgetパラメータで指定する

Swagger UIのデモが以下で公開されています。 https://petstore.swagger.io/ 上記のURLに対して、?url=(jsonやyamlファイルへのURL)を指定することで、初期表示するspecificationを指定することができました。 ここでは、以下の公開されている例を対象とします。 https://github.com/OAI/OpenAPI-Specification 例えば、以下のように指定することができます。 https://petstore.swagger.io/?url=https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/examples/v3.0/api-with-examples.yaml specificationを他者と共有する際の参考になりましたら幸いです。

2022年9月9日 · 1 分 · Nakamura