原文(日本語に翻訳)
MCPツールのレスポンスに特殊なUnicode文字が含まれる場合のJSONパースエラーを修正
原文(英語)
Fixed JSON parsing errors when MCP tool responses contain special Unicode characters
概要
Claude Code v2.1.20では、MCP(Model Context Protocol)サーバーからのツールレスポンスに特殊なUnicode文字が含まれている場合、JSONパースが失敗する問題が修正されました。以前は、絵文字や制御文字、非BMP文字などが含まれるとエラーが発生し、MCPツールが正常に動作しませんでした。この修正により、多様な文字セットを扱うMCPツールが安定して動作するようになります。
基本的な使い方
この修正は自動的に適用され、MCPツールを使用する際に特別な設定は不要です:
bash
# MCPサーバーが絵文字や特殊文字を返す場合でも正常に動作
claude
> @database データベースから最新のユーザー情報を取得して
# レスポンス例(特殊文字を含む):
# {
# "username": "田中太郎 🎌",
# "status": "アクティブ ✅",
# "notes": "特記事項:改行\nタブ\t終わり"
# }
# 修正前:JSONパースエラーが発生
# 修正後:正しくパースされ、情報が表示される実践例
国際化されたデータの取得
多言語対応のMCPツールを使用する場合:
bash
# データベースMCPツール経由で多言語データを取得
> @database 全ユーザーの表示名を取得
# レスポンスに様々なUnicode文字が含まれる:
# - 日本語:田中太郎
# - 中国語:王小明
# - 韓国語:김철수
# - 絵文字:John Doe 😊
# - アラビア語:محمد
# - 特殊記号:User™ ©2024
# すべて正しくパースされ表示されるログファイルの解析
制御文字や改行を含むログをMCPツールで処理:
bash
> @logs 最新のエラーログを取得
# MCPツールが返すログ(制御文字含む):
# "error_message": "接続エラー\nホスト: db.example.com\nポート: 5432\t原因: タイムアウト"
# 修正により:
# - \n(改行)が正しく処理される
# - \t(タブ)が正しく処理される
# - マルチバイト文字(日本語)もエラーにならないソーシャルメディアデータの取得
絵文字や特殊文字を多用するデータソースから情報を取得:
bash
> @social 最新のツイートを10件取得
# MCPツールのレスポンス:
# [
# {"text": "今日は良い天気ですね ☀️🌈", "likes": 42},
# {"text": "新機能リリース 🚀🎉", "likes": 128},
# {"text": "バグ修正完了 ✅💪", "likes": 56}
# ]
# 修正前の問題:
# - 絵文字を含むJSONがパースエラー
# - ツール実行が失敗
# 修正後:
# - すべての絵文字が正しく処理される
# - データが正常に取得・表示されるファイルシステムMCPツール
特殊な文字を含むファイル名やパスの処理:
bash
> @filesystem "📁プロジェクト/🎨デザイン" ディレクトリの内容を表示
# MCPツールが返すファイルリスト:
# {
# "files": [
# "ロゴ_v2.0.png",
# "スクリーンショット①.jpg",
# "デザイン仕様書(最終版).pdf"
# ]
# }
# 修正により:
# - 全角括弧()が正しく処理
# - 丸数字①が正しく処理
# - 絵文字を含むパスが正しく処理APIレスポンスのデバッグ
MCP開発者がツールをテストする場合:
javascript
// MCPサーバー側のコード
{
"name": "get_user_info",
"description": "ユーザー情報を取得",
"parameters": {},
"response": {
"user": {
"name": "山田花子",
"bio": "エンジニア👩💻 | 東京在住🗼 | コーヒー好き☕",
"emoji_status": "🎯"
}
}
}
// 修正前:
// - bioフィールドの絵文字でパースエラー
// - MCPツールが使用不可
// 修正後:
// - すべてのフィールドが正しく処理される
// - 開発とデバッグがスムーズに注意点
- この修正はMCPサーバーからのレスポンスのパース処理に適用されます
- MCPサーバー側が有効なJSON形式を返す必要があります(この修正は文字エンコーディングの問題のみを解決)
- 非常に大きなUnicode文字(4バイト文字)も正しく処理されます
- 制御文字(\n, \t, \r など)はJSON仕様に従ってエスケープされている必要があります
- この問題は主に国際化対応のMCPツールや、ユーザー生成コンテンツを扱うツールで発生していました