OpenCode CLIでのDiscourse MCPセットアップ

このガイドは、OpenCode CLIにDiscourse MCPをインストールするためのテスト済みの手順を提供します。別のMCPクライアントを使用している場合は、Codex CLIのセットアップガイドも作成しました。

LLMを活用しましょう! LLMは指示に従うのが非常に得意なので、セットアップを任せることができます。LLMにこのガイドのURLを示し、セットアップを行うように依頼してください。理解できない手順があれば、説明を求めることもできます。

前提条件

  • Node.jsがインストールされていること(24 LTS推奨)
  • OpenCode CLIがインストールされていること
  • 対象のDiscourseフォーラムへの一般ユーザーとしてのアクセス権(管理者である必要はありません!)

ここで3つの独立したコンポーネントがあることを認識しておくことが重要です。

  1. リモートのDiscourseフォーラム。データソースであり、アクションのターゲットとなります。

  1. Discourse MCPサーバー。これは、Discourseに接続し、OpenCodeがDiscourseと対話するためのAPIを提供する、オープンソースのローカルで実行されるツールです。これはNPXパッケージとしてインストールされ、OpenCode CLIによってオンデマンドで起動されます。

  1. OpenCode CLI。これは、MCPサーバーに接続し、MCP APIを介してDiscourseと対話するためのインターフェイスを提供するMCPクライアントです。


1. ユーザーAPIキーの生成

これによりDiscourseへの認証が行われ、APIキーを取得する方法となります。npxはコードをダウンロードして実行するため、従来の意味でインストールする必要があるものはありません。

ターミナルで以下を実行します。

npx @discourse/mcp@latest generate-user-api-key \
  --site =DISCOURSE-FORUM= \
  --save-to =PROFILE-PATH/=NAME=.json

例:

npx @discourse/mcp@latest generate-user-api-key \
  --site https://meta.discourse.org \
  --save-to ~/.config/opencode/discourse-profiles/meta.json

ブラウザの同意を承認し、暗号化されたデータをコピーして戻すと、ログイン能力の証明となり、APIキーが生成され、MCPサーバーで使用するために=PROFILE-PATH=に保存されます。

APIキーは、ユーザーとしてのアクセスレベルと同じレベルのアクセス権を持ちます。

2. OpenCode CLIへのMCPサーバーの追加

~/.config/opencode/opencode.jsoncにあるOpenCode設定ファイルを編集し、mcpセクションに次のエントリを追加します。

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    // ... 他のMCPサーバー ...
    "discourse-=NAME=-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@discourse/mcp@latest",
        "--profile",
        "=PROFILE-PATH/=NAME=.json",
      ],
      "enabled": true,
      "environment": {},
    },
  },
}

例:

"discourse-meta-mcp": {
  "type": "local",
  "command": [
    "npx",
    "-y",
    "@discourse/mcp@latest",
    "--profile",
    "/home/marcus/.config/opencode/discourse-profiles/meta.json"
  ],
  "enabled": true,
  "environment": {},
},

MCPサーバーは、OpenCodeを起動したときにnpxによってオンデマンドで起動されます。これは=PROFILE-PATH=のプロファイルを使用するように構成されており、デフォルトでは読み取り専用です。

3. OpenCode CLIの再起動

OpenCodeを完全に再起動して、設定をリロードし、MCPサーバーに接続します。

エラーなしで起動した場合、Discourse MCPサーバーは機能しています。OpenCodeにDiscourseフォーラムを参照するように依頼して、アクセスできるが公開されていない情報、特にあなたとして接続していることを確認できます。

4. 書き込み機能の有効化(オプション)

デフォルトでは、Discourse MCPサーバーは読み取り専用モードで実行されます。書き込み操作(投稿、トピック、ユーザーの作成など)を有効にするには、プロファイルJSONファイルに2つのフラグを追加する必要があります。

=PROFILE-PATH/=NAME=.jsonを編集し、auth_pairs配列の兄弟として"read_only": false"allow_writes": trueを追加します。

{
  "read_only": false,
  "allow_writes": true,
  "auth_pairs": [
    {
      "site": "=DISCOURSE-FORUM=",
      "user_api_key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "user_api_client_id": "discourse-mcp"
    }
  ]
}

例:

{
  "read_only": false,
  "allow_writes": true,
  "auth_pairs": [
    {
      "site": "https://meta.discourse.org",
      "user_api_key": "abc123def456ghi789jkl012mno345pqr",
      "user_api_client_id": "discourse-mcp"
    }
  ]
}

これらのフラグを追加した後、OpenCode CLIを再起動して変更を有効にします。MCPサーバーはこれで、以下のような書き込み操作を許可するようになります。

  • トピックの作成と更新
  • 投稿と返信の作成
  • 下書きの管理
  • ファイルのアップロード
  • カテゴリの作成(権限がある場合)
  • ユーザーの管理(管理者権限がある場合)

警告: 書き込み操作では、ユーザーアカウントの権限が使用されます。作成されたコンテンツは、手動で作成されたかのように表示されます。書き込み機能を責任を持って使用してください。

複数のDiscourseインスタンスの管理

複数のDiscourseフォーラムを追加するには、異なるプロファイルファイルとMCPサーバー名を使用してプロセスを繰り返します。

"discourse-meta-mcp": {
  "type": "local",
  "command": [
    "npx", "-y", "@discourse/mcp@latest",
    "--profile", "/home/username/.config/opencode/discourse-profiles/meta.json"
  ],
  "enabled": true,
  "environment": {},
},
"discourse-mycommunity-mcp": {
  "type": "local",
  "command": [
    "npx", "-y", "@discourse/mcp@latest",
    "--profile", "/home/username/.config/opencode/discourse-profiles/mycommunity.json"
  ],
  "enabled": true,
  "environment": {},
},

設定ファイル

2つの主要なファイルがあります。

  1. =OPENCODE-CONFIG= - ~/.config/opencode/opencode.jsoncにあるOpenCode CLI設定ファイルで、MCPサーバー設定が含まれます。

  2. =PROFILE-PATH= - Discourse MCPサーバーのプロファイルで、Discourseへの接続のためのAPIキーやその他の設定が含まれます。

OpenCode設定

MCPサーバーへの接続設定は=OPENCODE-CONFIG=(通常は~/.config/opencode/opencode.jsonc)にあります。

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "discourse-=NAME=-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@discourse/mcp@latest",
        "--profile",
        "=PROFILE-PATH/=NAME=.json",
      ],
      "enabled": true,
      "environment": {},
    },
  },
}

OpenCode MCP設定ドキュメント: OpenCodeドキュメント

Discourse MCP設定

Discourse MCPサーバー自体の設定は=PROFILE-PATH/=NAME=.json=にあります。

{
  "auth_pairs": [
    {
      "site": "=DISCOURSE-FORUM=",
      "user_api_key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "user_api_client_id": "discourse-mcp"
    }
  ]
}

Discourse MCP設定ドキュメント: GitHub - discourse/discourse-mcp

セキュリティに関するベストプラクティス

推奨される対策は次のとおりです。

  1. プロファイルファイルを専用のディレクトリ(例: ~/.config/opencode/discourse-profiles/)に保存する
  2. ドットファイル(dotfiles)をバージョン管理している場合は、このディレクトリを.gitignoreに追加する
  3. プロファイルファイルにはわかりやすい名前を付ける(例: meta.json, mycommunity.json
  4. APIキーを秘密に保つ - これらはユーザーアカウントと同じアクセスレベルを持ちます

トラブルシューティング

  • 接続の問題: opencode.jsoncのプロファイルパスが正しいことと、ファイルが存在することを確認してください
  • 認証エラー: Discourseのユーザー設定でAPIキーが取り消されていないか確認してください
  • 権限エラー: Discourseインスタンスで必要な権限があることを確認してください
  • 再起動が必要: opencode.jsoncの変更を有効にするには、OpenCode CLIを再起動する必要があります
「いいね!」 3