Skip to main content
Glama
usagi917

SME Copilot MCP Server

by usagi917
README.md
# 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を必ず提示し、ユーザー承認を前提に保存してください。
- 法令情報・統計情報は最新性を保証しません。免責を明記し、税務判断は専門家確認を前提としてください。