

# AgentCore ゲートウェイからプロンプトを取得する
<a name="gateway-using-mcp-prompts-get"></a>

特定のプロンプトを取得するには、ゲートウェイの MCP エンドポイントに POST リクエストを行い、リクエスト本文の メソッド`prompts/get`として 、プロンプトの名前、引数を指定します。

```
POST /mcp HTTP/1.1
Host: ${GatewayEndpoint}
Content-Type: application/json
Authorization: ${Authorization header}

${RequestBody}
```

以下の値を置き換えます:
+  `${GatewayEndpoint}` – [CreateGateway](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreateGateway.html) API のレスポンスで提供されるゲートウェイの URL。
+  `${Authorization header}` – [インバウンド認可を設定するときの ID プロバイダーからの認可](gateway-inbound-auth.md)認証情報。
+  `${RequestBody}` – Model [Context Protocol (MCP)](https://modelcontextprotocol.io/docs/getting-started/intro) の[「プロンプトの取得](https://modelcontextprotocol.io/specification/2025-06-18/server/prompts#getting-a-prompt)」で指定されているリクエストボディの JSON ペイロード。を `prompts/get`として含め`method`、プロンプト`name`の とその を含めます`arguments`。

レスポンスは、レンダリングされたプロンプトをメッセージの配列として返し、それぞれにロールとコンテンツがあります。

**注記**  
`prompts/get` オペレーションは、リクエストをダウンストリーム MCP サーバーにライブでプロキシします。プロンプト名には、ターゲットプレフィックス ( など`myTarget___myPrompt`) を含める必要があります。

## プロンプトを取得するためのコードサンプル
<a name="gateway-using-mcp-prompts-get-examples"></a>

ゲートウェイからプロンプトを取得する例を表示するには、次のいずれかの方法を選択します。

**Example**  

1. 次の curl リクエストは、ID のゲートウェイ`myTarget___code_review`を介して というプロンプトを取得するリクエストの例を示しています`mygateway-abcdefghij`。

   ```
   curl -X POST \
     https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -d '{
       "jsonrpc": "2.0",
       "id": "get-prompt-request",
       "method": "prompts/get",
       "params": {
         "name": "myTarget___code_review",
         "arguments": {
           "language": "python",
           "code": "print(\"hello\")"
         }
       }
   }'
   ```

1. 

   ```
   import requests
   import json
   
   def get_prompt(gateway_url, access_token, prompt_name, arguments):
       headers = {
           "Content-Type": "application/json",
           "Authorization": f"Bearer {access_token}"
       }
   
       payload = {
           "jsonrpc": "2.0",
           "id": "get-prompt-request",
           "method": "prompts/get",
           "params": {
               "name": prompt_name,
               "arguments": arguments
           }
       }
   
       response = requests.post(gateway_url, headers=headers, json=payload)
       return response.json()
   
   # Example usage
   gateway_url = "https://${GatewayEndpoint}/mcp" # Replace with your actual gateway endpoint
   access_token = "${AccessToken}" # Replace with your actual access token
   result = get_prompt(
       gateway_url,
       access_token,
       "myTarget___code_review",  # Replace with {targetName}___{promptName}
       {"language": "python", "code": "print('hello')"}
   )
   print(json.dumps(result, indent=2))
   ```

1. 

   ```
   from mcp import ClientSession
   from mcp.client.streamable_http import streamablehttp_client
   import asyncio
   
   async def execute_mcp(
       url,
       token,
       prompt_name,
       prompt_arguments,
       headers=None
   ):
       default_headers = {
           "Authorization": f"Bearer {token}"
       }
       headers = {**default_headers, **(headers or {})}
   
       async with streamablehttp_client(
          url=url,
          headers=headers,
       ) as (
           read_stream,
           write_stream,
           callA,
       ):
           async with ClientSession(read_stream, write_stream) as session:
               # 1. Perform initialization handshake
               print("Initializing MCP...")
               _init_response = await session.initialize()
               print(f"MCP Server Initialize successful! - {_init_response}")
   
               # 2. Get specific prompt
               print(f"Getting prompt: {prompt_name}")
               prompt_response = await session.get_prompt(
                   name=prompt_name,
                   arguments=prompt_arguments
               )
               print(f"Prompt response: {prompt_response}")
               return prompt_response
   
   async def main():
       url = "https://${GatewayEndpoint}/mcp"
       token = "your_bearer_token_here"
       prompt_name = "myTarget___code_review"
       prompt_arguments = {
           "language": "python",
           "code": "print('hello')"
       }
       await execute_mcp(
           url=url,
           token=token,
           prompt_name=prompt_name,
           prompt_arguments=prompt_arguments
       )
   
   
   if __name__ == "__main__":
       asyncio.run(main())
   ```

1. 注: LangGraph MCP アダプタープロンプトのサポートは異なる場合があります。最も信頼性の高い`prompts/get`実装には、上記の MCP クライアントアプローチを使用します。

   ```
   import asyncio
   from mcp import ClientSession
   from mcp.client.streamable_http import streamablehttp_client
   
   async def get_prompt(url, token, prompt_name, arguments):
       headers = {"Authorization": f"Bearer {token}"}
       async with streamablehttp_client(url=url, headers=headers) as (
           read_stream, write_stream, callA
       ):
           async with ClientSession(read_stream, write_stream) as session:
               await session.initialize()
               response = await session.get_prompt(
                   name=prompt_name,
                   arguments=arguments
               )
               for message in response.messages:
                   print(f"{message.role}: {message.content}")
   
   asyncio.run(get_prompt(
       "https://${GatewayEndpoint}/mcp",
       "${AccessToken}",
       "myTarget___code_review",
       {"language": "python", "code": "print('hello')"}
   ))
   ```

## エラー
<a name="gateway-using-mcp-prompts-get-errors"></a>

`prompts/get` オペレーションは、次のタイプのエラーを返すことができます。
+ HTTP ステータスコードの一部として返されるエラー:  
 **AuthenticationError**   
認証情報が無効であるため、リクエストは失敗しました。  
 **HTTP ステータスコード**: 401  
 **AuthorizationError**   
発信者にはプロンプトを取得するアクセス許可がありません。  
 **HTTP ステータスコード**: 403  
 **ResourceNotFoundError**   
指定されたプロンプトは存在しません。  
 **HTTP ステータスコード**: 404  
 **ValidationError**   
指定された引数は、プロンプトの必須引数を満たしていません。  
 **HTTP ステータスコード**: 400  
 **InternalServerError**   
内部サーバーエラーが発生しました。  
 **HTTP ステータスコード**: 500
+ MCP エラー。これらのタイプのエラーの詳細については、[Model Context Protocol (MCP)](https://modelcontextprotocol.io/docs/getting-started/intro) ドキュメントの[「プロンプト](https://modelcontextprotocol.io/specification/2025-06-18/server/prompts)」を参照してください。