0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

法令APIをMCPサーバ化してClaude Codeから利用する

0
Posted at

はじめに

デジタル庁が運営するe-Gov法令検索は、日本の法令を検索・閲覧できるシステムで、法令データの検索や法令文の一括ダウンロードに対応しています。そのデータ取得用に法令API(Version 2)も提供されています。
本記事では、この法令APIをリモートMCPサーバに変換し、ローカルPCのClaude Codeから呼び出してみます。

法令API(Version 2)の実行例

法令API Version 2では、下記のAPIが公開されています。
各APIの必須・任意パラメータなどの仕様は、https://laws.e-gov.go.jp/api/2/swagger-ui#/ に記載があります。

メソッド API 説明
GET /laws 法令一覧取得
GET /law_revisions/{law_id_or_num} 法令履歴一覧取得
GET /law_data/{law_id_or_num_or_revision_id} 法令本文取得
GET /attachment/{law_revision_id} 添付ファイル取得
GET /keyword キーワード検索
GET /law_file/{file_type}/{law_id_or_num_or_revision_id} 法令本文ファイル取得

例えば、キーワード検索APIをCURLで実行すると、下記のようなレスポンスが返ってきます。

  • キーワード検索APIの実行例
$ curl -X 'GET' \
  'https://laws.e-gov.go.jp/api/2/keyword?keyword=人工知能' \
  -H 'accept: application/json'
Response body
{
  "total_count": 160,
  "sentence_count": 100,
  "next_offset": 100,
  "items": [
    {
      "law_info": {
        "law_type": "Act",
        "law_id": "332AC0000000026",
        "law_num": "昭和三十二年法律第二十六号",
        "law_num_era": "Showa",
        "law_num_year": 32,
        "law_num_type": "Act",
        "law_num_num": "026",
        "promulgation_date": "1957-03-31"
      },
      "revision_info": {
        "law_revision_id": "332AC0000000026_20260501_508AC0000000012",
        "law_type": "Act",
        "law_title": "租税特別措置法",
        "law_title_kana": "そぜいとくべつそちほう",
        "abbrev": "租特法",
        "category": "国税",
        "updated": "2026-05-01T00:41:35+09:00",
        "amendment_promulgate_date": "2026-03-31",
        "amendment_enforcement_date": "2026-05-01",
        "amendment_enforcement_comment": null,
        "amendment_scheduled_enforcement_date": null,
        "amendment_law_id": "508AC0000000012",
        "amendment_law_title": "所得税法等の一部を改正する法律",
        "amendment_law_title_kana": null,
        "amendment_law_num": "令和八年法律第十二号",
        "amendment_type": "3",
        "repeal_status": "None",
        "repeal_date": null,
        "remain_in_force": false,
        "mission": "New",
        "current_revision_status": "CurrentEnforced"
      },
      "sentences": [
        {
          "position": "mainprovision",
          "text": "」という。)であつて、前項の法人が令和六年四月一日以後に取得又は製作をしたものをいう。特許権官民データ活用推進基本法(平成二十八年法律第百三号)第二条第二項に規定する<span>人工知能</span>"
        }
      ]
    },
    {
      "law_info": {
        "law_type": "Act",
        "law_id": "345AC0000000090",
        "law_num": "昭和四十五年法律第九十号",
        "law_num_era": "Showa",
        "law_num_year": 45,
        "law_num_type": "Act",
        "law_num_num": "090",
        "promulgation_date": "1970-05-22"
      },
      "revision_info": {
        "law_revision_id": "345AC0000000090_20250804_507AC0000000030",
        "law_type": "Act",
        "law_title": "情報処理の促進に関する法律",
        "law_title_kana": "じょうほうしょりのそくしんにかんするほうりつ",
        "abbrev": "情報処理促進法",
        "category": "産業通則",
        "updated": "2026-03-02T17:45:51+09:00",
        "amendment_promulgate_date": "2025-05-14",
        "amendment_enforcement_date": "2025-08-04",
        "amendment_enforcement_comment": null,
        "amendment_scheduled_enforcement_date": null,
        "amendment_law_id": "507AC0000000030",
        "amendment_law_title": "情報処理の促進に関する法律及び特別会計に関する法律の一部を改正する法律",
        "amendment_law_title_kana": null,
        "amendment_law_num": "令和七年法律第三十号",
        "amendment_type": "3",
        "repeal_status": "None",
        "repeal_date": null,
        "remain_in_force": false,
        "mission": "New",
        "current_revision_status": "CurrentEnforced"
      },
      "sentences": [
        {
          "position": "toc",
          "text": "第六章 先端半導体・<span>人工知能</span>関連技術債(第六十九条―第七十三条)"
        },
        {
          "position": "mainprovisiontoc",
          "text": "第六章 先端半導体・<span>人工知能</span>関連技術債"
        },
        {
          "position": "caption",
          "text": "(先端半導体・<span>人工知能</span>関連技術債の発行)"
        },
        {
          "position": "mainprovision",
          "text": "境に応じた安定的かつ適切なエネルギーの需給構造の構築に資するものとして講ずる先端的な半導体の性能の向上及びその安定的な生産の確保並びに先端的な電子計算機の導入その他の<span>人工知能</span>"
        },
        {
          "position": "mainprovision",
          "text": "先端的な電子計算機の導入、<span>人工知能</span>関連技術を活用して官民データ活用推進基本法第二条第二項の機能を実現するために必要な基礎的なプログラムの開発又は先端的な電子計算機に係る技術の"
        },
        {
          "position": "mainprovision",
          "text": "第一項の規定による公債(以下この章において「先端半導体・<span>人工知能</span>関連技術債」という。)の発行は、各年度の翌年度の六月三十日までの間、行うことができる。この場合において、翌年度"
        },
        {
          "position": "caption",
          "text": "(先端半導体・<span>人工知能</span>関連技術債等の償還)"
        },
        {
          "position": "mainprovision",
          "text": "先端半導体・<span>人工知能</span>関連技術債等(先端半導体・<span>人工知能</span>関連技術債及び先端半導体・<span>人工知能</span>関連技術債に係る借換国債(特別会計"
        },
        {
          "position": "caption",
          "text": "(先端半導体・<span>人工知能</span>関連技術措置に係る歳入歳出の経理)"
        },
        {
          "position": "mainprovision",
          "text": "先端半導体・<span>人工知能</span>関連技術措置並びに先端半導体・<span>人工知能</span>関連技術債の発行及び償還に係る歳入歳出は、先端半導体・<span>人工知能</span>関"
        },
        {
          "position": "caption",
          "text": "(財政投融資特別会計の投資勘定からエネルギー対策特別会計の先端半導体・<span>人工知能</span>関連技術勘定への繰入れ)"
        },
        {
          "position": "mainprovision",
          "text": "次の各号に掲げる費用の財源に充てるため、当該各号に定める期間においては、予算で定めるところにより、財政投融資特別会計の投資勘定からエネルギー対策特別会計の先端半導体・<span>人工知能</span>"
        },
        {
          "position": "mainprovision",
          "text": "先端半導体・<span>人工知能</span>関連技術措置に要する費用令和七年度から令和十二年度までの間"
        },
        {
          "position": "mainprovision",
          "text": "先端半導体・<span>人工知能</span>関連技術債等の償還金(借換国債を発行した場合においては、当該借換国債の収入をもつて充てられる部分を除く。)、利子並びに先端半導体・<span>人工知能</"
        },
        {
          "position": "mainprovision",
          "text": "第六十九条第一項の規定により先端半導体・<span>人工知能</span>関連技術債を発行する場合におけるエネルギー対策特別会計についての特別会計に関する法律第十六条の規定の適用については、同条中「融"
        },
        {
          "position": "caption",
          "text": "(エネルギー対策特別会計の先端半導体・<span>人工知能</span>関連技術勘定の廃止等)"
        },
        {
          "position": "amendsupplprovision",
          "text": "エネルギー対策特別会計の先端半導体・<span>人工知能</span>関連技術勘定は、別に法律で定めるところにより、令和十五年三月三十一日までに廃止するものとする。"
        },
        {
          "position": "amendsupplprovision",
          "text": "政府は、前項の規定によりエネルギー対策特別会計の先端半導体・<span>人工知能</span>関連技術勘定が廃止されるときは、同項の法律で定めるところにより、第一条の規定による改正後の情報処理の促進に"
        }
      ]
    },
    {
      "law_info": {
        "law_type": "Act",
        "law_id": "411AC0000000089",
        "law_num": "平成十一年法律第八十九号",
        "law_num_era": "Heisei",
        "law_num_year": 11,
        "law_num_type": "Act",
        "law_num_num": "089",
        "promulgation_date": "1999-07-16"
      },
      "revision_info": {
        "law_revision_id": "411AC0000000089_20260401_507AC0000000043",
        "law_type": "Act",
        "law_title": "内閣府設置法",
        "law_title_kana": "ないかくふせっちほう",
        "abbrev": "中央省庁等改革関連法",
        "category": "行政組織",
        "updated": "2026-04-02T00:22:45+09:00",
        "amendment_promulgate_date": "2025-05-23",
        "amendment_enforcement_date": "2026-04-01",
        "amendment_enforcement_comment": null,
        "amendment_scheduled_enforcement_date": null,
        "amendment_law_id": "507AC0000000043",
        "amendment_law_title": "重要電子計算機に対する不正な行為による被害の防止に関する法律の施行に伴う関係法律の整備等に関する法律",
        "amendment_law_title_kana": null,
        "amendment_law_num": "令和七年法律第四十三号",
        "amendment_type": "3",
        "repeal_status": "None",
        "repeal_date": null,
        "remain_in_force": false,
        "mission": "New",
        "current_revision_status": "CurrentEnforced"
      },
      "sentences": [
        {
          "position": "mainprovision",
          "text": "<span>人工知能</span>関連技術(<span>人工知能</span>関連技術の研究開発及び活用の推進に関する法律(令和七年法律第五十三号)第二条に規定するものをいう。第三項第七号の九において"
        },
        {
          "position": "mainprovision",
          "text": "<span>人工知能</span>関連技術の研究開発及び活用に関する施策の推進に関すること。"
        }
      ]
    },
    {
      "law_info": {
        "law_type": "Act",
        "law_id": "419AC0000000023",
        "law_num": "平成十九年法律第二十三号",
        "law_num_era": "Heisei",
        "law_num_year": 19,
        "law_num_type": "Act",
        "law_num_num": "023",
        "promulgation_date": "2007-03-31"
      },
      "revision_info": {
        "law_revision_id": "419AC0000000023_20260401_507AC0000000052",
        "law_type": "Act",
        "law_title": "特別会計に関する法律",
        "law_title_kana": "とくべつかいけいにかんするほうりつ",
        "abbrev": "特別会計法,特会法",
        "category": "財務通則",
        "updated": "2026-01-06T10:01:15+09:00",
        "amendment_promulgate_date": "2025-06-04",
        "amendment_enforcement_date": "2026-04-01",
        "amendment_enforcement_comment": null,
        "amendment_scheduled_enforcement_date": null,
        "amendment_law_id": "507AC0000000052",
        "amendment_law_title": "脱炭素成長型経済構造への円滑な移行の推進に関する法律及び資源の有効な利用の促進に関する法律の一部を改正する法律",
        "amendment_law_title_kana": null,
        "amendment_law_num": "令和七年法律第五十二号",
        "amendment_type": "3",
        "repeal_status": "None",
        "repeal_date": null,
        "remain_in_force": false,
        "mission": "New",
        "current_revision_status": "PreviousEnforced"
      },
      "sentences": [
        {
          "position": "mainprovision",
          "text": "金及び利子この勘定に帰属する納付金投資財源資金からの受入金投資財源資金から生ずる収入一般会計からの繰入金第九十一条の七の規定によるエネルギー対策特別会計の先端半導体・<span>人工知能</span>"
        },
        {
          "position": "mainprovision",
          "text": "歳出出資の払込金貸付金投資財源資金への繰入金一般会計への繰入金第六十八条の二の規定によるエネルギー対策特別会計の先端半導体・<span>人工知能</span>関連技術勘定への繰入金借入金の償還金及び利"
        },
        {
          "position": "caption",
          "text": "(投資勘定からエネルギー対策特別会計の先端半導体・<span>人工知能</span>関連技術勘定への繰入れ)"
        },
        {
          "position": "mainprovision",
          "text": "要する費用並びに第八十八条第四項第二号ヘの償還金及び利子並びに同号トの諸費の財源に充てるため、予算で定める金額を限り、投資勘定からエネルギー対策特別会計の先端半導体・<span>人工知能</span>"
        },
        {
          "position": "mainprovision",
          "text": "エネルギー対策特別会計は、燃料安定供給対策、エネルギー需給構造高度化対策、電源立地対策、電源利用対策、原子力安全規制対策、原子力損害賠償支援対策及び先端半導体・<span>人工知能</span>関連技"
        },
        {
          "position": "mainprovision",
          "text": "この節において「先端半導体・<span>人工知能</span>関連技術対策」とは、次に掲げる財政上の措置をいう。"
        },
        {
          "position": "mainprovision",
          "text": "情報処理の促進に関する法律第六十九条第一項第四号に掲げる措置で政令で定めるもの(第八十八条第四項において「先端半導体・<span>人工知能</span>関連技術対策に係る附帯事務等に関する措置」という"
        },
        {
          "position": "mainprovision",
          "text": "ろにより、同会計全体の計算整理に関するものについては経済産業大臣が、その他のものについてはエネルギー需給勘定、電源開発促進勘定、原子力損害賠償支援勘定又は先端半導体・<span>人工知能</span>"
        },
        {
          "position": "mainprovision",
          "text": "エネルギー対策特別会計は、エネルギー需給勘定、電源開発促進勘定、原子力損害賠償支援勘定及び先端半導体・<span>人工知能</span>関連技術勘定に区分する。"
        },
        {
          "position": "mainprovision",
          "text": "号ハの出資金及び交付金第八十五条第三項第一号ニからトまでの補助金第九十一条の四第一項の規定による電源開発促進勘定への繰入金第九十一条の五第一項の規定による先端半導体・<span>人工知能</span>"
        },
        {
          "position": "mainprovision",
          "text": "先端半導体・<span>人工知能</span>関連技術勘定における歳入及び歳出は、次のとおりとする。"
        },
        {
          "position": "mainprovision",
          "text": "資勘定からの繰入金第九十一条の五第一項の規定によるエネルギー需給勘定からの繰入金情報処理の促進に関する法律第六十九条第一項の規定により発行する公債(以下「先端半導体・<span>人工知能</span>"
        },
        {
          "position": "mainprovision",
          "text": "金、委託費その他の給付金を含む。ハにおいて同じ。)第八十五条第八項第三号の補助金及び出資金第九十一条の七の規定による財政投融資特別会計の投資勘定への繰入金先端半導体・<span>人工知能</span>"
        },
        {
          "position": "caption",
          "text": "(一般会計から先端半導体・<span>人工知能</span>関連技術勘定への繰入れの特例)"
        },
        {
          "position": "mainprovision",
          "text": "かつ効率的な実施に必要であると認められるものの財源として設置する基金に充てるために経済産業大臣が交付した補助金について、国に返納された金額がある場合には、先端半導体・<span>人工知能</span>"
        },
        {
          "position": "caption",
          "text": "(エネルギー需給勘定から先端半導体・<span>人工知能</span>関連技術勘定への繰入れ)"
        },
        {
          "position": "mainprovision",
          "text": "先端半導体・<span>人工知能</span>関連技術対策に要する費用の財源に充てるため、予算で定める金額を限り、エネルギー需給勘定から先端半導体・<span>人工知能</span>関連技術勘定に繰り"
        },
        {
          "position": "mainprovision",
          "text": "繰入れが行われる年度における第九十条ただし書の規定の適用については、同条ただし書中「費用の額」とあるのは、「費用の額並びに第九十一条の五第一項の規定による先端半導体・<span>人工知能</span>"
        },
        {
          "position": "caption",
          "text": "(先端半導体・<span>人工知能</span>関連技術勘定から財政投融資特別会計の投資勘定への繰入れ)"
        },
        {
          "position": "mainprovision",
          "text": "第六十八条の二の規定により財政投融資特別会計の投資勘定から繰り入れられた繰入金については、後日、先端半導体・<span>人工知能</span>関連技術勘定からその繰入金に相当する金額に達するまでの金額"
        },
        {
          "position": "caption",
          "text": "(先端半導体・<span>人工知能</span>関連技術債の発行)"
        },
        {
          "position": "mainprovision",
          "text": "情報処理の促進に関する法律第六十九条第一項の規定によりエネルギー対策特別会計の負担において行われる先端半導体・<span>人工知能</span>関連技術債の発行は、先端半導体・<span>人工知能</"
        },
        {
          "position": "caption",
          "text": "(先端半導体・<span>人工知能</span>関連技術勘定から国債整理基金特別会計等への繰入れ)"
        },
        {
          "position": "mainprovision",
          "text": "先端半導体・<span>人工知能</span>関連技術債及び当該先端半導体・<span>人工知能</span>関連技術債に係る借換国債の償還金(借換国債を発行した場合においては、当該借換国債の収入をも"
        },
        {
          "position": "mainprovision",
          "text": "前項に規定する事務取扱費の額に相当する金額は、毎会計年度、先端半導体・<span>人工知能</span>関連技術勘定から一般会計に繰り入れなければならない。"
        },
        {
          "position": "mainprovision",
          "text": "第十五条第四項の規定にかかわらず、エネルギー需給勘定、電源開発促進勘定及び先端半導体・<span>人工知能</span>関連技術勘定において、歳入不足のために一時借入金を償還することができない場合には"
        },
        {
          "position": "supplprovision",
          "text": "令和十六年度以前の各年度の第九十一条の五第一項の規定によるエネルギー需給勘定から先端半導体・<span>人工知能</span>関連技術勘定への繰入金の決算額を合算した額から令和十六年度以前の各年度の同"
        },
        {
          "position": "supplprovision",
          "text": "令和十七年度以降の年度に先端半導体・<span>人工知能</span>関連技術勘定における第九十一条の五第一項の規定に基づくエネルギー需給勘定からの繰入金を財源とする財政上の措置に要する費用について国"
        },
        {
          "position": "supplprovision",
          "text": "第八十八条第一項の規定によるほか、前二項の規定による先端半導体・<span>人工知能</span>関連技術勘定からエネルギー需給勘定への繰入金は、同勘定の歳入とする。"
        },
        {
          "position": "supplprovision",
          "text": "第八十八条第四項の規定によるほか、第一項及び第二項の規定による先端半導体・<span>人工知能</span>関連技術勘定からエネルギー需給勘定への繰入金は、先端半導体・<span>人工知能</span"
        },
        {
          "position": "caption",
          "text": "(エネルギー対策特別会計の先端半導体・<span>人工知能</span>関連技術勘定の廃止等)"
        },
        {
          "position": "amendsupplprovision",
          "text": "エネルギー対策特別会計の先端半導体・<span>人工知能</span>関連技術勘定は、別に法律で定めるところにより、令和十五年三月三十一日までに廃止するものとする。"
        },
        {
          "position": "amendsupplprovision",
          "text": "政府は、前項の規定によりエネルギー対策特別会計の先端半導体・<span>人工知能</span>関連技術勘定が廃止されるときは、同項の法律で定めるところにより、第一条の規定による改正後の情報処理の促進に"
        },
        {
          "position": "amendsupplprovision",
          "text": "「令和六年度第一次補正予算」という。)に計上された費用のうち新特会法第八十五条第八項の財政上の措置に該当する措置に要する費用(次項及び次条第一項において「先端半導体・<span>人工知能</span>"
        },
        {
          "position": "amendsupplprovision",
          "text": "令和六年度第一次補正予算に計上された先端半導体・<span>人工知能</span>関連技術費用に関する経費であって、財政法第十四条の三第一項又は第四十二条ただし書の規定により繰越しをしたものについて、"
        },
        {
          "position": "amendsupplprovision",
          "text": "この法律の施行の際エネルギー対策特別会計のエネルギー需給勘定に所属する権利義務であって、令和六年度の特別会計補正予算(特第1号)に計上された費用のうち先端半導体・<span>人工知能</span>関連"
        },
        {
          "position": "amendsupplprovision",
          "text": "前項の規定によりエネルギー対策特別会計の先端半導体・<span>人工知能</span>関連技術勘定に帰属する権利義務に係る収入は、予算で定めるところにより、同勘定からエネルギー需給勘定に繰り入れるもの"
        },
        {
          "position": "amendsupplprovision",
          "text": "新特会法第八十八条第一項の規定によるほか、前項の規定によるエネルギー対策特別会計の先端半導体・<span>人工知能</span>関連技術勘定からエネルギー需給勘定への繰入金は、同勘定の歳入とする。"
        },
        {
          "position": "amendsupplprovision",
          "text": "新特会法第八十八条第四項の規定によるほか、第二項の規定によるエネルギー対策特別会計の先端半導体・<span>人工知能</span>関連技術勘定からエネルギー需給勘定への繰入金は、先端半導体・<span"
        }
      ]
    },
    {
      "law_info": {
        "law_type": "Act",
        "law_id": "419AC0000000059",
        "law_num": "平成十九年法律第五十九号",
        "law_num_era": "Heisei",
        "law_num_year": 19,
        "law_num_type": "Act",
        "law_num_num": "059",
        "promulgation_date": "2007-05-25"
      },
      "revision_info": {
        "law_revision_id": "419AC0000000059_20250601_504AC0000000068",
        "law_type": "Act",
        "law_title": "地域公共交通の活性化及び再生に関する法律",
        "law_title_kana": "ちいきこうきょうこうつうのかっせいかおよびさいせいにかんするほうりつ",
        "abbrev": "地域公共交通活性化・再生法,地域公共交通活性化法",
        "category": "陸運",
        "updated": "2025-06-01T23:25:17+09:00",
        "amendment_promulgate_date": "2022-06-17",
        "amendment_enforcement_date": "2025-06-01",
        "amendment_enforcement_comment": null,
        "amendment_scheduled_enforcement_date": null,
        "amendment_law_id": "504AC0000000068",
        "amendment_law_title": "刑法等の一部を改正する法律の施行に伴う関係法律の整理等に関する法律 抄",
        "amendment_law_title_kana": null,
        "amendment_law_num": "令和四年法律第六十八号",
        "amendment_type": "3",
        "repeal_status": "None",
        "repeal_date": null,
        "remain_in_force": false,
        "mission": "New",
        "current_revision_status": "CurrentEnforced"
      },
      "sentences": [
        {
          "position": "mainprovision",
          "text": "客自動車運送事業者が円滑な運送の実施を確保するために行う事業であって、運行経路指示システム(官民データ活用推進基本法(平成二十八年法律第百三号)第二条第二項に規定する<span>人工知能</span>"
        }
      ]
    },
    {
      "law_info": {
        "law_type": "Act",
        "law_id": "425AC0000000107",
        "law_num": "平成二十五年法律第百七号",
        "law_num_era": "Heisei",
        "law_num_year": 25,
        "law_num_type": "Act",
        "law_num_num": "107",
        "promulgation_date": "2013-12-13"
      },
      "revision_info": {
        "law_revision_id": "425AC0000000107_20260501_507AC0000000037",
        "law_type": "Act",
        "law_title": "国家戦略特別区域法",
        "law_title_kana": "こっかせんりゃくとくべつくいきほう",
        "abbrev": "国家戦略特区法",
        "category": "国土開発",
        "updated": "2026-05-01T02:23:56+09:00",
        "amendment_promulgate_date": "2025-05-21",
        "amendment_enforcement_date": "2026-05-01",
        "amendment_enforcement_comment": null,
        "amendment_scheduled_enforcement_date": null,
        "amendment_law_id": "507AC0000000037",
        "amendment_law_title": "医薬品、医療機器等の品質、有効性及び安全性の確保等に関する法律等の一部を改正する法律",
        "amendment_law_title_kana": null,
        "amendment_law_num": "令和七年法律第三十七号",
        "amendment_type": "3",
        "repeal_status": "None",
        "repeal_date": null,
        "remain_in_force": false,
        "mission": "New",
        "current_revision_status": "CurrentEnforced"
      },
      "sentences": [
        {
          "position": "mainprovision",
          "text": "この法律において「先端的区域データ活用事業活動」とは、官民データ活用推進基本法(平成二十八年法律第百三号)第二条第二項に規定する<span>人工知能</span>関連技術、同条第三項に規定するインター"
        }
      ]
    },
    {
      "law_info": {
        "law_type": "Act",
        "law_id": "428AC1000000103",
        "law_num": "平成二十八年法律第百三号",
        "law_num_era": "Heisei",
        "law_num_year": 28,
        "law_num_type": "Act",
        "law_num_num": "103",
        "promulgation_date": "2016-12-14"
      },
      "revision_info": {
        "law_revision_id": "428AC1000000103_20210901_503AC0000000035",
        "law_type": "Act",
        "law_title": "官民データ活用推進基本法",
        "law_title_kana": "かんみんでーたかつようすいしんきほんほう",
        "abbrev": "",
        "category": "電気通信",
        "updated": "2021-10-16T00:00:02+09:00",
        "amendment_promulgate_date": "2021-05-19",
        "amendment_enforcement_date": "2021-09-01",
        "amendment_enforcement_comment": null,
        "amendment_scheduled_enforcement_date": null,
        "amendment_law_id": "503AC0000000035",
        "amendment_law_title": "デジタル社会形成基本法",
        "amendment_law_title_kana": "",
        "amendment_law_num": "令和三年法律第三十五号",
        "amendment_type": "3",
        "repeal_status": "None",
        "repeal_date": null,
        "remain_in_force": false,
        "mission": "New",
        "current_revision_status": "CurrentEnforced"
      },
      "sentences": [
        {
          "position": "mainprovision",
          "text": "この法律において「<span>人工知能</span>関連技術」とは、人工的な方法による学習、推論、判断等の知的な機能の実現及び人工的な方法により実現した当該機能の活用に関する技術をいう。"
        },
        {
          "position": "mainprovision",
          "text": "官民データ活用の推進に当たっては、官民データの効果的かつ効率的な活用を図るため、<span>人工知能</span>関連技術、インターネット・オブ・シングス活用関連技術、クラウド・コンピューティング・サ"
        },
        {
          "position": "mainprovision",
          "text": "国は、我が国において官民データ活用に関する技術力を自立的に保持することの重要性に鑑み、<span>人工知能</span>関連技術、インターネット・オブ・シングス活用関連技術、クラウド・コンピューティン"
        }
      ]
    },
    {
      "law_info": {
        "law_type": "Act",
        "law_id": "503AC0000000035",
        "law_num": "令和三年法律第三十五号",
        "law_num_era": "Reiwa",
        "law_num_year": 3,
        "law_num_type": "Act",
        "law_num_num": "035",
        "promulgation_date": "2021-05-19"
      },
      "revision_info": {
        "law_revision_id": "503AC0000000035_20250401_506AC0000000046",
        "law_type": "Act",
        "law_title": "デジタル社会形成基本法",
        "law_title_kana": "でじたるしゃかいけいせいきほんほう",
        "abbrev": "",
        "category": "電気通信",
        "updated": "2025-04-02T11:59:42+09:00",
        "amendment_promulgate_date": "2024-06-07",
        "amendment_enforcement_date": "2025-04-01",
        "amendment_enforcement_comment": null,
        "amendment_scheduled_enforcement_date": null,
        "amendment_law_id": "506AC0000000046",
        "amendment_law_title": "情報通信技術の活用による行政手続等に係る関係者の利便性の向上並びに行政運営の簡素化及び効率化を図るためのデジタル社会形成基本法等の一部を改正する法律",
        "amendment_law_title_kana": null,
        "amendment_law_num": "令和六年法律第四十六号",
        "amendment_type": "3",
        "repeal_status": "None",
        "repeal_date": null,
        "remain_in_force": false,
        "mission": "New",
        "current_revision_status": "CurrentEnforced"
      },
      "sentences": [
        {
          "position": "mainprovision",
          "text": "を通じて自由かつ安全に多様な情報又は知識を世界的規模で入手し、共有し、又は発信するとともに、官民データ活用推進基本法(平成二十八年法律第百三号)第二条第二項に規定する<span>人工知能</span>"
        }
      ]
    },
    {
      "law_info": {
        "law_type": "Act",
        "law_id": "505AC0000000032",
        "law_num": "令和五年法律第三十二号",
        "law_num_era": "Reiwa",
        "law_num_year": 5,
        "law_num_type": "Act",
        "law_num_num": "032",
        "promulgation_date": "2023-05-19"
      },
      "revision_info": {
        "law_revision_id": "505AC0000000032_20260401_507AC0000000052",
        "law_type": "Act",
        "law_title": "脱炭素成長型経済構造への円滑な移行の推進に関する法律",
        "law_title_kana": "だつたんそせいちょうがたけいざいこうぞうへのえんかつないこうのすいしんにかんするほうりつ",
        "abbrev": "",
        "category": "工業",
        "updated": "2026-04-02T21:47:24+09:00",
        "amendment_promulgate_date": "2025-06-04",
        "amendment_enforcement_date": "2026-04-01",
        "amendment_enforcement_comment": null,
        "amendment_scheduled_enforcement_date": null,
        "amendment_law_id": "507AC0000000052",
        "amendment_law_title": "脱炭素成長型経済構造への円滑な移行の推進に関する法律及び資源の有効な利用の促進に関する法律の一部を改正する法律",
        "amendment_law_title_kana": null,
        "amendment_law_num": "令和七年法律第五十二号",
        "amendment_type": "3",
        "repeal_status": "None",
        "repeal_date": null,
        "remain_in_force": false,
        "mission": "New",
        "current_revision_status": "CurrentEnforced"
      },
      "sentences": [
        {
          "position": "mainprovision",
          "text": "に限る。)に係る歳入歳出は同特別会計の電源開発促進勘定において経理するものとし、脱炭素成長型経済構造への円滑な移行の推進に関する施策(同条第八項に規定する先端半導体・<span>人工知能</span>"
        }
      ]
    },
    {
      "law_info": {
        "law_type": "Act",
        "law_id": "507AC0000000053",
        "law_num": "令和七年法律第五十三号",
        "law_num_era": "Reiwa",
        "law_num_year": 7,
        "law_num_type": "Act",
        "law_num_num": "053",
        "promulgation_date": "2025-06-04"
      },
      "revision_info": {
        "law_revision_id": "507AC0000000053_20250901_000000000000000",
        "law_type": "Act",
        "law_title": "人工知能関連技術の研究開発及び活用の推進に関する法律",
        "law_title_kana": "じんこうちのうかんれんぎじゅつのけんきゅうかいはつおよびかつようのすいしんにかんするほうりつ",
        "abbrev": "AI法",
        "category": "産業通則",
        "updated": "2025-09-01T01:27:57+09:00",
        "amendment_promulgate_date": "2025-06-04",
        "amendment_enforcement_date": "2025-09-01",
        "amendment_enforcement_comment": null,
        "amendment_scheduled_enforcement_date": null,
        "amendment_law_id": null,
        "amendment_law_title": null,
        "amendment_law_title_kana": null,
        "amendment_law_num": null,
        "amendment_type": "1",
        "repeal_status": "None",
        "repeal_date": null,
        "remain_in_force": false,
        "mission": "New",
        "current_revision_status": "CurrentEnforced"
      },
      "sentences": [
        {
          "position": "toc",
          "text": "第四章 <span>人工知能</span>戦略本部(第十九条―第二十八条)"
        },
        {
          "position": "toc",
          "text": "第三章 <span>人工知能</span>基本計画(第十八条)"
        },
        {
          "position": "mainprovision",
          "text": "この法律は、<span>人工知能</span>関連技術が我が国の経済社会の発展の基盤となる技術であることに鑑み、<span>人工知能</span>関連技術の研究開発及び活用の推進に関する施策について、"
        },
        {
          "position": "mainprovision",
          "text": "この法律において、「<span>人工知能</span>関連技術」とは、人工的な方法により人間の認知、推論及び判断に係る知的な能力を代替する機能を実現するために必要な技術並びに入力された情報を当該技術を"
        },
        {
          "position": "mainprovision",
          "text": "<span>人工知能</span>関連技術の研究開発及び活用の推進は、科学技術・イノベーション基本法第三条に定める科学技術・イノベーション創出の振興に関する方針及びデジタル社会形成基本法第二章に定める"
        },
        {
          "position": "mainprovision",
          "text": "<span>人工知能</span>関連技術の研究開発及び活用の推進は、<span>人工知能</span>関連技術が、その適正かつ効果的な活用によって行政事務及び民間の事業活動の著しい効率化及び高度化並"
        },
        {
          "position": "mainprovision",
          "text": "<span>人工知能</span>関連技術の研究開発及び活用の推進は、<span>人工知能</span>関連技術の基礎研究から国民生活及び経済活動における活用に至るまでの各段階の関係者による取組が相互"
        },
        {
          "position": "mainprovision",
          "text": "<span>人工知能</span>関連技術の研究開発及び活用は、不正な目的又は不適切な方法で行われた場合には、犯罪への利用、個人情報の漏えい、著作権の侵害その他の国民生活の平穏及び国民の権利利益が害さ"
        },
        {
          "position": "mainprovision",
          "text": "<span>人工知能</span>関連技術の研究開発及び活用は、我が国及び国際社会の平和と発展に寄与するものとなるよう、国際的協調の下に推進することを旨とし、我が国が<span>人工知能</span>"
        },
        {
          "position": "mainprovision",
          "text": "国は、前条に定める基本理念(以下「基本理念」という。)にのっとり、<span>人工知能</span>関連技術の研究開発及び活用の推進に関する施策を総合的かつ計画的に策定し、及び実施する責務を有する。"
        },
        {
          "position": "mainprovision",
          "text": "国は、行政事務の効率化及び高度化を図るため、国の行政機関における<span>人工知能</span>関連技術の積極的な活用を進めるものとする。"
        },
        {
          "position": "mainprovision",
          "text": "地方公共団体は、基本理念にのっとり、<span>人工知能</span>関連技術の研究開発及び活用の推進に関し、国との適切な役割分担の下、地方公共団体が実施すべき施策として、その地方公共団体の区域の特性"
        },
        {
          "position": "mainprovision",
          "text": "大学、科学技術・イノベーション創出の活性化に関する法律(平成二十年法律第六十三号)第二条第九項に規定する研究開発法人その他の<span>人工知能</span>関連技術の研究開発を行う機関(以下「研究開"
        },
        {
          "position": "mainprovision",
          "text": "国及び地方公共団体は、<span>人工知能</span>関連技術の研究開発及び活用の推進に関する施策で大学に係るものを策定し、及び実施するに当たっては、大学における研究活動の活性化を図るよう努めるとと"
        },
        {
          "position": "mainprovision",
          "text": "研究開発機関は、<span>人工知能</span>関連技術の研究開発を効果的に進めるに当たっては、人文科学及び自然科学に関する多様な分野の知見を総合的に活用することが必要であることに鑑み、学際的又は総"
        },
        {
          "position": "mainprovision",
          "text": "<span>人工知能</span>関連技術を活用した製品又はサービスの開発又は提供をしようとする者その他の<span>人工知能</span>関連技術を事業活動において活用しようとする者(以下「活用事業"
        },
        {
          "position": "mainprovision",
          "text": "国民は、基本理念にのっとり、<span>人工知能</span>関連技術に対する理解と関心を深めるとともに、第四条の規定に基づき国が実施する施策及び第五条の規定に基づき地方公共団体が実施する施策に協力す"
        },
        {
          "position": "mainprovision",
          "text": "国は、国、地方公共団体、研究開発機関及び活用事業者が相互に連携を図りながら協力することにより<span>人工知能</span>関連技術の研究開発及び活用の推進が図られることに鑑み、これらの者の間の連携"
        },
        {
          "position": "mainprovision",
          "text": "国は、<span>人工知能</span>関連技術の研究開発及び活用の推進に関する施策を実施するため必要な法制上又は財政上の措置その他の措置を講ずるものとする。"
        },
        {
          "position": "mainprovision",
          "text": "国は、<span>人工知能</span>関連技術の基礎研究から実用化のための研究開発に至るまでの一貫した研究開発の推進、研究開発機関における研究開発の成果の移転のための体制の整備、研究開発の成果に係る"
        },
        {
          "position": "mainprovision",
          "text": "国は、<span>人工知能</span>関連技術の研究開発及び活用に当たって必要となる大規模な情報処理、情報通信、電磁的記録(電子的方式、磁気的方式その他人の知覚によっては認識することができない方式で"
        },
        {
          "position": "mainprovision",
          "text": "国は、<span>人工知能</span>関連技術の研究開発及び活用の適正な実施を図るため、国際的な規範の趣旨に即した指針の整備その他の必要な施策を講ずるものとする。"
        },
        {
          "position": "mainprovision",
          "text": "国は、地方公共団体、研究開発機関及び活用事業者と緊密な連携協力を図りながら、<span>人工知能</span>関連技術の基礎研究から国民生活及び経済活動における活用に至るまでの各段階において必要となる"
        },
        {
          "position": "mainprovision",
          "text": "国は、国民が広く<span>人工知能</span>関連技術に対する理解と関心を深めるよう、<span>人工知能</span>関連技術に関する教育及び学習の振興、広報活動の充実その他の必要な施策を講ずる"
        },
        {
          "position": "mainprovision",
          "text": "国は、国内外の<span>人工知能</span>関連技術の研究開発及び活用の動向に関する情報の収集、不正な目的又は不適切な方法による<span>人工知能</span>関連技術の研究開発又は活用に伴って"
        },
        {
          "position": "mainprovision",
          "text": "国は、<span>人工知能</span>関連技術の研究開発及び活用に関する国際協力を推進するとともに、国際的な規範の策定に積極的に参画するものとする。"
        },
        {
          "position": "mainprovisiontoc",
          "text": "第三章 <span>人工知能</span>基本計画"
        },
        {
          "position": "mainprovision",
          "text": "政府は、基本理念にのっとり、前章に定める基本的施策を踏まえ、<span>人工知能</span>関連技術の研究開発及び活用の推進に関する基本的な計画(以下「<span>人工知能</span>基本計画」と"
        },
        {
          "position": "mainprovision",
          "text": "<span>人工知能</span>基本計画は、次に掲げる事項について定めるものとする。"
        },
        {
          "position": "mainprovision",
          "text": "<span>人工知能</span>関連技術の研究開発及び活用の推進に関する施策についての基本的な方針"
        },
        {
          "position": "mainprovision",
          "text": "<span>人工知能</span>関連技術の研究開発及び活用の推進に関し、政府が総合的かつ計画的に講ずべき施策"
        },
        {
          "position": "mainprovision",
          "text": "前二号に掲げるもののほか、<span>人工知能</span>関連技術の研究開発及び活用の推進に関する施策を政府が総合的かつ計画的に推進するために必要な事項"
        }
      ]
    }
  ]
}

法令APIをMCPサーバ化

実行環境

本記事では、AWS上にMCPサーバの実行環境を構築しました

  • プライベートサブネットに配置したEC2でMCPサーバを実行します
  • ローカルPCからSSM接続でトンネルを確立して、Claude CodeでMCPサーバに接続します

image.png

MCPサーバの実装

実装したファイルは下記の構成です。

LawsMCP
|--.mcp.json
|--docker-compose.yml
|--Dockerfile
|--requirements.txt
|--server.py

MCPサーバは、PythonのFastMCPライブラリを用いて実装します。
それぞれのAPIごとに@mcp.tool()デコレータを付与してツールとして認識させます。
今回は、添付ファイル取得API(/attachment/{law_revision_id})以外のAPIをもとにツールを実装しました。

  • /laws(法令一覧取得API)
@mcp.tool()
async def search_laws(
    law_id: Optional[str] = None,
    law_num: Optional[str] = None,
    law_num_era: Optional[str] = None,
    law_num_year: Optional[int] = None,
    law_num_num: Optional[str] = None,
    law_num_type: Optional[str] = None,
    law_title: Optional[str] = None,
    law_title_kana: Optional[str] = None,
    law_type: Optional[str] = None,
    amendment_law_id: Optional[str] = None,
    asof: Optional[str] = None,
    category_cd: Optional[str] = None,
    mission: Optional[str] = None,
    omit_current_revision_info: Optional[bool] = None,
    promulgation_date_from: Optional[str] = None,
    promulgation_date_to: Optional[str] = None,
    repeal_status: Optional[str] = None,
    limit: Optional[int] = None,
    offset: Optional[int] = None,
    order: Optional[str] = None,
) -> dict:
    """
    法令一覧を検索します。指定条件に該当する法令データを返します。
    全パラメータは省略可能で、必要なものを組み合わせて使用します。

    Args:
        law_id: 法令ID(部分一致)例: 322CO0000000016
        law_num: 法令番号(部分一致)例: 昭和二十二年政令第十六号
        law_num_era: 法令番号の元号 Meiji/Taisho/Showa/Heisei/Reiwa
        law_num_year: 法令番号の年 例: 22
        law_num_num: 法令番号の号数 例: 016
        law_num_type: 法令番号の法令種別 Constitution/Act/CabinetOrder/ImperialOrder/MinisterialOrdinance/Rule/Misc
        law_title: 法令名または法令略称(部分一致)例: 国家行政組織法
        law_title_kana: 法令名読み(部分一致)例: こっかぎょうせいそしきほう
        law_type: 法令種別(カンマ区切りで複数指定可)例: Act,Rule
        amendment_law_id: 改正法令の法令ID(部分一致)
        asof: 法令の時点(YYYY-MM-DD形式)例: 2023-07-01
        category_cd: 事項別分類コード(カンマ区切りで複数指定可)例: 001,002
        mission: New/Partial(カンマ区切りで複数指定可)
        omit_current_revision_info: trueの場合、current_revision_infoをレスポンスに含めない
        promulgation_date_from: 公布日(以後)YYYY-MM-DD
        promulgation_date_to: 公布日(以前)YYYY-MM-DD
        repeal_status: 廃止等の状態(カンマ区切りで複数指定可)None/Repeal/Expire/Suspend/LossOfEffectiveness
        limit: 取得件数の上限(既定値: 100)
        offset: 取得開始位置(既定値: 0)
        order: 並び順 例: +law_info.law_id,-revision_info.amendment_promulgate_date
    """
    params = _build_params(
        law_id=law_id,
        law_num=law_num,
        law_num_era=law_num_era,
        law_num_year=law_num_year,
        law_num_num=law_num_num,
        law_num_type=law_num_type,
        law_title=law_title,
        law_title_kana=law_title_kana,
        law_type=law_type,
        amendment_law_id=amendment_law_id,
        asof=asof,
        category_cd=category_cd,
        mission=mission,
        omit_current_revision_info=omit_current_revision_info,
        promulgation_date_from=promulgation_date_from,
        promulgation_date_to=promulgation_date_to,
        repeal_status=repeal_status,
        limit=limit,
        offset=offset,
        order=order,
        response_format="json",
    )
    async with httpx.AsyncClient() as client:
        response = await client.get(f"{BASE_URL}/laws", params=params)
        response.raise_for_status()
        return response.json()
  • /law_revisions/{law_id_or_num}(法令履歴一覧取得API)
@mcp.tool()
async def get_law_revisions(
    law_id_or_num: str,
    law_title: Optional[str] = None,
    law_title_kana: Optional[str] = None,
    amendment_date_from: Optional[str] = None,
    amendment_date_to: Optional[str] = None,
    amendment_law_id: Optional[str] = None,
    amendment_law_num: Optional[str] = None,
    amendment_law_title: Optional[str] = None,
    amendment_law_title_kana: Optional[str] = None,
    amendment_promulgate_date_from: Optional[str] = None,
    amendment_promulgate_date_to: Optional[str] = None,
    amendment_type: Optional[str] = None,
    category_cd: Optional[str] = None,
    current_revision_status: Optional[str] = None,
    mission: Optional[str] = None,
    remain_in_force: Optional[bool] = None,
    repeal_date_from: Optional[str] = None,
    repeal_date_to: Optional[str] = None,
    repeal_status: Optional[str] = None,
    updated_from: Optional[str] = None,
    updated_to: Optional[str] = None,
) -> dict:
    """
    指定した法令の改正履歴一覧を取得します。

    Args:
        law_id_or_num: 法令IDまたは法令番号(完全一致・必須)例: 503AC0000000036、令和三年法律第三十六号
        law_title: 法令名または法令略称(部分一致または /regex/ 形式の正規表現)
        law_title_kana: 法令名読み(部分一致)
        amendment_date_from: 改正法令施行期日(以後)YYYY-MM-DD
        amendment_date_to: 改正法令施行期日(以前)YYYY-MM-DD
        amendment_law_id: 改正法令の法令ID(部分一致)
        amendment_law_num: 改正法令の法令番号(部分一致)
        amendment_law_title: 改正法令の法令名(部分一致または /regex/ 形式の正規表現)
        amendment_law_title_kana: 改正法令の法令名読み(部分一致)
        amendment_promulgate_date_from: 改正法令公布日(以後)YYYY-MM-DD
        amendment_promulgate_date_to: 改正法令公布日(以前)YYYY-MM-DD
        amendment_type: 改正種別(カンマ区切りで複数指定可)1/3/8
        category_cd: 事項別分類コード(カンマ区切りで複数指定可)
        current_revision_status: 履歴の状態(カンマ区切りで複数指定可)CurrentEnforced/UnEnforced/PreviousEnforced/Repeal
        mission: New/Partial(カンマ区切りで複数指定可)
        remain_in_force: 廃止後の効力
        repeal_date_from: 廃止日(以後)YYYY-MM-DD
        repeal_date_to: 廃止日(以前)YYYY-MM-DD
        repeal_status: 廃止等の状態(カンマ区切りで複数指定可)None/Repeal/Expire/Suspend/LossOfEffectiveness
        updated_from: データの更新日(以後)YYYY-MM-DD
        updated_to: データの更新日(以前)YYYY-MM-DD
    """
    params = _build_params(
        law_title=law_title,
        law_title_kana=law_title_kana,
        amendment_date_from=amendment_date_from,
        amendment_date_to=amendment_date_to,
        amendment_law_id=amendment_law_id,
        amendment_law_num=amendment_law_num,
        amendment_law_title=amendment_law_title,
        amendment_law_title_kana=amendment_law_title_kana,
        amendment_promulgate_date_from=amendment_promulgate_date_from,
        amendment_promulgate_date_to=amendment_promulgate_date_to,
        amendment_type=amendment_type,
        category_cd=category_cd,
        current_revision_status=current_revision_status,
        mission=mission,
        remain_in_force=remain_in_force,
        repeal_date_from=repeal_date_from,
        repeal_date_to=repeal_date_to,
        repeal_status=repeal_status,
        updated_from=updated_from,
        updated_to=updated_to,
        response_format="json",
    )
    async with httpx.AsyncClient() as client:
        response = await client.get(
            f"{BASE_URL}/law_revisions/{law_id_or_num}", params=params
        )
        response.raise_for_status()
        return response.json()
  • /law_data/{law_id_or_num_or_revision_id}(法令本文取得)
@mcp.tool()
async def get_law_data(
    law_id_or_num_or_revision_id: str,
    asof: Optional[str] = None,
    elm: Optional[str] = None,
    json_format: Optional[str] = None,
    omit_amendment_suppl_provision: Optional[bool] = None,
    include_attached_file_content: Optional[bool] = None,
) -> dict:
    """
    法令本文を取得します。法令ID、法令番号、または法令履歴IDを指定します。

    Args:
        law_id_or_num_or_revision_id: 法令ID・法令番号・法令履歴ID(完全一致・必須)
            例: 411AC0000000127、平成十一年法律第百二十七号、411AC0000000127_19990813_000000000000000
        asof: 法令の時点(YYYY-MM-DD)。法令履歴IDを指定した場合は無視される
        elm: 法令本文の一部のみ取得する場合の要素指定 例: MainProvision-Paragraph[1]
        json_format: JSONの形式 full(詳細版・既定)またはlight(簡易版)
        omit_amendment_suppl_provision: trueの場合、改正法令の附則を含めない
        include_attached_file_content: trueの場合、添付ファイルのimage_dataを返却
    """
    params = _build_params(
        asof=asof,
        elm=elm,
        json_format=json_format,
        omit_amendment_suppl_provision=omit_amendment_suppl_provision,
        include_attached_file_content=include_attached_file_content,
        response_format="json",
    )
    async with httpx.AsyncClient(timeout=60.0) as client:
        response = await client.get(
            f"{BASE_URL}/law_data/{law_id_or_num_or_revision_id}", params=params
        )
        response.raise_for_status()
        return response.json()
  • /keyword(キーワード検索API)
@mcp.tool()
async def search_keyword(
    keyword: str,
    law_num: Optional[str] = None,
    law_num_era: Optional[str] = None,
    law_num_year: Optional[int] = None,
    law_num_num: Optional[str] = None,
    law_num_type: Optional[str] = None,
    law_type: Optional[str] = None,
    asof: Optional[str] = None,
    category_cd: Optional[str] = None,
    promulgation_date_from: Optional[str] = None,
    promulgation_date_to: Optional[str] = None,
    limit: Optional[int] = None,
    offset: Optional[int] = None,
    order: Optional[str] = None,
    sentences_limit: Optional[int] = None,
    sentence_text_size: Optional[int] = None,
    highlight_tag: Optional[str] = None,
) -> dict:
    """
    法令本文をキーワードで全文検索します。

    キーワードにはワイルドカード(* は0文字以上、? は1文字)、AND/OR/NOT検索が使用できます。
    ワイルドカードとAND/OR/NOT検索は組み合わせ不可です。

    Args:
        keyword: 検索キーワード(必須)例: デジタル庁、第*条
        law_num: 法令番号(部分一致)
        law_num_era: 法令番号の元号 Meiji/Taisho/Showa/Heisei/Reiwa
        law_num_year: 法令番号の年
        law_num_num: 法令番号の号数
        law_num_type: 法令番号の法令種別 Constitution/Act/CabinetOrder/ImperialOrder/MinisterialOrdinance/Rule/Misc
        law_type: 法令種別(カンマ区切りで複数指定可)例: Act,Rule
        asof: 法令の時点(YYYY-MM-DD)
        category_cd: 事項別分類コード(カンマ区切りで複数指定可)
        promulgation_date_from: 公布日(以後)YYYY-MM-DD
        promulgation_date_to: 公布日(以前)YYYY-MM-DD
        limit: sentencesのposition数の総和の上限(既定値: 100、上限: 1000)
        offset: 取得開始位置(既定値: 0)
        order: 並び順 例: +law_info.law_id
        sentences_limit: sentences に表示される件数の上限
        sentence_text_size: レスポンスのtextの表示文字数(既定値: 100)
        highlight_tag: キーワードヒット箇所を囲むHTMLタグ名(既定値: span)例: em
    """
    params = _build_params(
        keyword=keyword,
        law_num=law_num,
        law_num_era=law_num_era,
        law_num_year=law_num_year,
        law_num_num=law_num_num,
        law_num_type=law_num_type,
        law_type=law_type,
        asof=asof,
        category_cd=category_cd,
        promulgation_date_from=promulgation_date_from,
        promulgation_date_to=promulgation_date_to,
        limit=limit,
        offset=offset,
        order=order,
        sentences_limit=sentences_limit,
        sentence_text_size=sentence_text_size,
        highlight_tag=highlight_tag,
        response_format="json",
    )
    async with httpx.AsyncClient() as client:
        response = await client.get(f"{BASE_URL}/keyword", params=params)
        response.raise_for_status()
        return response.json()
  • /law_file/{file_type}/{law_id_or_num_or_revision_id}(法令本文ファイル取得API)
@mcp.tool()
async def get_law_file_url(
    law_id_or_num_or_revision_id: str,
    file_type: str,
    asof: Optional[str] = None,
) -> str:
    """
    法令本文ファイルのダウンロードURLを返します。ブラウザやcurlでアクセスしてください。

    Args:
        law_id_or_num_or_revision_id: 法令ID・法令番号・法令履歴ID(完全一致・必須)
            例: 405AC0000000088、昭和二十二年政令第十六号
        file_type: ファイル種別(必須)xml/json/html/rtf/docx
        asof: 法令の時点(YYYY-MM-DD)。法令履歴IDを指定した場合は無視される
    """
    url = f"{BASE_URL}/law_data/{law_id_or_num_or_revision_id}/{file_type}"
    if asof:
        url += f"?asof={asof}"
    return url
`server.py` コード全文
server.py
from mcp.server.fastmcp import FastMCP
import httpx
from typing import Optional

BASE_URL = "https://laws.e-gov.go.jp/api/2"

mcp = FastMCP("laws-server", host="0.0.0.0", port=8000)


def _build_params(**kwargs) -> dict:
    return {k: v for k, v in kwargs.items() if v is not None}


@mcp.tool()
async def search_laws(
    law_id: Optional[str] = None,
    law_num: Optional[str] = None,
    law_num_era: Optional[str] = None,
    law_num_year: Optional[int] = None,
    law_num_num: Optional[str] = None,
    law_num_type: Optional[str] = None,
    law_title: Optional[str] = None,
    law_title_kana: Optional[str] = None,
    law_type: Optional[str] = None,
    amendment_law_id: Optional[str] = None,
    asof: Optional[str] = None,
    category_cd: Optional[str] = None,
    mission: Optional[str] = None,
    omit_current_revision_info: Optional[bool] = None,
    promulgation_date_from: Optional[str] = None,
    promulgation_date_to: Optional[str] = None,
    repeal_status: Optional[str] = None,
    limit: Optional[int] = None,
    offset: Optional[int] = None,
    order: Optional[str] = None,
) -> dict:
    """
    法令一覧を検索します。指定条件に該当する法令データを返します。
    全パラメータは省略可能で、必要なものを組み合わせて使用します。

    Args:
        law_id: 法令ID(部分一致)例: 322CO0000000016
        law_num: 法令番号(部分一致)例: 昭和二十二年政令第十六号
        law_num_era: 法令番号の元号 Meiji/Taisho/Showa/Heisei/Reiwa
        law_num_year: 法令番号の年 例: 22
        law_num_num: 法令番号の号数 例: 016
        law_num_type: 法令番号の法令種別 Constitution/Act/CabinetOrder/ImperialOrder/MinisterialOrdinance/Rule/Misc
        law_title: 法令名または法令略称(部分一致)例: 国家行政組織法
        law_title_kana: 法令名読み(部分一致)例: こっかぎょうせいそしきほう
        law_type: 法令種別(カンマ区切りで複数指定可)例: Act,Rule
        amendment_law_id: 改正法令の法令ID(部分一致)
        asof: 法令の時点(YYYY-MM-DD形式)例: 2023-07-01
        category_cd: 事項別分類コード(カンマ区切りで複数指定可)例: 001,002
        mission: New/Partial(カンマ区切りで複数指定可)
        omit_current_revision_info: trueの場合、current_revision_infoをレスポンスに含めない
        promulgation_date_from: 公布日(以後)YYYY-MM-DD
        promulgation_date_to: 公布日(以前)YYYY-MM-DD
        repeal_status: 廃止等の状態(カンマ区切りで複数指定可)None/Repeal/Expire/Suspend/LossOfEffectiveness
        limit: 取得件数の上限(既定値: 100)
        offset: 取得開始位置(既定値: 0)
        order: 並び順 例: +law_info.law_id,-revision_info.amendment_promulgate_date
    """
    params = _build_params(
        law_id=law_id,
        law_num=law_num,
        law_num_era=law_num_era,
        law_num_year=law_num_year,
        law_num_num=law_num_num,
        law_num_type=law_num_type,
        law_title=law_title,
        law_title_kana=law_title_kana,
        law_type=law_type,
        amendment_law_id=amendment_law_id,
        asof=asof,
        category_cd=category_cd,
        mission=mission,
        omit_current_revision_info=omit_current_revision_info,
        promulgation_date_from=promulgation_date_from,
        promulgation_date_to=promulgation_date_to,
        repeal_status=repeal_status,
        limit=limit,
        offset=offset,
        order=order,
        response_format="json",
    )
    async with httpx.AsyncClient() as client:
        response = await client.get(f"{BASE_URL}/laws", params=params)
        response.raise_for_status()
        return response.json()


@mcp.tool()
async def get_law_revisions(
    law_id_or_num: str,
    law_title: Optional[str] = None,
    law_title_kana: Optional[str] = None,
    amendment_date_from: Optional[str] = None,
    amendment_date_to: Optional[str] = None,
    amendment_law_id: Optional[str] = None,
    amendment_law_num: Optional[str] = None,
    amendment_law_title: Optional[str] = None,
    amendment_law_title_kana: Optional[str] = None,
    amendment_promulgate_date_from: Optional[str] = None,
    amendment_promulgate_date_to: Optional[str] = None,
    amendment_type: Optional[str] = None,
    category_cd: Optional[str] = None,
    current_revision_status: Optional[str] = None,
    mission: Optional[str] = None,
    remain_in_force: Optional[bool] = None,
    repeal_date_from: Optional[str] = None,
    repeal_date_to: Optional[str] = None,
    repeal_status: Optional[str] = None,
    updated_from: Optional[str] = None,
    updated_to: Optional[str] = None,
) -> dict:
    """
    指定した法令の改正履歴一覧を取得します。

    Args:
        law_id_or_num: 法令IDまたは法令番号(完全一致・必須)例: 503AC0000000036、令和三年法律第三十六号
        law_title: 法令名または法令略称(部分一致または /regex/ 形式の正規表現)
        law_title_kana: 法令名読み(部分一致)
        amendment_date_from: 改正法令施行期日(以後)YYYY-MM-DD
        amendment_date_to: 改正法令施行期日(以前)YYYY-MM-DD
        amendment_law_id: 改正法令の法令ID(部分一致)
        amendment_law_num: 改正法令の法令番号(部分一致)
        amendment_law_title: 改正法令の法令名(部分一致または /regex/ 形式の正規表現)
        amendment_law_title_kana: 改正法令の法令名読み(部分一致)
        amendment_promulgate_date_from: 改正法令公布日(以後)YYYY-MM-DD
        amendment_promulgate_date_to: 改正法令公布日(以前)YYYY-MM-DD
        amendment_type: 改正種別(カンマ区切りで複数指定可)1/3/8
        category_cd: 事項別分類コード(カンマ区切りで複数指定可)
        current_revision_status: 履歴の状態(カンマ区切りで複数指定可)CurrentEnforced/UnEnforced/PreviousEnforced/Repeal
        mission: New/Partial(カンマ区切りで複数指定可)
        remain_in_force: 廃止後の効力
        repeal_date_from: 廃止日(以後)YYYY-MM-DD
        repeal_date_to: 廃止日(以前)YYYY-MM-DD
        repeal_status: 廃止等の状態(カンマ区切りで複数指定可)None/Repeal/Expire/Suspend/LossOfEffectiveness
        updated_from: データの更新日(以後)YYYY-MM-DD
        updated_to: データの更新日(以前)YYYY-MM-DD
    """
    params = _build_params(
        law_title=law_title,
        law_title_kana=law_title_kana,
        amendment_date_from=amendment_date_from,
        amendment_date_to=amendment_date_to,
        amendment_law_id=amendment_law_id,
        amendment_law_num=amendment_law_num,
        amendment_law_title=amendment_law_title,
        amendment_law_title_kana=amendment_law_title_kana,
        amendment_promulgate_date_from=amendment_promulgate_date_from,
        amendment_promulgate_date_to=amendment_promulgate_date_to,
        amendment_type=amendment_type,
        category_cd=category_cd,
        current_revision_status=current_revision_status,
        mission=mission,
        remain_in_force=remain_in_force,
        repeal_date_from=repeal_date_from,
        repeal_date_to=repeal_date_to,
        repeal_status=repeal_status,
        updated_from=updated_from,
        updated_to=updated_to,
        response_format="json",
    )
    async with httpx.AsyncClient() as client:
        response = await client.get(
            f"{BASE_URL}/law_revisions/{law_id_or_num}", params=params
        )
        response.raise_for_status()
        return response.json()


@mcp.tool()
async def get_law_data(
    law_id_or_num_or_revision_id: str,
    asof: Optional[str] = None,
    elm: Optional[str] = None,
    json_format: Optional[str] = None,
    omit_amendment_suppl_provision: Optional[bool] = None,
    include_attached_file_content: Optional[bool] = None,
) -> dict:
    """
    法令本文を取得します。法令ID、法令番号、または法令履歴IDを指定します。

    Args:
        law_id_or_num_or_revision_id: 法令ID・法令番号・法令履歴ID(完全一致・必須)
            例: 411AC0000000127、平成十一年法律第百二十七号、411AC0000000127_19990813_000000000000000
        asof: 法令の時点(YYYY-MM-DD)。法令履歴IDを指定した場合は無視される
        elm: 法令本文の一部のみ取得する場合の要素指定 例: MainProvision-Paragraph[1]
        json_format: JSONの形式 full(詳細版・既定)またはlight(簡易版)
        omit_amendment_suppl_provision: trueの場合、改正法令の附則を含めない
        include_attached_file_content: trueの場合、添付ファイルのimage_dataを返却
    """
    params = _build_params(
        asof=asof,
        elm=elm,
        json_format=json_format,
        omit_amendment_suppl_provision=omit_amendment_suppl_provision,
        include_attached_file_content=include_attached_file_content,
        response_format="json",
    )
    async with httpx.AsyncClient(timeout=60.0) as client:
        response = await client.get(
            f"{BASE_URL}/law_data/{law_id_or_num_or_revision_id}", params=params
        )
        response.raise_for_status()
        return response.json()


@mcp.tool()
async def search_keyword(
    keyword: str,
    law_num: Optional[str] = None,
    law_num_era: Optional[str] = None,
    law_num_year: Optional[int] = None,
    law_num_num: Optional[str] = None,
    law_num_type: Optional[str] = None,
    law_type: Optional[str] = None,
    asof: Optional[str] = None,
    category_cd: Optional[str] = None,
    promulgation_date_from: Optional[str] = None,
    promulgation_date_to: Optional[str] = None,
    limit: Optional[int] = None,
    offset: Optional[int] = None,
    order: Optional[str] = None,
    sentences_limit: Optional[int] = None,
    sentence_text_size: Optional[int] = None,
    highlight_tag: Optional[str] = None,
) -> dict:
    """
    法令本文をキーワードで全文検索します。

    キーワードにはワイルドカード(* は0文字以上、? は1文字)、AND/OR/NOT検索が使用できます。
    ワイルドカードとAND/OR/NOT検索は組み合わせ不可です。

    Args:
        keyword: 検索キーワード(必須)例: デジタル庁、第*条
        law_num: 法令番号(部分一致)
        law_num_era: 法令番号の元号 Meiji/Taisho/Showa/Heisei/Reiwa
        law_num_year: 法令番号の年
        law_num_num: 法令番号の号数
        law_num_type: 法令番号の法令種別 Constitution/Act/CabinetOrder/ImperialOrder/MinisterialOrdinance/Rule/Misc
        law_type: 法令種別(カンマ区切りで複数指定可)例: Act,Rule
        asof: 法令の時点(YYYY-MM-DD)
        category_cd: 事項別分類コード(カンマ区切りで複数指定可)
        promulgation_date_from: 公布日(以後)YYYY-MM-DD
        promulgation_date_to: 公布日(以前)YYYY-MM-DD
        limit: sentencesのposition数の総和の上限(既定値: 100、上限: 1000)
        offset: 取得開始位置(既定値: 0)
        order: 並び順 例: +law_info.law_id
        sentences_limit: sentences に表示される件数の上限
        sentence_text_size: レスポンスのtextの表示文字数(既定値: 100)
        highlight_tag: キーワードヒット箇所を囲むHTMLタグ名(既定値: span)例: em
    """
    params = _build_params(
        keyword=keyword,
        law_num=law_num,
        law_num_era=law_num_era,
        law_num_year=law_num_year,
        law_num_num=law_num_num,
        law_num_type=law_num_type,
        law_type=law_type,
        asof=asof,
        category_cd=category_cd,
        promulgation_date_from=promulgation_date_from,
        promulgation_date_to=promulgation_date_to,
        limit=limit,
        offset=offset,
        order=order,
        sentences_limit=sentences_limit,
        sentence_text_size=sentence_text_size,
        highlight_tag=highlight_tag,
        response_format="json",
    )
    async with httpx.AsyncClient() as client:
        response = await client.get(f"{BASE_URL}/keyword", params=params)
        response.raise_for_status()
        return response.json()


@mcp.tool()
async def get_law_file_url(
    law_id_or_num_or_revision_id: str,
    file_type: str,
    asof: Optional[str] = None,
) -> str:
    """
    法令本文ファイルのダウンロードURLを返します。ブラウザやcurlでアクセスしてください。

    Args:
        law_id_or_num_or_revision_id: 法令ID・法令番号・法令履歴ID(完全一致・必須)
            例: 405AC0000000088、昭和二十二年政令第十六号
        file_type: ファイル種別(必須)xml/json/html/rtf/docx
        asof: 法令の時点(YYYY-MM-DD)。法令履歴IDを指定した場合は無視される
    """
    url = f"{BASE_URL}/law_data/{law_id_or_num_or_revision_id}/{file_type}"
    if asof:
        url += f"?asof={asof}"
    return url


if __name__ == "__main__":
    mcp.run(transport="streamable-http")

MCPサーバをDockerで実行するための設定ファイルは下記のとおりです。

# Dockerfile
FROM python:3.12-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY server.py .

EXPOSE 8000

CMD ["python", "server.py"]
docker-compose.yml
services:
  mcp-server:
    build: .
    ports:
      - "8000:8000"
    restart: unless-stopped
requirements.txt
mcp[cli]>=1.9.0
httpx>=0.27.0

MCPサーバの実行

docker-composeコマンドでMCPサーバを実行します。

$ docker compose up -d

ローカルPCのClaude Codeから利用する

Claude Codeの設定

Claude CodeにMCPサーバを認識させるために、.mcp.jsonファイルに設定を追記します。

.mcp.json
{
  "mcpServers": {
    "laws-mcp": {
      "type": "http",
      "url": "http://localhost:8000/mcp"
    }
  }
}

プライベートサブネットのEC2サーバで実行するMCPサーバに接続するために、SSM接続してトンネルを確立する必要があります。

ssh -L 8000:localhost:8000 <ユーザ名>@<サーバIPアドレス>

別ターミナルを立ち上げて、Claude Codeを起動します。

claude
  New MCP server found in .mcp.json: laws-mcp

  MCP servers may execute code or access system resources. All tool calls require approval. Learn more in the MCP documentation.

  ❯ 1. Use this and all future MCP servers in this project
    2. Use this MCP server
    3. Continue without using this MCP server

上記を実行すると、.claude/settings.local.jsonファイルが作成されます。

.claude/settings.local.json
{
  "enabledMcpjsonServers": [
    "laws-mcp"
  ],
  "enableAllProjectMcpServers": true
}

MCPサーバの接続確認

Claude Codeで利用可能なMCPサーバを確認します。

> /mcp

laws-mcpサーバに接続されていることがわかります。

  Manage MCP servers
  13 servers

    Project MCPs (<your-path>/.mcp.json)
  ❯ laws-mcp · ✔ connected · 5 tools

MCPサーバで使用できるツールを確認できます。

  Laws-mcp MCP Server

  Status:           ✔ connected
  Auth:             ✔ authenticated
  URL:              http://localhost:8000/mcp
  Config location:  <your-path>/.mcp.json
  Capabilities: tools
  Tools: 5 tools

  ❯ 1. View tools
    2. Re-authenticate
    3. Clear authentication
    4. Reconnect
    5. Disable
  Tools for laws-mcp
  5 tools

  ❯ 1. search_laws
    2. get_law_revisions
    3. get_law_data
    4. search_keyword
    5. get_law_file_url

Claude CodeによるMCPサーバの使用例

Claude Codeに、法令に関連する質問を送信して、laws-mcpMCPサーバが使用されるか確認します。

> 人工知能に関する法令について教えて
⏺ 日本の人工知能に関する法令を調べます。

  Called laws-mcp 2 times (ctrl+o to expand)

⏺ 重要な法令が見つかりました。最も重要な「AI法」の内容を詳しく確認します。

  Called laws-mcp 2 times (ctrl+o to expand)

⏺ 日本における人工知能に関する主な法令をまとめます。

  ---
  日本の人工知能関連法令
  
  1. 人工知能関連技術の研究開発及び活用の推進に関する法律(AI法)

  令和七年法律第五十三号 / 2025年6月4日公布・同年9月1日施行

  日本初のAI専門の基本法です。略称は「AI法」。

  定義(第2条)

  ▎ 人工的な方法により人間の認知・推論・判断に係る知的な能力を代替する機能を実現するために必要な技術、およびそれを用いて情報処理するシステムに関する技術

  基本理念(第3条)

  - 経済社会発展の基盤技術として国際競争力を向上させる
  - 安全保障の観点からも重要
  - 不正利用(犯罪・個人情報漏えい・著作権侵害等)を防ぐため透明性確保が必要
  - 国際的協調のもとで推進

  各主体の責務

  ┌───────────────────────┬──────────────────────────────────────────────────────────┐
  │         主体          │                           責務                           │
  ├───────────────────────┼──────────────────────────────────────────────────────────┤
  │ 国(第4条)           │ 総合的・計画的に施策を策定・実施。行政機関でのAI積極活用 │
  ├───────────────────────┼──────────────────────────────────────────────────────────┤
  │ 地方公共団体(第5条) │ 地域特性を生かした自主的施策                             │
  ├───────────────────────┼──────────────────────────────────────────────────────────┤
  │ 研究開発機関(第6条) │ 研究開発・人材育成・国との協力                           │
  ├───────────────────────┼──────────────────────────────────────────────────────────┤
  │ 活用事業者(第7条)   │ 積極的活用と施策への協力                                 │
  ├───────────────────────┼──────────────────────────────────────────────────────────┤
  │ 国民(第8条)         │ AI技術への理解・関心を深める                             │
  └───────────────────────┴──────────────────────────────────────────────────────────┘

  基本的施策(第2章)

  - 研究開発の推進(第11条)
  - 計算資源・データセット等の整備・共用促進(第12条)
  - 適正性の確保(国際規範に即した指針整備)(第13条)
  - 人材の確保・育成(第14条)
  - 教育・広報活動(第15条)
  - 調査・研究と情報収集(第16条)
  - 国際協力・国際規範策定への参画(第17条)

  人工知能基本計画(第3章・第18条)

  政府は「人工知能基本計画」を策定し、閣議決定・公表する義務を負う。

  人工知能戦略本部(第4章)

  - 内閣に設置(本部長:内閣総理大臣)
  - 副本部長:内閣官房長官+AI戦略担当大臣
  - 本部員:その他全国務大臣

  ---
  2. 人工知能戦略本部令

  令和七年政令第二百八十一号 / 2025年8月1日公布・同年9月1日施行

  AI法第28条に基づく政令。戦略本部の運営・専門調査会の設置等を規定。

  ---
  3. その他AI関連の規定を含む法令
  
  ┌──────────────────────────────────────────────────┬─────────────────────────────────────────────────────────────────┐
  │                      法令名                      │                          AI関連の内容                           │
  ├──────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────┤
  │ 官民データ活用推進基本法(平成28年法律第103号)  │ 「人工知能関連技術」の定義規定を置く(他法でもこれを参照)      │
  ├──────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────┤
  │ 情報処理の促進に関する法律(昭和45年法律第90号) │ 先端半導体・AI関連技術債(令和7〜12年度に発行できる国債)を規定 │
  ├──────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────┤
  │ 租税特別措置法                                   │ AI関連技術を活用した特許権等に関する税制優遇措置                │
  ├──────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────┤
  │ 内閣府設置法                                     │ AI関連技術の研究開発・活用の総合推進に関する政策事項            │
  └──────────────────────────────────────────────────┴─────────────────────────────────────────────────────────────────┘

  ---
  ポイント

  - 2025年9月施行のAI法が日本のAI政策の中核で、欧州のAI Actと異なりリスク規制型ではなく推進・振興型の法律です
  - 罰則や事業者への具体的規制より、国の基本方針・体制整備を中心とした基本法的な性格が強い
  - AIの適正利用・透明性確保についても理念として明記されており、今後の個別規制立法の基盤となる構造です

✻ Cogitated for 51s

Claude Codeがlaws-mcpMCPサーバを使用して回答生成することを確認できました。
今回は個人検証のためSSMを用いたMCPサーバとの接続方法を採用しましたが、ロードバランサを用いてMCPサーバを公開し、複数のユーザが使用できるように設定することも可能です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?