Zenn
🐡

Claude Desktopで自前のMCPを導入してみよう。Claude APIを使った占いツール作成入門

に公開

今回はClaude Desktopの機能拡張として利用できるMCPについて、実際に手を動かしながら解説します。具体的には、Claude APIを活用した「今月の運勢を占う」ツールを作成して、Claude Desktopに組み込む方法を紹介します。

MCPサーバーのセットアップ

MCPサーバーを作るためには、まずプロジェクトをセットアップする必要があります。ここでは、Zennの記事で紹介されている方法を簡単に紹介します。詳細な手順については、元記事をご覧ください。

基本的なセットアップ手順

  1. Node.jsとnpmが必要です(インストール済みを前提とします)
  2. 次のコマンドでプロジェクトを作成します:
    npx @modelcontextprotocol/create-server your-mcp-name
    
  3. プロジェクト作成時に質問に答えていくと、自動的にClaude.appの設定に登録されます
  4. SDKを最新版に更新します:
    npm install @modelcontextprotocol/sdk@latest
    npm install zod
    
  5. 生成されたコードを最新SDKに対応させる必要があります(詳細は元記事参照)

この設定が完了したら、次のコマンドでビルドします:

npm run build

Claude Desktopを起動または再読み込みすると、MCPサーバーが読み込まれます。これで基本的なセットアップは完了です。

準備するもの

  • Node.js環境
  • Claude Desktopアプリケーション
  • Anthropic API キー(Claude APIを利用するため)

占いツールの実装

セットアップしたMCPプロジェクトに、占いツールの機能を実装していきます。まずは、MCPツールの基本的な構造を理解するために、雛形から見ていきましょう。

/**
 * 占いツールの登録
 * Claude APIを利用し、今月の運勢を占う
 */
server.tool(
    "get-fortune",
    "Get fortune for the month",
    {
        birthMonth: z.number().describe("Your birth month"),
    },
    async ({ birthMonth})  => {
        // ここに処理を実装
    }
)

この雛形をベースに、実際にClaude APIを呼び出して占い結果を返す完全な実装を見ていきましょう。

server.tool(
    "get-fortune",
    "Get fortune for the month",
    {
        birthMonth: z.number().min(1).max(12).describe("Your birth month"),
    },
    async ({ birthMonth }) => {
        try {
            // Anthropicクライアントの初期化
            const anthropic = new Anthropic({
                apiKey: process.env.CLAUDE_API_KEY,
            });

            // 月の名前を取得
            const monthNames = [
                "January", "February", "March", "April", "May", "June",
                "July", "August", "September", "October", "November", "December"
            ];
            const monthName = monthNames[birthMonth - 1];

            // Claudeへのプロンプト作成
            const message = await anthropic.messages.create({
                model: "claude-3-haiku-20240307",
                max_tokens: 500,
                temperature: 0.7,
                system: "あなたは占い師です。誕生月から今月の運勢を占います。運勢は「全体運」「金運」「恋愛運」「健康運」の4つのカテゴリで、それぞれ★5段階で評価し、簡単な説明を日本語で付けてください。",
                messages: [
                    {
                        role: "user",
                        content: `誕生月は${monthName}${birthMonth}月)です。今月の運勢を占ってください。`
                    }
                ]
            });

            // 返答を取得
            const contentBlock = message.content[0];
            const fortuneText = contentBlock.type === 'text' 
                ? contentBlock.text 
                : '占いの結果を取得できませんでした。';

            return {
                content: [
                    {
                        type: "text",
                        text: fortuneText,
                    },
                ],
            };
        } catch (error) {
            console.error("Error getting fortune:", error);
            return {
                content: [
                    {
                        type: "text",
                        text: "占いの取得中にエラーが発生しました。申し訳ありませんが、後ほど再度お試しください。",
                    },
                ],
            };
        }
    },
);

この実装では、以下のことを行っています:

  1. ユーザーから1〜12の数値(誕生月)を入力として受け取る
  2. Anthropic APIクライアントを初期化
  3. 受け取った数値から月の名前(January〜December)を取得
  4. Claude APIにリクエストを送信し、占い結果を取得
    • システムプロンプトで占い師としての振る舞いを指定
    • ユーザーメッセージとして誕生月を伝える
  5. 取得した結果をフォーマットして返却
  6. エラーハンドリングを実装

Claude Desktopへの導入方法

実装したMCPツールをClaude Desktopで利用するには、設定ファイルに情報を追加する必要があります。

環境変数の設定

claude_desktop_config.jsonファイルにMCPの情報と環境変数を設定します。@modelcontextprotocol/create-serverを使った設定であれば、すでにcommandargsは設定されているはずです。その場合は、env部分を追加してください。

{
    "mcpServers": {
      "fortune": {
          "command": "node",
          "args": [
              "/Users/your-username/path/to/your/mcp-fortune/build/index.js"
          ],
          "env": {
            "CLAUDE_API_KEY": "sk-ant-api03-xxxxxx"
          }
      }
    }
}

この設定では:

  • mcpServersの下にfortuneという名前でMCPを登録
  • commandargsで実行コマンドとその引数を指定(ビルドした.jsファイルへのパス)
  • envセクションで必要な環境変数(この場合はCLAUDE_API_KEY)を設定

設定ファイルを更新したら、Claude Desktopアプリを再起動して変更を反映させる必要があります。

デバッグとトラブルシューティング

MCPツールで問題が発生した場合は、ログファイルを確認することで原因を特定できます:

% tail ~/Library/Logs/Claude/mcp-server-fortune.log -f

ログファイル名はmcp-server-{mcp-name}.logという形式で、mcp-nameclaude_desktop_config.jsonで定義した名前(この例ではfortune)になります。

動作確認とリロード

MCPをビルドした後、Claude Desktopアプリでは完全な再起動は必要ありませんが、F5キーを押して画面をリロードする必要があります。リロードするまでは新しく追加したツールは表示されません。

実際に使ってみる

Claude Desktopで占いツールを使ってみるには、明示的にツール名を指定するのが確実です。例えば、「get-fortuneツールを使って、私の運勢を占ってください。誕生月は4月です」のように伝えると、MCPを通じて占いツールが実行されます。

まとめ

今回は、Claude APIを利用した占いツールをMCP形式で実装し、Claude Desktopに導入する方法を紹介しました。この仕組みを応用すれば、様々な外部APIと連携したツールを作成できます。

注意点として:

  1. 環境変数はclaude_desktop_config.jsonに設定する
  2. 設定ファイル更新後はClaude Desktopの再起動が必要
  3. MCPビルド後はF5でのリロードが必要
  4. トラブル時はログファイルを確認する

より詳細なMCPサーバーの作成方法については、ぜひZennの記事を参照してください。基本的な設定から実装例まで詳しく解説されています。

MCPを使うことで、Claudeの能力を大幅に拡張できます。ぜひ自分だけのオリジナルツールを作って、Claude Desktopをもっと便利に使いこなしてみてください!

デジタルキューブ

Discussion

ログインするとコメントできます