Ambil Resource dan Prompt dari MCP
Server mata uang Anda menyediakan sebuah resource (file://currencies.txt) dan sebuah prompt (convert_currency_prompt) yang menggabungkan permintaan pengguna dengan konteks dan aturan khusus tugas. Untuk memberi masukan ke LLM, klien harus mengambil keduanya sekaligus. Implementasikan fungsi pembantu bernama get_context_from_mcp() yang mengembalikan teks resource dan teks prompt (dengan kueri pengguna sudah dimasukkan) sehingga pemanggil dapat membangun pesan.
Berkas currency_server.py tersedia dengan sebuah tool, resource, dan prompt. Gunakan sesi yang sama untuk membaca resource dan mendapatkan prompt dengan masukan pengguna.
Latihan ini merupakan bagian dari kursus
Pengantar Model Context Protocol (MCP)
Instruksi latihan
- Di dalam sesi, panggil metode untuk membaca resource pada
"file://currencies.txt". - Panggil metode untuk mendapatkan prompt berdasarkan nama dengan masukan pengguna: gunakan nama prompt
"convert_currency_prompt"dan dictargumentsdengan kunci"currency_request"dan nilaiuser_query.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async def get_context_from_mcp(user_query: str) -> tuple[str, str]:
"""Fetch resource content and prompt text from the MCP server."""
params = StdioServerParameters(command=sys.executable, args=["currency_server.py"])
async with stdio_client(params) as (reader, writer):
async with ClientSession(reader, writer) as session:
await session.initialize()
# Read the resource (supported currencies)
resource_result = await session.____("file://currencies.txt")
resource_text = resource_result.contents[0].text
# Get the prompt with the user's query
prompt_result = await session.____("convert_currency_prompt",
arguments={"currency_request": user_query})
prompt_text = prompt_result.messages[0].content.text
return resource_text, prompt_text
print(asyncio.run(get_context_from_mcp("How much is 50 GBP in euros?")))