Skip to content

MCP設定

モデルコンテキストプロトコル(MCP)を使用すると、Sidianが外部のツールやサービスに接続し、AIの能力をコード編集以外にも拡張できます。このガイドでは、MCPサーバーの設定と管理方法について説明します。

MCPとは?

MCPは、AIアシスタントが外部のツールやデータソースに安全に接続できるようにするための標準化されたプロトコルです。

機能

  • ファイルシステム操作
  • Gitリポジトリ管理
  • データベースクエリ
  • API統合
  • メモリとコンテキストの保存

利点

  • 安全なサンドボックス実行
  • 標準化されたプロトコル
  • 拡張可能なアーキテクチャ
  • コミュニティ主導のサーバー
  • 簡単な設定

設定ファイルの場所

Sidianは以下の場所からMCP設定を読み込みます。

設定ファイル

  • Windows: C:\Users\{ユーザー名}\.sidian\mcp.json
  • macOS: ~/.sidian/mcp.json
  • Linux: ~/.sidian/mcp.json

基本的な設定

MCP設定ファイルは、以下の構造を持つJSON形式を使用します。

json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/your/workspace"],
      "env": {}
    },
    "git": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-git", "--repository", "/path/to/your/git/repository"],
      "env": {}
    },
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"],
      "env": {}
    }
  }
}

一般的なMCPサーバー

以下は、一般的に使用されるMCPサーバーとその設定例です。

ファイルシステムサーバー

ファイルの読み取り、書き込み、管理のためのファイルシステムアクセスを提供します。

json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/your/workspace"],
      "env": {}
    }
  }
}

Gitサーバー

Git操作とリポジトリ管理を可能にします。

json
{
  "mcpServers": {
    "git": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-git", "--repository", "/path/to/your/git/repo"],
      "env": {}
    }
  }
}

メモリサーバー

AIとの対話のために永続的なメモリを提供します。

json
{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"],
      "env": {}
    }
  }
}

データベースサーバー

クエリや操作のためにデータベースに接続します。

json
{
  "mcpServers": {
    "brave-search": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-brave-search"],
      "env": {
        "BRAVE_API_KEY": "your-brave-api-key-here"
      }
    }
  }
}

高度な設定

環境変数

MCPサーバーの環境変数を設定します。

json
{
  "mcpServers": {
    "custom-server": {
      "command": "node",
      "args": ["/path/to/custom-server.js"],
      "env": {
        "API_KEY": "your-api-key",
        "DEBUG": "true",
        "TIMEOUT": "30000"
      }
    }
  }
}

サーバーオプション

サーバー固有のオプションを設定します。

json
{
  "mcpServers": {
    "web-server": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-web"],
      "options": {
        "timeout": 30000,
        "retries": 3,
        "logLevel": "info"
      }
    }
  }
}

条件付き設定

環境に基づいて異なる設定を使用します。

json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "        "${SIDIAN_PROJECT_ROOT:-/default/path}""
      ]
    }
  }
}

セキュリティに関する考慮事項

サンドボックス化

  • MCPサーバーは隔離されたプロセスで実行されます
  • システムリソースへのアクセスが制限されます
  • 設定可能な権限境界
  • すべての操作に対する監査ロギング

アクセス制御

  • 許可されたディレクトリとファイルをホワイトリストに登録
  • ネットワークアクセスを制限
  • コマンド実行を制限
  • リソース使用状況を監視

ベストプラクティス

  • 必要最小限の権限を使用する
  • MCPサーバーパッケージを定期的に更新する
  • 不審なアクティビティがないかサーバーログを監視する
  • 機密データには環境変数を使用する

トラブルシューティング

サーバーが起動しない

  • Node.jsがインストールされ、アクセス可能か確認する
  • サーバーパッケージがインストールされているか確認する: npm list -g
  • MCP設定ファイルの構文を確認する
  • 特定のエラーメッセージについてサーバーログを確認する
  • ターミナルでサーバーコマンドを手動で実行してみる

権限エラー

  • Sidianが設定されたディレクトリへの読み取り/書き込みアクセス権を持っていることを確認する
  • プロジェクトフォルダのファイルシステム権限を確認する
  • 必要に応じてSidianを管理者として実行する(Windows)
  • MCP設定ファイルが読み取り可能であることを確認する

サーバーがクラッシュし続ける

  • MCPサーバーパッケージを最新バージョンに更新する
  • 競合するNode.jsのバージョンがないか確認する
  • 設定でタイムアウト値を増やす
  • システムリソース(CPU、メモリ)を監視する
  • サーバーログでエラーパターンを確認する

パフォーマンスの問題

  • アクティブなMCPサーバーの数を減らす
  • サーバー設定を最適化する
  • リモートサーバーの代わりにローカルサーバーを使用する
  • リモートサーバーのネットワーク遅延を監視する
  • キャッシング戦略を検討する

カスタムMCPサーバー

カスタムサーバーの作成

特定のニーズに合わせてカスタムMCPサーバーを作成できます。

javascript
// custom-server.js
const { Server } = require('@modelcontextprotocol/sdk/server/index.js');
const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio.js');

const server = new Server({
  name: 'custom-server',
  version: '1.0.0'
});

// ここにカスタムツールとリソースを追加します
server.setRequestHandler('tools/list', async () => {
  return {
    tools: [
      {
        name: 'custom-tool',
        description: 'A custom tool for specific operations',
        inputSchema: {
          type: 'object',
          properties: {
            input: { type: 'string' }
          }
        }
      }
    ]
  };
});

const transport = new StdioServerTransport();
server.connect(transport);

カスタムサーバーの設定

json
{
  "mcpServers": {
    "custom": {
      "command": "node",
      "args": ["/path/to/custom-server.js"]
    }
  }
}

監視とロギング

サーバーステータス

SidianでMCPサーバーのステータスを監視します。

  • 設定でサーバーの接続ステータスを確認する
  • 出力パネルでサーバーログを表示する
  • リソース使用状況を監視する
  • エラー率とパフォーマンスを追跡する

デバッグ

トラブルシューティングのためにデバッグロギングを有効にします。

json
{
  "mcpServers": {
    "debug-server": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path"],
      "env": {
        "DEBUG": "*",
        "LOG_LEVEL": "debug"
      }
    }
  }
}

MCP設定により、SidianのAI能力を大幅に拡張できます。まずは基本的なサーバーから始め、必要に応じて徐々により複雑な設定を追加していきましょう。