mcpField
H
hilan-mcp

hilan-mcp

ローカル
github.com/udah1金融データ612 週間前に更新

hilan-mcp について

hilan-mcp は、Hilan の給与明細と Form 106 の税務書類を AI アシスタントで扱えるようにします。ヘッドレス Chromium でテナントごとのアカウントにアクセスし、同期データを暗号化したローカル SQLite に保存して、検索や給与推移の分析に使います。

主な機能

  1. 01構造化された給与明細データと PDF の同期
  2. 02年次 Form 106 PDF のダウンロード
  3. 03テナントごとのログイン項目への対応
  4. 04暗号化したローカル SQLite への保存
  5. 05同期データの検索と給与推移の計算

活用シーン

  1. 01最近の給与明細を取得して確認
  2. 02特定年の Form 106 をダウンロード
  3. 03月ごとの総支給額や手取り額を確認
  4. 04複数年の給与変化を分析

MCP 対応

stdio の MCP サーバーとして動作し、テナント管理、給与明細と Form 106 の同期、ローカル検索、給与推移のツールを提供します。Playwright で Hilan にログインし、内部エンドポイントにアクセスします。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"udah1-hilan": {
"command": "npx",
"args": [
"-y",
"hilan-mcp"
],
"env": {
"COMPANY_URL": "<COMPANY_URL>",
"COMPANY_TENANT": "<COMPANY_TENANT>",
"COMPANY_CODE": "<COMPANY_CODE>",
"HILAN_DB_KEY": "<HILAN_DB_KEY>",
"NODE_EXTRA_CA_CERTS": "<NODE_EXTRA_CA_CERTS>"
}
}
}
}
起動コマンドnpx -y hilan-mcp
設定が必要な環境変数
COMPANY_URLDefault tenant as a full URL, e.g. "https://amdocs.net.hilan.co.il" (optional if you always pass a `tenant` argument to tools instead). Takes priority over COMPANY_TENANT/COMPANY_CODE.
COMPANY_TENANTDefault tenant subdomain, e.g. "amdocs" (optional if COMPANY_URL is set or a `tenant` argument is always passed to tools).
COMPANY_CODEDefault tenant as a numeric org code, e.g. "5227" (optional, lowest priority of the three tenant env vars).
HILAN_DB_KEYシークレットDatabase encryption key (only needed if you skip `npx hilan-mcp setup-key`, which stores it in your OS credential store instead).
NODE_EXTRA_CA_CERTSPath to a CA bundle, only needed on a network with a TLS-intercepting corporate proxy (e.g. "self-signed certificate in certificate chain" errors).

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmhilan-mcp0.3.2

ツール

11

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
versionstringはい無視する _updateNotice のバージョン文字列。例:"0.2.0"

詳細

hilan-mcp

Hilan(Hilanet / חילן, חילנט)用のMCP サーバー — どのHilanテナントでも、給与明細とForm 106をあらゆるAI アシスタントに取り込めます。

npm version npm downloads license node


Hilanには公式APIがありません。hilan-mcpはPlaywrightを介して実際の(ヘッドレス)Chromiumブラウザーを操作してログインし、同じ認証済みセッションを再利用してHilanの内部エンドポイントを呼び出し、PDFをダウンロードします。不安定な手作りのCookie再送信は不要で、プレーンテキストの秘密情報がどこにも保存されることもありません。

目次

機能

  • 📄 給与明細 — テナントの履歴にある任意の月について、Bruto/Neto/給与項目の構造化データとPDFを取得できます。
  • 🧾 Form 106 — 年ごとの税務サマリーPDFを取得できます。
  • 🔐 暗号化されたローカルストレージ — SQLCipherで暗号化されたSQLiteを使用します。鍵がプレーンテキストでディスクに書き込まれることはありません。OS標準の認証情報ストア(Keychain/DPAPI/Secret Service)にも対応しています。
  • 🏢 あらゆるHilanテナントに対応 — ログインフォームのフィールドは特定の雇用主にハードコードせず、テナントごとに検出します。
  • 💬 生のJSONではなく回答を返します — queryなどのツールは、ネットワークへの再アクセスなしでローカルデータから「6月の収入はいくらでしたか?」に直接回答します。
  • 🔄 自動更新の確認機能 — サーバーが新しいバージョンを確認し、専用のUIなしでAI エージェントが更新を提案できるようにします。

仕組み

このサーバーはPlaywrightを介して実際の(ヘッドレス)Chromiumブラウザーを操作してログインし、認証済みブラウザーコンテキストのHTTPクライアント(context.request)を再利用してHilanの内部.asmx JSONエンドポイントを呼び出し、PDFをダウンロードします。これにより、不安定な手作りのCookie再送信ではなく、通常のページ読み込みで設定されるCookieやヘッダーが自動的に引き継がれます。

Hilanのテナントによってログインフォームのフィールドは異なり(2つのテナントもあれば3つのテナントもあります)、1つの会社にハードコードするのではなく、認証情報を初めて登録する際に、各テナントのログインフォームをあらためて調査します。

セットアップ

0. npm 12以降をお使いの場合

npm 12では、許可しない限り依存関係のインストールスクリプトがブロックされます。このパッケージの依存関係の1つ(暗号化SQLiteエンジンのbetter-sqlite3-multiple-ciphers)は、ネイティブバインディングのコンパイルにインストールスクリプトが必要です。これを許可しないと、セットアップは成功したように見えても、データベースにアクセスするすべてのツールが失敗します。今後のすべてのnpxおよびグローバルインストールで有効にするには、一度だけ許可してください。

npm config set allow-scripts=better-sqlite3-multiple-ciphers --location=user

グローバルには設定したくない場合は、インストールごとに許可することもできます。

npm install -g --allow-scripts=better-sqlite3-multiple-ciphers hilan-mcp

npm 11以前では不要です。インストールスクリプトは引き続きデフォルトで実行されます。npm --versionで確認してください。

1. テナントを登録して認証情報を入力する

これをご自身で、ご自身のターミナルから直接実行してください。実際の認証情報を AI チャットに貼り付けてはいけません。Chromium ブラウザーをインストールし(初回のみ)、ヘッドレスブラウザーを起動して、テナントの実際のログインフィールドを検出し、それぞれの入力を求めます(パスワードはマスクされます)。ローカルへのクローンも npm install も不要です。npx がその場でパッケージを取得します。

npx hilan-mcp setup --tenant amdocs        # tenant subdomain
# or
npx hilan-mcp setup --tenant 5227          # numeric org code, resolved automatically

すでに別の方法でパッケージをインストールしている場合、同等の低レベルコマンドは npx hilan-mcp ingest-creds --tenant <...> です。setup は、初回の Chromium インストールも先に処理します。

初回の実行時に、ローカルデータベース用の暗号化キー(6 文字以上)の設定を求められます。このキーが平文でディスクに書き込まれることはありません。

MCP サーバーが人間による都度のプロンプトへの応答なしに、単独でデータベースを開けるよう、次の順にキーを探します。

  1. OS の認証情報ストア(推奨) — ご自身のターミナルから npx hilan-mcp setup-key を一度実行してください。キーを入力するか、Enter キーを押して強力なランダムキーを生成すると、OS のネイティブなセキュアストレージに保存されます。macOS Keychain(検証済み — Wi-Fi/ブラウザーのパスワードを保存するものと同じファイルに保存され、通知やダイアログは表示されません)、Windows(DPAPI。Windows ユーザーアカウントに紐付けられます)、または Linux(Secret Service/secret-tool。GNOME Keyring や KWallet などのキーリングデーモンが必要です)。設定ファイルには一切保存されません。
  2. HILAN_DB_KEY 環境変数 — サーバーの env ブロックで設定してください(手順 2 を参照)。mcp.json 内で MCP サーバー用に設定する他の API キー/シークレットと同じ信頼モデルです(ローカルファイルで、git にコミットされません)。
  3. デスクトップ通知(最後の手段) — サーバーはシステム通知での確認に切り替えます(さらにその代替手段として、通常のターミナルプロンプトも使用します)。ただし、データベースを必要とするツール呼び出しのたびに、約 30 秒以内に人間が応答する必要があるため、通常の使用には推奨されません。
2. MCP クライアントの設定にサーバーを追加する

引数なしでパッケージを実行すると、MCP サーバー自体が起動します(stdio トランスポート)。実際に MCP クライアントの設定から呼び出すのはこちらです。

{
  "mcpServers": {
    "hilan": {
      "command": "npx",
      "args": ["-y", "hilan-mcp"]
    }
  }
}
単一の雇用主向けの設定 — 各ツール呼び出しでの tenant の指定を省略

これを1 社の雇用主にのみ使用する場合は、サーバーの env ブロックでデフォルトのテナントを設定できます。設定されている値のうち、次の順序で最初のものだけが使用されます — COMPANY_URL → COMPANY_TENANT → COMPANY_CODE:

{
  "mcpServers": {
    "hilan": {
      "command": "npx",
      "args": ["-y", "hilan-mcp"],
      "env": {
        "COMPANY_TENANT": "amdocs",
        "HILAN_DB_KEY": "the-encryption-key-you-set-during-ingest-creds",
        "NODE_EXTRA_CA_CERTS": "/path/to/your-corporate-ca-bundle.pem"
      }
    }
  }
}

HILAN_DB_KEY が必要なのは、npx hilan-mcp setup-key を実行していない場合のみです(手順 1 を参照)。両方が設定されている場合、OS の認証情報ストアが優先されます。NODE_EXTRA_CA_CERTS が必要なのは、TLS を傍受する企業プロキシを使用するネットワークの場合のみです(信頼性に関する注意事項 — 実際のエンドツーエンド実行から得られた知見を参照)。それ以外では省略してください。

環境変数例備考
COMPANY_URLhttps://amdocs.net.hilan.co.il最優先です。
COMPANY_TENANTamdocsサブドメインのみ。COMPANY_URL が設定されていない場合にのみ使用されます。
COMPANY_CODE5227数値の組織コードです。上記のどちらも設定されていない場合にのみ使用され、追加の検索往復処理が必要です。

このフォールバックは npx hilan-mcp ingest-creds にも適用されます。これらの環境変数のいずれかが設定されていれば、--tenant は省略できます。明示的な tenant 引数(または --tenant フラグ)は、常に環境変数より優先されます。

公開パッケージではなくローカルクローンから実行

上記の npx 形式の代わりに、(クローン内で npm install && npm run build を実行した後)"command": "node", "args": ["/absolute/path/to/hilan-mcp/dist/cli/index.js"] を使用してください。

### 3. 使用する

「Hilanから直近3か月分の給与明細を同期して」「2025年のForm 106をダウンロードして」「2026年6月の手取り/総支給額はいくら?」などとアシスタントに尋ねてください(その月を少なくとも一度同期していれば、ローカルデータベースからqueryツールを使ってネットワーク往復なしですぐに回答できます)。以下のツール一覧をご覧ください。

ユーザーに代わってセットアップするAIエージェント(例:Claude)向け

ユーザーからhilan-mcpのセットアップを頼まれた場合:

  1. 自分でシェルツールを使ってingest-creds/setup/setup-keyを実行してはいけません。これらのコマンドはパスワードや暗号化キーを対話形式で求めるため、シェルツールの実行記録にユーザーの入力内容が残る可能性があります。ユーザー自身のターミナルを開き、npx hilan-mcp setup --tenant <their-org-code-or-subdomain>を実行するよう伝えてください。その後、npx hilan-mcp setup-keyも実行することをおすすめします。まずnpm --versionを確認してください。npm 12以降の場合は、手順0も必要です。実行しないと、インストールとは関係なさそうな形で、後からデータベースを開けなくなります。
  2. それが済んだら、クライアントの設定ファイルにMCP サーバーのエントリー(上記のJSONブロック)を安全に追加できます。ユーザーがHILAN_DB_KEY環境変数を代わりに使わず、setup-key(OSの資格情報ストア)を使っていれば、この設定にはシークレットは含まれません。
  3. 設定を追加したら、新しいツールを使えるようにするため、ユーザー(またはクライアント)がMCP接続を再読み込み/再起動する必要があります。
  4. ユーザーから明示的に求められない限り、HILAN_ENABLE_DEBUG_TOOLSを有効にしないでください。生の.asmx/PDFを調査するためのツールは意図的に用意された非常用手段であり(セキュリティモデルを参照)、通常の使用には必要ありません。
  5. ツールの応答に_updateNoticeフィールドが含まれている場合は、ユーザーに伝えて更新するか尋ねてください。更新しない場合は、そのバージョンを指定してdismissUpdateNoticeを呼び出してください(MCPツールを参照)。

MCPツール

ツール概要
listTenants設定済みテナントを一覧表示します。シークレットは含まれません。
syncPayslips直近Nか月分の構造化された給与明細データとPDFを取得します。
resyncPayslipMonth指定した1か月分を再取得し、保存済みのデータを上書きします。
syncForm106指定した年のForm 106 PDFをダウンロードします。
downloadCombinedPayslipsPdf指定した月の範囲をまとめた1つのPDFを作成します。
getSalaryTrends年間平均、前年比、CAGR、注目すべき昇給をローカルで計算します。
listTables / describeTableクエリ可能なローカルスキーマを確認します。
queryローカルの給与明細/Form106データに対して読み取り専用のSQLを実行します。
getPersonalDetails個人情報をリアルタイムで照会します(保存されません)。
dismissUpdateNotice特定のバージョンの更新通知を非表示にします。
debugCallAsmx / debugDownloadPdf生のAPIを調査します。デフォルトでは無効です。
ツールの全リファレンス(引数、動作、注意事項)
listTenants()

設定済みテナント(サブドメイン、機能、過去にログインが成功したかどうか)を一覧表示します。シークレットは含まれません。

syncPayslips(tenant?, monthsBack?, skipPdf?)

ログインし(保存済みセッションがまだ有効なら再利用します)、直近Nか月分(デフォルトは3か月)の構造化されたBruto/Neto/給与項目データを取得し、各給与明細のPDFをダウンロードします。数字だけをより速く同期する場合(例:「今年の収入はいくら?」)は、skipPdf: trueを指定してください。COMPANY_URL/COMPANY_TENANT/COMPANY_CODEが設定されていれば、tenantは省略できます。実際に遡れる期間はテナント固有のアーカイブの長さによって制限されます。開始日を推測する必要はありません。

resyncPayslipMonth(tenant?, period, skipPdf?)

指定した1か月分(例:"10_2019"または"10/2019")を再取得し、保存済みの内容を上書きします。破損または不完全なPDFを再試行する場合や、「X月の収入はいくらだった?」という個別の質問に答える場合に、全期間に対してsyncPayslipsを再実行する代わりに使ってください。

syncForm106(tenant?, year?)

ログインし、指定した年(またはテナントのデフォルトの年)のForm 106 PDFをダウンロードします。tenantの省略時の動作は上記と同じです。

downloadCombinedPayslipsPdf(tenant?, fromMonth, toMonth, destDir?)

月の範囲全体を網羅した1つのPDFをダウンロードします(例:2015~2024年の全月)。月ごとに1ファイルをダウンロードするのとは異なります。範囲がサーバーのURL長制限を超える場合は、自動的に複数のファイルに分割します(信頼性に関する注意事項を参照)。実用上の上限は、分割単位あたりおよそ10~15年です。

getSalaryTrends(tenant?, fromYear?, toYear?)

ローカルに同期済みの給与明細のみから給与の伸びの傾向を算出します。ライブログインもネットワーク呼び出しも行いません。年ごとのBruto/Neto平均、隣接する年の前年比変化率、最初と最後の完全な暦年(12か月)間のCAGR、全体の増加率(最初と最後の同期済み月の比較)、および「顕著な変動」(Brutoの前年比変化率が10%以上)を返します。オプションのfromYear/toYearで、対象とする暦年を指定できます。queryで集計を独自に実装するより、このツールを優先してください。通常のperiodテキストでグループ化・並べ替えすると、年をまたぐ時系列が正しく並ばないためです(例:"01_2011"は"02_2010"より前に並びます)。このツールは内部で実際の暦月に基づいて並べ替えます。

listTables() / describeTable(table)

クエリ可能なテーブル(payslips、form106のみ)と、それらのカラム/インデックスを一覧表示します。

query(sql)

payslips/form106に対するSELECT専用のSQLです。credentials、sessions、tenantsは厳格にブロックされています。セキュリティモデルを参照してください。ネットワークに一切アクセスせず、「2026年6月に手取り/総支給額はいくらだったか」といった簡単な質問を調べるのに便利です。

getPersonalDetails(tenant?)

ログインして、個人情報(氏名、国民識別番号、生年月日、住所、電話番号、メールアドレス、勤務開始日、職種)を返します。ライブでの照会のみで、ローカルデータベースには保存されません。

dismissUpdateNotice(version)

ユーザーが提示された更新を辞退した場合に呼び出してください。これにより、該当するバージョンは再度通知されません(下記参照)。

debugCallAsmx(tenant?, servicePath, body?) / debugDownloadPdf(tenant?, relativeUrl, fileName)

デバッグ/調査専用で、デフォルトでは無効です。ログイン済みセッションで、任意の.asmxエンドポイントへの生のパススルー呼び出し、または任意の相対PDF URLからのダウンロードを行います。サーバーのenvブロックにHILAN_ENABLE_DEBUG_TOOLS=1が必要です。それ以外の場合は登録されません。ファイル名はサニタイズされ(パス traversal を防止)、URLはテナント自身のオリジンに制限されます(SSRFを防止)。

更新通知:このサーバーには独自のUIがないため、更新チェックはエージェントが次に呼び出すツールに便乗して行われます。1日に最大1回、ツールの呼び出しが成功すると、_updateNoticeフィールドが追加され、「新しいhilan-mcpバージョンが利用可能です:0.1.0 -> 0.2.0...」のようなメッセージが含まれる場合があります。これを読んでいるAIエージェントは、ユーザーに伝えて更新するかどうかを尋ねてください。ユーザーが更新しないと答えた場合は、そのバージョンを引数にしてdismissUpdateNoticeを呼び出し、再通知されないようにしてください(後日、新しいバージョンがあれば通知されます)。更新チェック自体は、3秒のタイムアウトでnpmレジストリにアクセスします。レジストリに到達できない場合(オフラインや企業プロキシなど)は何もせずに終了し、ツール呼び出しが失敗することはありません。

並行処理に関する注意:特定のテナントに対するすべてのツール呼び出しは自動的にキューに登録され、内部で1つずつ順番に実行されます(TenantService.runExclusiveを参照)。Hilanのサイト(および/またはそこへのネットワーク経路)は、1つのセッションからの同時リクエストにうまく対応できず、同時に実行するとすべてタイムアウトします。呼び出しを自分で順番に実行する必要はありません。異なるテナントの処理は引き続き完全に並行して実行されます。

対応範囲(v1)

  • ✅ 給与明細(一覧、構造化されたBruto/Neto/内訳、PDF)
  • ✅ Form 106(PDF、年ごと)
  • ⛔ 一般ファイルアーカイブ、Form 101 — 未実装(v1.1以降)
  • ⛔ ワンタイムコード/2FAログイン — 要求するテナントではハングせず、明確な「未対応」エラーを返します

内部APIの応答が、参照テナント(Amdocs)で確認された構造化形式と一致しないテナントには、pdf_onlyのマークが付きます。給与明細の同期は引き続き機能し、PDFも保存されますが、Bruto/Netoの数値は解析されません。

信頼性に関する注意事項(実際のエンドツーエンド実行から得た知見)

企業の TLS 傍受プロキシ、PDF URL の仕様、切り詰め時の再試行、URL 長の制限、OTP の誤検知
  • 企業の TLS 傍受プロキシ(Amdocs のネットワークなど)を使用すると、内部 API/PDF 呼び出しで Playwright の Node 側の context.request が self-signed certificate in certificate chain エラーを起こします。この問題が発生した場合は、サーバーの env ブロックで NODE_EXTRA_CA_CERTS に組織からエクスポートした CA バンドルを設定してください。
  • PDF の直接ダウンロード URL はドメインのルートではなく /Hilannetv2 を基準とした相対パスです。JSON API が返す PersonalFile/PdfPaySlip.aspx/... のような URL は、実際には <tenant>/Hilannetv2/PersonalFile/PdfPaySlip.aspx/... にあります。実際のブラウザのネットワークキャプチャで確認済みです。
  • PDF のダウンロードには context.request ではなく、ページ内の fetch()(同一オリジン、URL をそのまま使用)を使います。context.request はクエリ文字列内のリテラルな / を気付かれないまま %2F に再エンコードし、一部のエンドポイントで 404 エラーになります。
  • 同じ企業プロキシが、まれに PDF 応答をストリームの途中で切り詰めることがあります(観測例:不自然にきりのよい 32768 バイトで切断)。その際、fetch 自体はエラーになりません。downloadPdf は PDF 標準の終端文字列 %%EOF がバッファー全体に含まれているか確認します(末尾だけではありません。有効な %%EOF の後に数十~数百 KB のヌルバイトのパディングが付く正規の Hilan PDF もあるためです)。あきらめる前に最大 3 回まで再試行します。
  • 複数月分をまとめた PDF(PaySlipApiapi.asmx/GetMultiplePaySlipData。月ごとではなく、日付範囲につき 1 ファイル)では、URL が約 2048 文字を超えると HTTP 404 が発生します。これは Hilan 固有の制限ではなく、IIS のデフォルトの requestFiltering maxQueryString 制限です(月ごとに URL が約 11 文字増加します)。120 か月(10 年、約 1.4KB の URL)で動作し、194 か月(約 16 年、2.2KB の URL)で失敗することを確認済みです。そのため、1 つの複数月 PDF で現実的に取得できる期間は約 15 年が上限です。巨大な URL を作成しない月ごとの同期(syncPayslips)には影響しません。
  • テナントの通常のログインページでは、ユーザー名とパスワードによる通常のログインに対応し、正常に動作している場合でも、「ワンタイムコードでログイン」ボタン/リンクが常に表示されることがあります。この表示だけで OTP が必要だと判断しないでください。ログイン失敗後に OTP 入力用の新しいフィールドが実際に表示されるか、OTP 専用ルートに移動した場合のみ、OTP が必要だと判断します。
## セキュリティモデル
  • SQLite データベース全体(macOS では ~/Library/Application Support/HilanMcp/hilan.db、その他の環境では XDG/AppData に相当する場所)は、選択したパスフレーズを鍵として SQLCipher(better-sqlite3-multiple-ciphers)で保存時に暗号化されます。パスフレーズがディスクに保存されることはありません。PDF は同じ場所の .../HilanMcp/pdfs/<tenant>/ に、ローテーションするログファイルは .../HilanMcp/logs/ に保存されます(ログは秘匿化されます。以下を参照)。アプリデータ、PDF、ログの各ディレクトリには 0700 の権限が、DB ファイルと PDF ファイルには 0600 の権限が設定されます。
  • credentials(ログイン情報)と sessions(保存されたブラウザー Cookie)は、暗号化されたデータベース内の通常のテーブルですが、query/listTables/describeTable ツールからアクセスすることはできません。これらのツールでは payslips と form106 のみを厳密に許可リストに指定し、正規表現ではなく完全な SQL AST 解析によって検証するため、JOIN、サブクエリ、引用符付き識別子を使って許可リストを回避することはできません(src/utils/sqlValidation.ts と src/tests/sqlValidation.test.ts を参照)。
  • Cookie と認証ヘッダーはログファイル、およびツール呼び出しが返すエラーメッセージから秘匿化されます。そのため、Playwright のエラーによってセッション情報がチャット履歴に漏れることはありません(src/utils/redact.ts を参照)。
  • 認証情報の入力(ingest-creds)は、必ずご自身のターミナルで直接実行してください。入力内容が記録される可能性のあるアシスタントのシェルツール経由で実行してはいけません。
  • debugCallAsmx は、意図的に設けられた制限を回避するための手段です。ログイン済みのセッションから、任意の本文で任意の .asmx エンドポイントを呼び出せるため、上記の厳選されたツールを迂回できます。これは開発中の API 調査のために追加されたもので、対象は従業員 1 人に限定されます(同じセッションを使い、サイト上で既にお持ちの権限を使用します)。そのため、他の従業員のデータや他のテナントにはアクセスできません。ただし、原則として書き込みエンドポイントを呼び出せる可能性があります(Hilan では通常、承認フローを経なければ書き込みできませんが、これは監査されていません)。デフォルトでは無効です(HILAN_ENABLE_DEBUG_TOOLS)。query の SQL による制限回避手段と同様に扱ってください。探索を任せられると信頼できる AI アシスタントには問題ありませんが、信頼できない入力に公開するものではありません。

開発

このリポジトリをクローンして、コード自体を操作します(サーバーを使用するだけなら必要ありません。その場合は上記のセットアップを参照してください)。

npm install
npm run typecheck
npm test                 # unit tests (SQL allowlist, path-traversal, redaction, update checks, ...)
npm run build            # compile TypeScript -> dist/
npm run start:mcp        # run the server directly from source (stdio transport)
npm run setup            # local equivalent of `npx hilan-mcp setup`
npm run ingest-creds     # register a tenant + credentials (interactive, run yourself)
npm run setup-key        # store the DB encryption key in your OS credential store (interactive, run yourself)

npm publish で公開されるのは dist/、README.md、LICENSE のみです(package.json の files フィールドを参照)。ソース、テスト、ローカルの調査用成果物は含まれません。prepublishOnly では、最初に型チェック、テスト、ビルドが実行されるため、ビルドに失敗した状態では公開できません。公開された bin エントリ(dist/cli/index.js)は、npx hilan-mcp と npx hilan-mcp <subcommand> の両方から呼び出されます。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。