wandfuldays

Atlassian Rovo MCP を複数案件で使い分ける|mcp-remote のトークンが上書きされる問題

2026-08-27

素直に設定すると案件を1つしか繋げません。MCP_REMOTE_CONFIG_DIR とポートを分ける理由を原因から説明します。

こんにちは、wandです!

複数の案件を並行して触っていると、案件ごとに別々の Atlassian サイト (Jira / Confluence) を使うことになります。
そこへ Atlassian Rovo MCP サーバーを繋ごうとして、つまずきました。

素直に設定すると、案件を1つしか繋げません。
正確には、別の案件に繋ぎ直すたびに、前の案件が切れます。

原因は1つではなく、2つが重なっています
この記事では先に「なぜ共存できないのか」を分解して、そのうえで案件ごとに何を分ければよいのかを書きます。

記事中の案件名はすべて project1 / project2 に置き換えています。
設定ファイルは Claude Code.mcp.json で、コマンドは pnpm dlx で書いています。
mcp-remote は手元で 0.2.5 まで使っていますが、
後半で中身を並べているディレクトリは 0.1.37 のときのものです。
2026年8月時点の情報です。

素直に設定すると、案件を1つしか繋げない

Rovo MCP サーバーに繋ぐときは、あいだに mcp-remote を挟みます。
OAuth の受け取り (ブラウザで同意させて、返ってきたトークンを保存しておくところ) を
代わりにやってくれる道具です。

まず、何も考えずに書くとこうなります。

{
  "mcpServers": {
    "atlassian": {
      "command": "pnpm",
      "args": [
        "dlx", "mcp-remote",
        "https://mcp.atlassian.com/v1/mcp",
        "--transport", "http-first"
      ]
    }
  }
}

これを案件ごとのリポジトリに置けば、案件ごとに使い分けられる…と思うところですが、動きません。
project1 に繋ぐと project2 が切れ、project2 に繋ぎ直すと project1 が切れます。

原因を1つずつ見ていきます。

原因1: トークンの置き場が、接続先 URL だけで決まる

mcp-remote は OAuth のトークンを ~/.mcp-auth/mcp-remote-{バージョン}/ に置きます。
問題はそのファイル名です。

別々の案件のために分けた2つのディレクトリの中身を並べてみます。

~/.mcp-auth-project1/mcp-remote-0.1.37/
  01910c24c5f2edcaf999bd1eaaeaeee8_client_info.json
  01910c24c5f2edcaf999bd1eaaeaeee8_code_verifier.txt
  01910c24c5f2edcaf999bd1eaaeaeee8_tokens.json

~/.mcp-auth-project2/mcp-remote-0.1.37/
  01910c24c5f2edcaf999bd1eaaeaeee8_client_info.json
  01910c24c5f2edcaf999bd1eaaeaeee8_code_verifier.txt
  01910c24c5f2edcaf999bd1eaaeaeee8_lock.json
  01910c24c5f2edcaf999bd1eaaeaeee8_tokens.json

ファイルの数は違いますが (_lock.json は認証のときに作られ、落ち方によっては残ります)、
先頭のハッシュが1文字も違いません。

このハッシュは接続先 URL から作られるもので、案件は名前に入りません。
Rovo MCP の URL は https://mcp.atlassian.com/v1/mcp の1つだけなので、
どの案件で認証しても、同じ1つのファイルを取り合うことになります

片方の案件には mcp-remote のバージョンディレクトリが6世代ぶん残っていましたが、
そのどこを覗いても現れたハッシュは1種類だけでした。

つまり、設定ディレクトリを分けない限り、後からログインした案件が、もう一方のトークンを上書きします

原因2: サイト選択の画面は、サイトを1つしか選ばせない

これだけなら「トークンが1つでも、複数サイトを見られればいいのでは」と思えます。
ところが認証の途中で出るサイト選択の画面が、それを許しません。

Atlassian のサイト選択の画面。Install app on で「Choose a site」からサイトを1つだけ選ぶ形になっている
サイト選択の画面。サイトが1つしか選べず、注意書きにも「選んだサイトの中でしか動けない」と書かれている

Install app on で「Choose a site」からサイトを1つ選ぶ形になっていて、その下にはっきり書いてあります。

This app is configured with resource restrictions.
It will only be able to act on your behalf within the specific site you select above.

トークン1本 = サイト1つです。

原因1と組み合わせると、こうなります。

起きること
原因1トークンの置き場が接続先 URL だけで決まる (案件で分かれない)
原因21本のトークンは1サイトしか見られない
重なると片方に繋ぎ直すたびに、もう片方が切れる

どちらか片方だけなら困りませんでした。2つ揃ってはじめて詰みます。

対処: 案件ごとに3つを分ける

案件のリポジトリごとに .mcp.json を置き、3つを案件ごとに変えます

分けるもの効き目
MCP_REMOTE_CONFIG_DIRトークンの置き場が分かれ、上書きが起きなくなる (原因1)
コールバックポート同時に立てても衝突しない。ブラウザでどの案件か見分けられる
MCP サーバー名ツール一覧で、どの案件のものか分かる

project1 のリポジトリに置く .mcp.json です。

{
  "mcpServers": {
    "atlassian-project1": {
      "command": "pnpm",
      "args": [
        "dlx", "mcp-remote",
        "https://mcp.atlassian.com/v1/mcp",
        "3434",
        "--transport", "http-first"
      ],
      "env": { "MCP_REMOTE_CONFIG_DIR": "${HOME}/.mcp-auth-project1" }
    }
  }
}

project2 は、同じ形で3か所とも変えます。

{
  "mcpServers": {
    "atlassian-project2": {
      "command": "pnpm",
      "args": [
        "dlx", "mcp-remote",
        "https://mcp.atlassian.com/v1/mcp",
        "5544",
        "--transport", "http-first"
      ],
      "env": { "MCP_REMOTE_CONFIG_DIR": "${HOME}/.mcp-auth-project2" }
    }
  }
}

mcp-remote の引数のうち、URL の次に置いた数字がコールバックポートです。

3か所すべてを揃えて変えてください。
サーバー名だけ変えて MCP_REMOTE_CONFIG_DIR を据え置くと、名前は分かれているのにトークンは取り合ったままになります。
見た目が分かれているぶん、かえって原因に気づきにくくなります。

ポートを離すと、ブラウザでどの案件か分かる

ポートを分ける理由は、衝突を避けるためだけではありません。もう1つのほうが効きます。

認証を始めると、mcp-remote はまず認可画面を既定のブラウザに開きます
(サイトを選ぶのは、これを承認したあとです)。

この画面には、案件名もリポジトリ名も出てきません。
複数の案件を並行して立ち上げていると、「いま承認しようとしているのはどっちだったか」が分からなくなります。

手がかりは1つだけあります。

MCP CLI Proxy の認可画面。Redirect URIs に http://localhost:5544/oauth/callback と表示されている
Redirect URIs のポート番号が、いまどの案件の認証をしているかを見分ける唯一の手がかりになる

Redirect URIs に出ているポート番号です。

ポートは指定しなくても動きます。mcp-remote が自動で選び、塞がっていれば空いているものを拾うので、
同時に立てても衝突はしません。

ただし自動任せだと、画面に出た番号を見てもどの案件のものか分かりません。
自分で決めた番号でなければ、覚えようがないからです。

そこで案件ごとに 3434 5544 のように離して指定しておきます。
3433 と 3434 のように隣り合った番号では、画面に出た数字を見ても迷います。
覚えやすさで選んでかまいません。見分けるための番号です。

よくある質問

Q. mcp-remote を上げたら、また認証し直しですか?

はい。設定ディレクトリが mcp-remote-0.2.5/ のようにバージョンで切られているので、
上げると新しいディレクトリができ、そこには過去のトークンがありません。

手元の案件ではバージョンディレクトリが6世代ぶん溜まっていました
(0.1.37 / 0.1.43 / 0.1.49 / 0.2.1 / 0.2.4 / 0.2.5)。

mcp-remote は動きの速い道具です。
2026年8月26日から27日にかけての約33時間で、0.2.4 から 0.6.0 まで11回上がりました (日本時間)。
世代が溜まるのが早いのはそのためです。
バージョンで切るこの置き場所は将来変わりうるので、繋がらなくなったらまずここを覗いてみてください。

Q. 1本のトークンで複数サイトを見られませんか?

サイト選択の画面がサイトを1つしか選ばせないので、いまのところできません。
サイトの数だけトークンを持ち、置き場を分けるのが素直です。

Q. 案件を増やすときは何をコピーすればよいですか?

.mcp.json を写して、サーバー名・ポート・MCP_REMOTE_CONFIG_DIR の3か所を書き換えるだけです。
ポートは既に使っている番号から離した値にしてください。

まとめ

Atlassian Rovo MCP サーバーを複数案件で使い分けるときの要点です。

分けるもの分けないとどうなるか
MCP_REMOTE_CONFIG_DIR後からログインした案件が、もう一方のトークンを上書きする
コールバックポート同時に立てると衝突し、ブラウザでどの案件の認証か分からない
MCP サーバー名ツール一覧でどの案件のものか区別できない

MCP_REMOTE_CONFIG_DIR を分ける」だけなら1行ですが、
なぜ分けないと壊れるのかが分かっていないと、サーバー名だけ変えて満足してしまいます。
効いているのは「トークンの置き場が URL だけで決まる」ことと「1トークン1サイト」の2つです。

設定ファイルは1つ写して3か所を書き換えるだけなので、案件が2つになった時点で分けておくのがおすすめです。
先に分けておけば、繋ぎ直すたびに認証をやり直す時間がまるごと要りません。

なお mcp-remote の詳しい引数はnpm のパッケージページにまとまっています。
MCP まわりの道具は動きが速いので、うまくいかないときは手元のバージョンを確かめてみてください。


wand

「wand」は魔法の杖を意味します。魔法のようにさまざまなものを自分の手で生み出せるようになりたい、そんな思いを込めました。 ハンドメイド、家庭菜園、DIY、プログラミング等、「つくる」をテーマに色々なことをしていきたいと思っています。 Amazonのアソシエイトとして、wand は適格販売により収入を得ています。 GitHub: https://github.com/wand2016