# SME Copilot MCP Server
中小企業向け経営アクションレポート自動生成システム(SME Copilot)のバックエンドとなるMCPサーバーです。
法人番号APIへの依存をなくし、社名と所在地をもとにウェブ検索+LLM要約で企業プロファイルを取得し、法令条文と地域統計を組み合わせてレポート生成に必要なデータを提供します。
## 機能 (Tools)
現在の設計で提供するMCPツールは以下の3つです(法人番号は任意項目)。
1. **`lookup_company`**: 社名・所在地をキーにウェブ検索+LLM要約で企業プロファイルを取得(法人番号が見つかれば付与)。
- **必要**: 検索プロバイダのAPIキー(例: Bing Web Search / SerpAPI / OpenAIブラウジング)
- **出力**: 商号、所在地、法人格、法人番号(任意)、公式サイト、出典URL、取得日時
2. **`get_law_article`**: 法令名と条番号から条文テキストを取得。
- **APIキー不要**(e-Gov法令検索API)
3. **`get_region_stats`**: 都道府県と産業分類コードから地域統計(事業所数、従業者数)を取得。
- **必要**: e-Stat API アプリケーションID
> 移行メモ: 旧ツール `list_corporation`(法人番号API依存)は廃止予定です。コードも順次 `lookup_company` に置き換えます。
## セットアップ
### 1. 前提条件
- Node.js (v18以上推奨)
- npm
### 2. 依存関係のインストール
```bash
npm install
```
### 3. 環境変数の設定
`.env` にAPIキー・設定値を記述します。
```bash
# .env ファイルを作成(すでにある場合は編集)
touch .env
```
サンプル:
```env
# 検索プロバイダ設定(bing | serpapi | openai など)
SEARCH_PROVIDER=bing
SEARCH_API_KEY=your_search_api_key_here
# e-Stat API (https://www.e-stat.go.jp/api/api-info/api-registration)
ESTAT_APP_ID=your_estat_app_id_here
# 任意: タイムゾーンや通知リードタイム
TZ=Asia/Tokyo
NOTIFY_BEFORE_DAYS=7
```
## ビルドと実行
### ビルド
TypeScriptをコンパイルします。
```bash
npm run build
```
### 実行 (Stdioモード)
MCPサーバーを起動します(通常はMCPクライアントから自動起動されます)。
```bash
npm start
```
## Claude Desktop での利用方法
Claude Desktop の設定ファイル (`~/Library/Application Support/Claude/claude_desktop_config.json`) にサーバーを登録します。
`/absolute/path/to/taxAI` の部分を実際の絶対パスに置き換えてください。
```json
{
"mcpServers": {
"sme-copilot": {
"command": "node",
"args": [
"/absolute/path/to/taxAI/build/index.js"
],
"env": {
"SEARCH_PROVIDER": "bing",
"SEARCH_API_KEY": "取得した検索APIキー",
"ESTAT_APP_ID": "取得したAppID"
}
}
}
}
```
`env` セクションでAPIキーを指定すれば、`.env` の代わりに環境変数を直接渡せます。
## 開発・テスト
### 動作確認スクリプト
主要ツールをまとめて呼び出すテストスクリプトを用意しています(`test_script.ts`)。検索APIキーと e-Stat AppID をセットした上で実行してください。
```bash
npm run build
npx ts-node test_script.ts
```
## ディレクトリ構成
- `src/index.ts`: サーバーのエントリーポイント。MCPツールの定義とリクエスト振り分け。
- `src/clients/`: 外部APIクライアント。
- `LawApiClient.ts`: 法令APIクライアント(XMLパース含む)
- `EStatClient.ts`: e-Stat APIクライアント
- `SearchClient.ts`(予定): ウェブ検索プロバイダ用クライアント
- `build/`: コンパイル済みJavaScript
- `test_script.ts`: ツールの簡易動作確認
## アーキテクチャ(mermaid)
```mermaid
flowchart LR
U["ユーザー / Claude Desktop"] --> M["MCPクライアント (stdio)"] --> S["SME Copilot MCPサーバー"]
S --> LC[企業プロファイル取得]
S --> LA[法令条文取得]
S --> RS[地域統計取得]
LC --> WEB[(検索API)]
LA --> LAW[(e-Gov法令API)]
RS --> EST[(e-Stat統計API)]
LC --> LLM[LLM要約]
LA --> LLM
RS --> LLM
LLM --> OUT[(レポート出力)]
```
## ユーザーフロー(MVP想定, mermaid)
```mermaid
flowchart TD
U[社名と所在地を入力]
C[MCPクライアント]
S[企業プロファイル取得]
L[法令条文取得]
R[地域統計取得]
A[LLMで統合]
P[("テキスト/PDF出力")]
U --> C
C --> S
S --> C
C -->|候補を表示| U
U -->|プロファイルを承認| C
C --> L
C --> R
L --> A
R --> A
S --> A
A --> P
```
## 注意事項
- 検索結果には誤情報が含まれる可能性があるため、出典URLを必ず提示し、ユーザー承認を前提に保存してください。
- 法令情報・統計情報は最新性を保証しません。免責を明記し、税務判断は専門家確認を前提としてください。