Légifrance MCP Server
by System09192
README.md
# Légifrance MCP Server
フランスの法典条文を、条番号を指定して都度検索・取得できるMCPサーバー(Streamable HTTP)です。
Claude Desktopのカスタムコネクタとして登録することで、Claudeに「Code civil の第1104条を教えて」のように聞くと、
Légifrance公式API(PISTE経由)から実際の条文本文を取得して回答できるようになります。
## 提供するツール
- `get_code_article(codeName, articleNumber)`
- `codeName`: 法典名。例: `Code civil`, `Code pénal`, `Code du travail`
- `articleNumber`: 条番号。例: `1104`, `L1231-1`
## 1. ローカルでの動作確認
```bash
npm install
cp .env.example .env
# .env を編集し、PISTE_CLIENT_ID / PISTE_CLIENT_SECRET を設定
npm start
```
起動後、`http://localhost:3000/health` にアクセスして `ok` が返れば起動成功です。
### /search のレスポンス構造を必ず事前確認してください
`server.js` 内の `searchArticleId()` 関数は、`/search` エンドポイントのレスポンスから
条文ID(LEGIARTI)を取り出す処理が**推測に基づいています**。本番投入前に、必ず単体で
```bash
curl -X POST 'https://sandbox-api.piste.gouv.fr/dila/legifrance/lf-engine-app/search' \
--header 'Authorization: Bearer <取得したトークン>' \
--header 'Content-Type: application/json' \
--data-raw '{
"recherche": {
"champs": [
{"typeChamp": "NUM_ARTICLE", "criteres": [{"typeRecherche": "EXACTE", "valeur": "1104", "operateur": "ET"}], "operateur": "ET"}
],
"filtres": [{"facette": "NOM_CODE", "valeurs": ["Code civil"]}],
"pageNumber": 1, "pageSize": 5, "operateur": "ET", "sort": "PERTINENCE", "typePagination": "DEFAUT"
},
"fond": "CODE_DATE"
}'
```
を実行し、返ってきたJSONの中でLEGIARTI IDがどのキーに入っているかを確認したうえで、
`server.js`の`searchArticleId()`内のパース処理(`first?.titles?.[0]?.id ?? first?.id`の部分)を
実際の構造に合わせて修正してください。
## 2. 公開サーバーへのデプロイ
Claude DesktopはAnthropicのクラウドからこのサーバーに接続するため、
**パブリックインターネットからHTTPSで到達可能な場所**にデプロイする必要があります
(自宅Mac上でローカルに起動しただけでは動きません)。
選択肢の例:
- Render / Railway / Fly.io などのPaaS(無料枠あり、Node.jsアプリを`git push`だけでデプロイ可能)
- 自前のVPS + リバースプロキシ(nginx等)でHTTPS終端
デプロイ時は、環境変数 `PISTE_ENV` / `PISTE_CLIENT_ID` / `PISTE_CLIENT_SECRET` を
各サービスの環境変数設定画面から設定してください(`.env`ファイルをそのままアップロードしない)。
デプロイ後、`https://あなたのドメイン/mcp` がMCPエンドポイントのURLになります。
## 3. Claude Desktopへの登録
1. Claude Desktopを開く
2. Settings(または Customize) → Connectors → 「Add custom connector」
3. サーバーURL(例: `https://あなたのドメイン/mcp`)を入力して追加
登録はローカル端末ではなくClaudeアカウントに対して行われるため、
同じアカウントでログインした他のMac・Web版・モバイル版でも自動的に使えるようになります。
## セキュリティ上の注意
- `PISTE_CLIENT_SECRET` は絶対に公開リポジトリにコミットしない、チャットやログに貼らないでください。
- 本番運用する場合は、sandbox用とは別にproduction用アプリケーションをPISTEで作成し、
対応するCGU同意・API紐付けを行ってください。
- 万一client_secretが漏洩した場合は、PISTE管理画面から再生成(ローテーション)してください。
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing