dear-claude について
dear-claudeは、設定したプラットフォームで「Dear Claude」が検出されると、ローカルのClaude Codeを起動するMCPサーバーです。タスクの文脈を読み取り、結果を元のプラットフォームに返し、セッション保持や複数サービス間の連携にも対応します。
主な機能
- 01フレーズを契機とするローカル起動
- 02タスクやノートの文脈処理
- 03結果の元プラットフォームへの投稿
- 047日間のセッション保持
- 05複数プラットフォーム間の連携
活用シーン
- 01Linearのタスクをコード変更に変換
- 02GitHubのプルリクエストをレビュー
- 03ObsidianのノートからLinearのタスクを作成
- 04別ブランチで作業を並行実行
MCP 対応
Claude Codeの起動やタスク調整に使うMCPツールを提供します。WebhookまたはObsidianのファイルシステム監視を介して外部プラットフォームと接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y dear-claudeDEAR_CLAUDE_PORTHTTP server port for webhooks (default: 3334)DEAR_CLAUDE_HOSTBind address for the HTTP server (default: 127.0.0.1, loopback only)DEAR_CLAUDE_DATA_DIROverride the data directory (default: $XDG_DATA_HOME/dear-claude or ~/.local/share/dear-claude)DEAR_CLAUDE_API_TOKENシークレットToken guarding the /api/* and /mcp control endpoints (auto-generated at <dataDir>/api-token if unset)TAILSCALE_HOSTNAMEOverride Tailscale hostname for webhook URLs (auto-detected if not set)GITHUB_CLIENT_IDGitHub OAuth App or GitHub App client IDGITHUB_CLIENT_SECRETシークレットGitHub OAuth App or GitHub App client secretGITHUB_WEBHOOK_SECRETシークレットGitHub webhook signature secretGITHUB_ACCESS_TOKENシークレットGitHub personal access token (alternative to OAuth)GITHUB_APP_IDGitHub App ID (for installation-based auth)GITHUB_APP_PRIVATE_KEY_PATHシークレットPath to GitHub App private key PEM fileLINEAR_CLIENT_IDLinear OAuth application client IDLINEAR_CLIENT_SECRETシークレットLinear OAuth application client secretLINEAR_WEBHOOK_SECRETシークレットLinear webhook signing secretLINEAR_ACCESS_TOKENシークレットLinear personal API key (alternative to OAuth)JIRA_DOMAINJira Cloud domain (e.g. 'mycompany' for mycompany.atlassian.net)JIRA_USER_EMAILJira account email for API authenticationJIRA_API_TOKENシークレットJira API token from id.atlassian.comJIRA_WEBHOOK_SECRETシークレットShared secret for Jira webhook URL validationGITLAB_ACCESS_TOKENシークレットGitLab personal or project access tokenGITLAB_WEBHOOK_SECRETシークレットGitLab webhook secret tokenNOTION_CLIENT_IDNotion OAuth integration client IDNOTION_CLIENT_SECRETシークレットNotion OAuth integration client secretNOTION_ACCESS_TOKENシークレットNotion internal integration token (alternative to OAuth)NOTION_WEBHOOK_SECRETシークレットNotion webhook verification secretOBSIDIAN_VAULT_PATHAbsolute path to Obsidian vault directory for file watchingGIPHY_API_KEYシークレットGiphy API key for embedding GIF reactions in responsesローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Dear Claude
外部プラットフォームからローカルの Claude Code インスタンスを起動する MCP サーバーです。
Linear、GitHub、Jira、GitLab、Notion、Obsidian で「Dear Claude」と言うと、Claude Code インスタンスが起動してタスクを処理します。
メモがアーキテクチャに。タスクがプルリクエストに。
これは何ですか?
Dear Claude は、プロジェクト管理ツールを監視して「Dear Claude」というフレーズを検出する MCP(Model Context Protocol)サーバーです。検出すると、ローカルの Claude Code インスタンスを起動し、次の処理を実行します。
- イシュー/コメント/メモのコンテキストを読み取ります
- 依頼されたタスクを実行します(コード作成、レビュー、タスクの作成など)
- 結果を元のプラットフォームに投稿します
- セッションを 7 日間保存するため、複数ターンの会話ができます
Anthropic API キーは不要です。 お使いの Claude Code サブスクリプションで動作します。100% ローカルでプライベートです。コードがマシンの外に出ることはありません。
対応プラットフォーム
| プラットフォーム | イシュー/PR で起動 | コメントで起動 | コメントを返信 | 絵文字リアクション | サブタスク | PR/MR レビュー |
|---|---|---|---|---|---|---|
| GitHub | はい | はい | はい | はい | - | はい |
| Linear | はい | はい | はい | はい | はい | - |
| Jira | はい | はい | はい | - | はい | - |
| GitLab | はい | はい | はい | はい | - | はい |
| Notion | はい | はい | はい | - | - | - |
| Obsidian | はい | - | はい | - | - | - |
プラットフォーム間のオーケストレーション
どのプラットフォームから起動したインスタンスも、設定済みのすべてのプラットフォームの API にアクセスできます。これにより、次のようなワークフローが可能になります。
- Obsidian で仕様を書き、「Dear Claude、これらのタスクを Linear に作成して」と指示します
- Linear で議論し、「Dear Claude、これを GitHub でコーディングして」と指示します
- GitHub でレビューし、「Dear Claude、マージコンフリクトを解消して」と指示します
- 並列コーディング → Claude がブランチごとに 1 つずつ、git worktree を使って複数のインスタンスを起動します
クイックスタート
1 行でインストール
claude mcp add dear-claude -- bunx dear-claude start --mcp
これだけです。Claude Code を起動すれば、Dear Claude を使えます。
前提条件
- Claude Code CLI がインストールされていること(
claudeコマンドを使用できること) - Bun ランタイム(
bunx用) - Tailscale で Funnel が有効になっていること(外部プラットフォームからの Webhook 用)
手動セットアップ(別の方法)
手動で設定する場合は、~/.claude.json の mcpServers に追加します。
{
"mcpServers": {
"dear-claude": {
"command": "bunx",
"args": ["dear-claude", "start", "--mcp"],
"env": {
"DEAR_CLAUDE_PORT": "3334",
"GITHUB_CLIENT_ID": "...",
"GITHUB_CLIENT_SECRET": "...",
"GITHUB_WEBHOOK_SECRET": "...",
"LINEAR_CLIENT_ID": "...",
"LINEAR_CLIENT_SECRET": "...",
"LINEAR_WEBHOOK_SECRET": "..."
}
}
}
}
次に Claude Code を起動します。
claude
MCP サーバーが自動的に起動し、Tailscale Funnel を設定して、公開 Webhook URL を表示します。
プラットフォームのセットアップ
Tailscale Funnel
Dear Claude は、Webhook を受信するための安定した公開 HTTPS URL に Tailscale Funnel を使用します。セットアップの大部分は自動で行われます。
-
Tailscale をインストールします:
# macOS brew install tailscale # Linux curl -fsSL https://tailscale.com/install.sh | sh -
認証します:
tailscale up -
管理コンソールでFunnel を有効にします:https://login.tailscale.com/admin/acls
- ACL ポリシーに
"funnel"機能を追加します
- ACL ポリシーに
-
サーバーの起動時に Funnel は自動設定されます。公開 URL は次のとおりです。
https://<your-hostname>.ts.net/dc
ヒント:
tailscale serve status --jsonを実行して設定を確認してください。ヘルスチェックにより、Funnel の設定は 10 秒ごとに自動修復されます。
GitHub
オプション A:GitHub App(推奨)
- GitHub Settings → Developer settings → GitHub Apps → New GitHub App に移動します
- 次のフィールドを設定します。
- Homepage URL:
https://<your-hostname>.ts.net/dc - Callback URL:
https://<your-hostname>.ts.net/dc/oauth/callback/github - Webhook URL:
https://<your-hostname>.ts.net/dc/webhook/github - Webhook secret:ランダムな文字列を生成します
- Homepage URL:
- Permissions で次の項目を設定します。
- リポジトリ:Issues(読み取りと書き込み)、Pull Requests(読み取りと書き込み)、Contents(読み取りと書き込み)
- Subscribe to events で次の項目を選択します。
- Issue comments、Pull request review comments
- 認証情報をコピーし、環境変数を設定します。
GITHUB_CLIENT_ID=Iv1.abc123... GITHUB_CLIENT_SECRET=abc123... GITHUB_WEBHOOK_SECRET=your-webhook-secret - リポジトリにアプリをインストールします
- OAuth を完了します:
https://<your-hostname>.ts.net/dc/setup/githubにアクセスします
オプション B:Personal Access Token(より簡単、Webhook なし)
- GitHub Settings → Developer settings → Personal access tokens → Tokens (classic) に移動します
- スコープに
repo、write:discussionを指定してトークンを作成します - 次のように設定します:
GITHUB_ACCESS_TOKEN=ghp_...
Note:PAT だけでは、Webhook によってトリガーされるインスタンスは起動されません。代わりに
spawn_instanceMCP ツールまたは/api/spawnエンドポイントを使用します。
| 環境変数 | 説明 |
|---|---|
GITHUB_CLIENT_ID | GitHub App のクライアント ID |
GITHUB_CLIENT_SECRET | GitHub App のクライアントシークレット |
GITHUB_WEBHOOK_SECRET | Webhook 署名の検証用シークレット |
GITHUB_ACCESS_TOKEN | Personal Access Token(OAuth の代替) |
Linear
- Linear Settings → API → OAuth Applications → New Application に移動します
- コールバック URL を設定します:
https://<your-hostname>.ts.net/dc/oauth/callback/linear - Client ID と Client Secret をコピーします
- OAuth アプリで Webhooks の切り替えを有効にします
- Linear Settings → API → Webhooks → New Webhook に移動します。
- URL:
https://<your-hostname>.ts.net/dc/webhook/linear - Signing Secret をコピーします
- イベントを有効にします:Comments(作成)、Issues(作成、更新)
- URL:
- 環境変数を設定します。
LINEAR_CLIENT_ID=your-client-id LINEAR_CLIENT_SECRET=your-client-secret LINEAR_WEBHOOK_SECRET=your-signing-secret - OAuth を完了します:
https://<your-hostname>.ts.net/dc/setup/linearにアクセスします
OAuth の完了後、認証済みの Linear アカウントからのイシュー/コメントのみが Claude をトリガーします。
代替手段:Linear Settings → Account → API から Personal API Key(LINEAR_ACCESS_TOKEN=lin_api_...)を使用します。
| 環境変数 | 説明 |
|---|---|
LINEAR_CLIENT_ID | OAuth クライアント ID |
LINEAR_CLIENT_SECRET | OAuth クライアントシークレット |
LINEAR_WEBHOOK_SECRET | Webhook 署名用シークレット |
LINEAR_ACCESS_TOKEN | Personal API key(OAuth の代替) |
Jira Cloud
- https://id.atlassian.com/manage-profile/security/api-tokens で API token を作成します
- 環境変数を設定します。
JIRA_DOMAIN=mycompany # Your Jira subdomain (mycompany.atlassian.net) [email protected] # Your Atlassian account email JIRA_API_TOKEN=ATATT3x... # The API token you just created JIRA_WEBHOOK_SECRET=optional-secret # Optional shared secret - Jira で Webhook を作成します。
- Jira Admin → System → Webhooks → Create webhook に移動します
- URL:
https://<your-hostname>.ts.net/dc/webhook/jiraJIRA_WEBHOOK_SECRETを使用する場合は、?secret=YOUR_SECRETを末尾に追加します
- イベントを選択します:
issue_created、issue_updated、comment_created
- Webhook を保存します
Claude は Jira REST API v2 を介して、サブタスクの作成、イシューのステータス遷移、コメントの追加を行えます。
| 環境変数 | 説明 |
|---|---|
JIRA_DOMAIN | Jira のサブドメイン(例:mycompany.atlassian.net の場合は mycompany) |
JIRA_USER_EMAIL | Atlassian のメールアドレス |
JIRA_API_TOKEN | Atlassian の API token |
JIRA_WEBHOOK_SECRET | Webhook 検証用の任意の共有シークレット |
GitLab
- GitLab → Settings → Access Tokens で個人アクセストークンを作成します。
- スコープ:
api、read_repository、write_repository
- スコープ:
- 環境変数を設定します。
GITLAB_ACCESS_TOKEN=glpat-... GITLAB_WEBHOOK_SECRET=your-secret - プロジェクト(またはグループ)にWebhook を追加します。
- Settings → Webhooks に移動します。
- URL:
https://<your-hostname>.ts.net/dc/webhook/gitlab - シークレットトークン:
GITLAB_WEBHOOK_SECRETと同じ値 - トリガーイベント:Comments、Issues events、Merge request events
- 保存します。
セルフホストの GitLab の場合は、GITLAB_URL=https://your-gitlab-instance.com も設定します。
| 環境変数 | 説明 |
|---|---|
GITLAB_ACCESS_TOKEN | 個人アクセストークン |
GITLAB_WEBHOOK_SECRET | Webhook シークレットトークン |
GITLAB_URL | GitLab インスタンスの URL(デフォルト:https://gitlab.com) |
Notion
オプション A:内部インテグレーション(より簡単)
- https://www.notion.so/my-integrations → New integration に移動します。
- 名前を付け、ワークスペースを選択します。
- Internal Integration Secret をコピーします。
NOTION_ACCESS_TOKEN=ntn_...を設定します。- インテグレーションとページ/データベースを共有します(ページの「...」をクリック → Connections → Add your integration)。
オプション B:OAuth(公開アプリ)
- https://www.notion.so/my-integrations で OAuth インテグレーションを作成します。
- コールバック URL を設定します:
https://<your-hostname>.ts.net/dc/oauth/callback/notion - 環境変数を設定します。
NOTION_CLIENT_ID=your-client-id NOTION_CLIENT_SECRET=your-secret - OAuth を完了します:
https://<your-hostname>.ts.net/dc/setup/notionにアクセスします。
Webhook の設定
Notion にはまだネイティブの Webhook がありません。Notion から Claude を起動するには、次のいずれかを行います。
- Webhook アクションを使用する Notion の自動化ルールを使います(利用可能な場合)。
- または Zapier/Make などのサードパーティサービスを使用して、
https://<your-hostname>.ts.net/dc/webhook/notionに POST します。 - 署名検証を行う場合は、
NOTION_WEBHOOK_SECRETを設定します。
| 環境変数 | 説明 |
|---|---|
NOTION_ACCESS_TOKEN | 内部インテグレーショントークン |
NOTION_CLIENT_ID | OAuth クライアント ID |
NOTION_CLIENT_SECRET | OAuth クライアントシークレット |
NOTION_WEBHOOK_SECRET | Webhook 検証用シークレット |
Obsidian
Obsidian インテグレーションはファイルシステムの監視を通じて動作するため、Webhook は不要です。Claude は「Dear Claude」を含むファイルを保管庫内で監視し、同じファイルに追記して応答します。
- 保管庫への絶対パスを環境変数に設定します。
OBSIDIAN_VAULT_PATH=/Users/yourname/Documents/MyVault - これで完了です。任意の
.mdファイルに「Dear Claude, ...」と書いて保存します。
Claude の応答は、同じノートに追記されるコールアウトブロックとして表示されます。フロントマターには claude-status フィールド(processing → done / error)が設定されます。
仕組み:
- 保管庫内の
.mdファイルの変更を監視します。 .obsidian/、.trash/、およびドットファイルディレクトリ内のファイルは無視します。- キー入力のたびに起動しないよう、2 秒間のデバウンスを適用します。
- Wiki リンク参照(
[[other-note]])に対応しています。Claude が参照先を解決して読み込みます。 - 画像の埋め込みに対応しています。Claude が画像を確認して分析できます。
| 環境変数 | 説明 |
|---|---|
OBSIDIAN_VAULT_PATH | Obsidian 保管庫への絶対パス |
OBSIDIAN_WATCH_DEBOUNCE_MS | デバウンス遅延(ミリ秒、デフォルト:2000) |
使い方
起動形式
次の場所のいずれかに、スペースを含む**「Dear Claude」**(大文字と小文字は区別されません)と記述します。
- GitHub の issue/PR コメント
- Linear の issue の説明またはコメント
- Jira の issue の説明またはコメント
- GitLab の issue/MR の説明またはコメント
- Notion ページのコメント
- Obsidian の
.mdファイル
例
GitHub PR コメント:
Dear Claude, please review this code for bugs and security issues.
Claude が GitHub で応答:
Claude インスタンスを開始しました(インスタンス:
abc12345) リクエストを処理しています...
タスクが完了しました 2 件の問題が見つかりました:
user.ts:45に SQL インジェクションがありますapi.ts:102に入力検証がありません修正を含む PR #15 を作成しました。
インスタンスのオーケストレーション
Claude インスタンスは、並列作業のためにほかのインスタンスを起動できます。
Dear Claude, code tasks 1-5 in parallel. Each task should be a separate branch.
Claude は次の処理を行います。
- タスクを解析します
/api/spawnエンドポイント経由で子インスタンスを5つ起動します- 各子インスタンスは、それぞれ独自の Git ワークツリー(同じリポジトリ、異なるブランチ)で作業します
- 各子インスタンスは、作業が完了すると PR を作成します
- 親インスタンスは子インスタンスのステータスをポーリングします
すべての環境変数
# Server
DEAR_CLAUDE_PORT=3334
TAILSCALE_HOSTNAME= # Optional: auto-detected
# GitHub
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GITHUB_WEBHOOK_SECRET=
GITHUB_ACCESS_TOKEN=
# Linear
LINEAR_CLIENT_ID=
LINEAR_CLIENT_SECRET=
LINEAR_WEBHOOK_SECRET=
LINEAR_ACCESS_TOKEN=
# Jira Cloud
JIRA_DOMAIN=mycompany
[email protected]
JIRA_API_TOKEN=
JIRA_WEBHOOK_SECRET=
# GitLab
GITLAB_ACCESS_TOKEN=
GITLAB_WEBHOOK_SECRET=
GITLAB_URL= # Default: https://gitlab.com
# Notion
NOTION_CLIENT_ID=
NOTION_CLIENT_SECRET=
NOTION_WEBHOOK_SECRET=
NOTION_ACCESS_TOKEN=
# Obsidian
OBSIDIAN_VAULT_PATH=
OBSIDIAN_WATCH_DEBOUNCE_MS=2000
# Optional
GIPHY_API_KEY= # For fun GIF reactions in responses
CLI コマンド
# Start the server (standalone mode)
bun run src/index.ts start
# Start as MCP server (stdio, for Claude Code)
bun run src/index.ts start --mcp
# Check server and platform status
bun run src/index.ts status
# List instances
bun run src/index.ts instances
# Setup instructions for a platform
bun run src/index.ts setup <platform>
MCP ツール
Claude Code 内で MCP サーバーとして実行すると、次のツールを利用できます。
| ツール | 説明 |
|---|---|
list_platforms | 設定済みプラットフォームとそのステータスを一覧表示します |
list_instances | すべての Claude インスタンスを一覧表示します(ステータスで絞り込み可能) |
get_instance_status | 特定のインスタンスの詳細なステータスを取得します |
get_instance_messages | インスタンスの会話履歴を取得します |
kill_instance | 実行中のインスタンスを終了します |
get_running_instances | 現在実行中のインスタンス ID を一覧表示します |
spawn_instance | タスク用に新しい Claude インスタンスを起動します |
get_project_instances | プロジェクトグループ内のすべてのインスタンスを一覧表示します |
HTTP API
サーバーは localhost:3334 で REST エンドポイントも公開します。
| エンドポイント | メソッド | 説明 |
|---|---|---|
/health | GET | ヘルスチェックとプラットフォームのステータス |
/webhook/:platform | POST | Webhook 受信エンドポイント |
/api/instances | GET | インスタンスを一覧表示します(?project_id= フィルター) |
/api/instances/:id | GET | インスタンスの詳細と子インスタンスを取得します |
/api/instances/:id/kill | POST | 実行中のインスタンスを終了します |
/api/spawn | POST | プログラムから新しいインスタンスを起動します |
/api/platforms | GET | 設定済みプラットフォームを一覧表示します |
/setup/:platform | GET | OAuth フローを開始します |
/oauth/callback/:platform | GET | OAuth コールバック |
POST /api/spawn
{
"prompt": "Implement the login page",
"repo_url": "https://github.com/owner/repo",
"branch": "feature/login",
"base_branch": "main",
"parent_instance_id": "optional-parent-id",
"project_id": "optional-project-id"
}
アーキテクチャ
Webhooks / File Watcher
┌────────┐ ┌────────┐ ┌──────┐ ┌────────┐ ┌──────────┐ ┌────────┐
│ GitHub │ │ Linear │ │ Jira │ │ GitLab │ │ Obsidian │ │ Notion │
└───┬────┘ └───┬────┘ └──┬───┘ └───┬────┘ └────┬─────┘ └───┬────┘
│ │ │ │ │ │
└──────────┴────┬────┴─────────┴────────────┴────────────┘
│
▼
┌─────────────────────┐
│ Tailscale Funnel │
│ (Public HTTPS URL) │
└─────────┬───────────┘
│
▼
┌─────────────────────┐
│ dear-claude │
│ MCP Server │
│ │
│ • Trigger detection │
│ • Instance manager │
│ • Platform adapters │
│ • Spawn API │
│ • SQLite DB │
└─────────┬───────────┘
│
▼
┌─────────────────────┐
│ Claude Code │
│ Instances │
│ (Agent SDK) │
│ │
│ • Git worktrees │
│ • Cross-platform │
│ API access │
│ • Child spawning │
└─────────────────────┘
インスタンスのライフサイクル
PENDING → RUNNING → IDLE → (follow-up) → RUNNING → IDLE → ... → EXPIRED (7 days)
↘ COMPLETED
↘ FAILED
- PENDING:トリガーが検出され、インスタンスがキューに追加されました
- RUNNING:Claude Code が処理を実行中です
- IDLE:後続の「Dear Claude」メンションを待機しています
- COMPLETED:タスクが正常に完了しました
- FAILED:エラーが発生しました
- EXPIRED:7日間の TTL を超過し、インスタンスがクリーンアップされました
開発
# Install dependencies
bun install
# Run dev mode
bun run dev
# Type check
bunx tsc --noEmit
# Build
bun run build
# Run tests
bun test
トラブルシューティング
Tailscale
- 「Tailscale not running」:Tailscale アプリ(macOS)を開くか、
sudo systemctl start tailscaled && tailscale up(Linux)を実行してください。 - 「Funnel not enabled」:https://login.tailscale.com/admin/acls にアクセスして、Funnel 機能を追加してください。
- Funnel が消える:別の
tailscale serve/tailscale funnelコマンドによって上書きされた可能性があります。ヘルスチェックが10秒以内に自動修復します。tailscale serve status --jsonで確認してください。
Webhook
- トリガーされない:
bun run src/index.ts statusを実行して、サーバーが起動していることを確認してください。curl https://<your-hostname>.ts.net/dc/healthでテストしてください。 - 「Invalid signature」:プラットフォームの設定と環境変数の両方で、Webhook シークレットが一致していることを確認してください。
- GitHub:アプリは
issue_commentイベントを購読します。新しい PR をトリガーするにはコメントを投稿してください。PR の説明だけではトリガーされません。
OAuth
- トークンの有効期限切れ:
https://<your-hostname>.ts.net/dc/setup/<platform>に再度アクセスして、再認証してください。 - 401 エラー:保存されている OAuth トークンが取り消されている可能性があります。
data/dear-claude.dbから古いトークンを削除し、再認証してください。
インスタンス
- PENDING のまま止まる:Claude Code CLI(
claude)がインストールされ、PATH からアクセスできることを確認してください。 - 作業ディレクトリの問題:インスタンスは
data/workspaces/の下にワークスペースを作成します。書き込み権限があることを確認してください。
機能の証明
このリポジトリには、smithmark.yaml に smithmark の機能マニフェストがあり、tools.json に静的なツール一覧も含まれています。このマニフェストでは、この MCP サーバーの実行時にアクセスする外部対象の全容を、1 か所で宣言しています。
- ネットワーク送信:通信するすべてのホスト(
api.github.com、github.com、api.linear.app、linear.app、gitlab.com、*.atlassian.net、api.notion.com、api.giphy.com、api.anthropic.com)と、その理由。 - ファイルシステム:読み取りまたは書き込みを行うパス(
~/.dear-claude/**、data/**、~/.claude.json、デバッグログ)と、アクセスレベル。 - 実行:起動するサブプロセス(
claude、tailscale、which、open、sudo、pkill)。 - 環境変数とシークレット:使用する、認証情報に該当するすべての環境変数。種類(アクセストークン、クライアントシークレット、Webhook シークレット、API キー、秘密鍵)をタグ付けしています。
GitHub でリリースするたびに、.github/workflows/smithmark-attest.yml が公開 npm tarball に対する鍵不要の Sigstore アテステーションを生成します。GitHub の OIDC トークンを短期間有効な Fulcio 署名証明書と交換し、その証明書でアテステーションに署名して、署名を公開 Rekor 透明性ログに記録します。署名鍵もシークレットも不要です。生成された smithmark-attestation.sigstore.json は GitHub リリースに添付されます。
公開済みバージョンを検証するには、次のようにします。
smithmark verify [email protected] \
--certificate-identity "https://github.com/sns45/dear-claude/.github/workflows/smithmark-attest.yml@refs/tags/v1.1.0" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
(v1.1.0 を実際のリリースタグに置き換えてください)
このマニフェストは、このサーバーの機能範囲を示す正式な記録です。smithmark の lint は、意図的にホストを考慮せず、助言を目的としています。マニフェストの内容にかかわらず、すべての fetch() 呼び出し箇所とすべての exec を「未宣言」として報告するため、上記の送信先がすべて宣言されている場合でも、このコードベース(および実際の MCP サーバーすべて)で検出結果が表示されます。--strict またはホストを考慮する後継機能がリリースされるまでは、lint の出力を差分の検出ではなく、調査の手掛かりとして扱ってください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。