Translate

2025年4月14日月曜日

AWS Documentation MCP Server をドキュメント通り設定したらエラーが出た

 みなもすなるMCPなるものを..ということでAWS Documentation MCP Serverを試してみることにした。

参考にしたサイトはここ


実際にやってみた手順:

  • Claude DesktopをWindows11上にインストール
  • Astralサイトに書かれている通り、Windows Power Shell上からpowershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"を実行する
  • uvxコマンドのパスを調べる (例 C:\\Users\\hogehoge\\.local\\bin\\uvx
  • Claude Desktopを起動
  • 左上3本線>ファイル>設定
  • 開発者>構成を編集
  • claude_desktop_config.jsonを以下のように編集:

{
  "mcpServers": {
    "awslabs.aws-documentation-mcp-server": {
        "command": "C:\\Users\\hogehoge\\.local\\bin\\uvx",
        "args": ["awslabs.aws-documentation-mcp-server@latest"],
        "env": {
          "FASTMCP_LOG_LEVEL": "ERROR"
        },
        "disabled": false,
        "autoApprove": []
    }
  }
}

  • Claude Desktopを完全に終了(Windowsバーの山形アイコンから*をえらんでclose)
  • Calude Desktopを再起動

 

上記手順を試すと以下のようなエラーメッセージが出ました:

 MCP awslabs.aws-documentation-mcp-server:Unexpected token 'T', "The execut"...is not valid JSON
MCP awslabs.aws-documentation-mcp-server:Unexpected token 'T', "The follow"...is not valid JSON
MCP awslabs.aws-documentation-mcp-server:No number after minutes sign in JSON at position 1 (line 1 column 2)
MCP awslabs.aws-documentation-mcp-server:Unexpected token 'C', "Consider u"...is not valid JSON
MCP awslabs.aws-documentation-mcp-server:Server disconnected. For troubleshooting guidance, please visit our debugging documentation

 


 そこでPowerShellからuvx awslabs-aws-documentation-mcp-server@latest --helpを実行すると、以下のメッセージが表示されました:


Installed 34 packages in 355ms
The executable `awslabs-aws-documentation-mcp-server` was not found.
warning: An executable named `awslabs-aws-documentation-mcp-server` is not provided by package `awslabs-aws-documentation-mcp-server`.
The following executables are provided by `awslabs-aws-documentation-mcp-server`:
- awslabs.aws-documentation-mcp-server.exe
Consider using `uvx --from awslabs-aws-documentation-mcp-server <EXECUTABLE_NAME>` instead.

 つまりawslabs.aws-documentation-mcp-server.exeを引数に指定していないぞ、ということのようでした。で、

  • claude_desktop_config.jsonを以下のようにサイド編集:

{
  "mcpServers": {
    "awslabs.aws-documentation-mcp-server": {
    "awslabs.aws-documentation-mcp-server": {
        "command": "C:\\Users\\hogehoge\\.local\\bin\\uvx",
        "args": ["--from", "awslabs-aws-documentation-mcp-server", "awslabs.aws-documentation-mcp-server.exe"],
        "env": {
          "FASTMCP_LOG_LEVEL": "ERROR"
        },
        "disabled": false,
        "autoApprove": []
    }
  }
}

完全終了&Claude Desktop再起動すると以下のように動作しました。

 

 


 

ご参考まで。

なおjson内のenvは環境変数なので覚えておくと(Proxyとか)いいかも。

 

このサンプルから推察するにMCPは問題領域をDIできるイメージなんだろうなあ.. 

こりゃSAPやOracleERPなんかはMCP対応してくるな..社内システムや社内のDBの前にMCPサーバを噛ませてClaude Desktopにインジェクトさせれば、その知識領域で回答できるAIアシスタントのできあがりだ。

Function Callingを直接触らせるわけにいかんだろうから、考え出されたのだろうなあ..あたまいい。

 

案の定 DifyのロードマップにもMCP in Difyがplannedになってるし(2025/4/14 11:11現在)

 

 

2025年4月2日水曜日

Gemini 2.5 Pro Expのコード把握能力を試す

Xに流れてきた某コードの説明をGemini2.5 Pro Expに投げてみました。

 

入力したプロンプト

 

 

このコードを説明して:

```shell

# 2025-04-01 TEAM TESO IS BACK

# Linux LPE

# . <(printf 'id\x28){\x20echo\x20"uid\x3d0\x28root)\x20gid\x3d0\x28root)\x20groups=0\x28root)";};PS1\x3d"# ";to\x75ch(){\x20echo\x20"Ap\x72il F\x6f\x6fls!";}')

CY="\033[1;33m" # yellow

CC="\033[1;36m" # cyan

CDG="\033[0;32m" # green

CDY="\033[0;33m" # yellow

CDM="\033[0;35m"

CDR="\033[0;31m" # red

CN="\033[0m"    # none

echo -e "${CC}>>> 7350pipe Linux LPE >3.10.0-2260 (except 5.23.0-130..5.25.0)${CN}"

echo -en "[${CDG}*${CN}] Finding ${CDY}offset "

eval "$(base64 -d <<<Zm9yIHggaW4gezAuLjR9OyBkbyBlY2hvIC1uIC47IHNsZWVwIDAuMzsgZG9uZQ==)"

echo -en "${CDG}FOUND @+0x$$ ${CDY}(${CY}VULNERABLE${CDY})${CN}\n[${CDG}*${CN}] ${CDM}Exploiting..."

eval "$(base64 -d <<<Zm9yIHggaW4gezAuLjEwfTsgZG8gZWNobyAtbiAuOyBzbGVlcCAwLjM7IGRvbmU=)"

# Running the payload :>

echo -e "${CN}\n[${CDG}X${CN}] ${CDR}b00m. Entering root shell${CN}";sleep 1

eval "$(printf 'id\x28){\x20echo\x20"uid\x3d0\x28root)\x20gid\x3d0\x28root)\x20groups=0\x28root)";};PS1\x3d"# ";to\x75ch(){\x20echo\x20"Ap\x72il F\x6f\x6fls!";}')"

```

 この質問の回答がこちら:

このシェルスクリプトは、一見すると Linux システムのローカル権限昇格(LPE: Local Privilege Escalation)を行うエクスプロイト(攻撃コード)のように見せかけていますが、実際にはエイプリルフールのジョークスクリプトである可能性が非常に高いです。

以下にコードの各部分を解説します。

  1. コメント:

    • # 2025-04-01 TEAM TESO IS BACK: スクリプトの日付がエイプリルフール(4月1日)になっており、ジョークであることを示唆しています。"TEAM TESO" は過去に存在したクラッキンググループですが、これも文脈の一部として使われている可能性があります。
    • # Linux LPE: スクリプトの目的が Linux のローカル権限昇格であることを示しています。
    • # . <(printf ...): この行は後で eval されるコードと似ており、ペイロード(攻撃の実体部分)のように見せかけています。
  2. カラーコード定義:

    • CY, CC, CDG, CDY, CDM, CDR, CN: これらはターミナルの文字色を変更するための ANSI エスケープシーケンスを格納する変数です。スクリプトの出力をカラフルにして、より「それっぽく」見せるために使われます。
  3. 情報表示:

    • echo -e "${CC}>>> 7350pipe Linux LPE ...": スクリプトが特定の Linux カーネルバージョン範囲(3.10.0-2260より大きく、5.23.0-130から5.25.0を除く)を対象とした "7350pipe" という LPE 脆弱性を悪用すると主張しています。この名前やバージョン範囲は、既知の脆弱性(例えば CVE-2022-0847 "Dirty Pipe")をもじったものか、架空のものである可能性があります。
    • echo -en "[*] Finding offset ": 脆弱性を利用するための「オフセット」を探しているというメッセージを表示します。
  4. 処理中の演出:

    • eval "$(base64 -d <<<Zm9y...)": Base64 でエンコードされた文字列 Zm9y... をデコードし、その結果を eval コマンドで実行します。
      • 最初の Base64 文字列 (Zm9y...ZG9uZQ==) はデコードすると for x in {0..4}; do echo -n .; sleep 0.3; done となります。これは 0.3 秒ごとにドット (.) を 5 回表示するだけのループで、何か処理が進んでいるように見せかけます。
    • echo -en "${CDG}FOUND @+0x$$ ...": オフセットが見つかり、システムが脆弱であると表示します。$$ は現在のシェルのプロセスIDに置き換えられますが、これは実際のメモリオフセットではなく、単なる飾りです。
    • eval "$(base64 -d <<<Zm9y...ZG9uZQ==)": 2 番目の Base64 文字列 (Zm9y...IGRvbmU=) はデコードすると for x in {0..10}; do echo -n .; sleep 0.3; done となります。これも同様に、ドットを 11 回表示してエクスプロイトが進行中であるかのように見せかけます。
  5. 偽のペイロード実行:

    • echo -e "... b00m. Entering root shell"; sleep 1: "b00m" というメッセージと共に、root シェルに入ることを宣言します。
    • eval "$(printf 'id\x28){...}')": ここがこのスクリプトの核心(ジョークの部分)です。
      • printf 'id\x28){...}': 16進数エスケープシーケンス (\xNN) を含む文字列を解釈します。
      • 解釈後の文字列: id(){ echo "uid=0(root) gid=0(root) groups=0(root)";};PS1="# ";touch(){ echo "April Fools!";}
      • eval はこの文字列をコマンドとして実行します。これにより、以下のことが起こります。
        • id(){ ... };: id という名前のシェル関数を定義します。これにより、ターミナルで id コマンドを実行すると、実際のユーザーIDを確認する代わりに、常に uid=0(root) gid=0(root) groups=0(root) という文字列が表示されるようになります。あたかも root 権限を取得したかのように見せかけます。
        • PS1="# ";: シェルのプロンプト(通常は $>)を、root ユーザーのデフォルトプロンプトである # に変更します。これも root になったかのように見せるための演出です。
        • touch(){ echo "April Fools!"; };: touch という名前のシェル関数を定義します。これにより、touch コマンド(通常はファイルのタイムスタンプを更新したり、空ファイルを作成したりする)を実行すると、コマンドの代わりに April Fools! というメッセージが表示されます。これがジョークであることの決定的な証拠です。

結論:

このスクリプトは、実際の権限昇格は行いません。巧妙なトリックを使って、ユーザーが root 権限を取得したかのように見せかけるだけです。id コマンドの結果を偽装し、シェルのプロンプトを変更することで、ユーザーを騙そうとしています。最後の touch コマンドの挙動と冒頭のコメント日付が、これがエイプリルフールのジョークであることを強く示唆しています。

注意:

このスクリプト自体は(見た限りでは)無害なジョークですが、インターネット上で見つけた見慣れないスクリプト、特に eval コマンドを含むものを安易に実行するのは非常に危険です。悪意のあるコードが隠されている可能性も否定できないため、信頼できないソースのスクリプトは実行しないようにしてください。

 

 一見やばそうなコードに見えて、実はエイプリルフールねたであることを一発で見抜きました。

 

 .. Gemini 2. 5 Pro Exp、恐ろしい子!

 

 

 

AWS Documentation MCP Server をドキュメント通り設定したらエラーが出た

 みなもすなるMCPなるものを..ということでAWS Documentation MCP Serverを試してみることにした。 参考にしたサイトはここ AWS Documentation MCP Server 実際にやってみた手順: Claude Desktop をWindow...