


Membina Pelayan Protokol Konteks Model menggunakan Jina.ai dan FastMCP dalam Python
Dalam siaran ini, kami akan membincangkan Protokol Konteks Model, mengapa ia mungkin penting dan berjalan melalui pembinaan Pelayan MCP untuk membantu kami bercakap dengan Jina.ai dan dapat menambahkan carian web dan fungsi semakan fakta dalam Claude Desktop menggunakan Python dan FastMCP.
Protokol Konteks Model
Anthropic diumumkan sekitar Thanksgiving tahun lepas. Walaupun ia mendapat sedikit perhatian, pengiktirafan yang diterima mungkin tidak mencukupi, memandangkan ia boleh menjadi batu loncatan penting dalam membangunkan lapisan seterusnya tindanan perisian AI.
apa
Protokol Konteks Model (MCP) ialah protokol komunikasi piawai yang direka khusus untuk model bahasa besar (LLM).
Anggap ia sebagai "HTTP AI"—sama seperti HTTP menyeragamkan cara pelayar web berkomunikasi dengan pelayan web, MCP menyeragamkan cara aplikasi LLM berkomunikasi dengan alatan dan sumber data.
Mengapa Kita Memerlukan MCP?
landskap semasa pembangunan LLM menghadapi beberapa halangan:
-
Kerumitan Integrasi Alat: Setiap perkhidmatan LLM (seperti OpenAI, Anthropic, dll.) mempunyai caranya untuk melaksanakan panggilan alat dan panggilan fungsi, menjadikannya rumit untuk membina alatan mudah alih.
Pengurusan Konteks: LLM memerlukan akses kepada pelbagai sumber dan alatan data, tetapi mengurus akses ini dengan selamat dan cekap sememangnya mencabar.
Penstandardan: Tanpa protokol standard, pembangun mesti membina semula lapisan integrasi untuk setiap platform LLM yang mereka mahu sokong.
MCP menyelesaikan cabaran ini dengan menyediakan:
- Cara piawai untuk mendedahkan alatan dan data kepada LLM
- Seni bina pelayan pelanggan yang selamat
- Antara muka yang konsisten tanpa mengira LLM yang mendasari
Bagaimana MCP Berfungsi?
MCP mengikut seni bina pelayan-pelanggan dengan tiga komponen utama:
-
Pelayan MCP: Perkhidmatan yang mendedahkan:
- Alat (fungsi yang LLM boleh panggil)
- Sumber (sumber data)
- Gesaan (arahan templat)
- Konteks (maklumat dinamik)
Pelanggan MCP: Aplikasi bersambung ke pelayan MCP dan mengurus komunikasi antara LLM dan pelayan. Sokongan pelanggan berada di peringkat awal, dengan hanya segelintir alat yang melaksanakan mana-mana bahagian spesifikasi protokol setakat ini dan beberapa fungsi yang belum disokong oleh pelanggan.
Dan, sudah tentu, LLM...
Aliran kerja adalah mudah:
- Pelayan MCP mendaftarkan keupayaannya (alat, sumber, dll.)
- Pelanggan menyambung ke pelayan
- LLM kemudiannya boleh menggunakan keupayaan ini melalui antara muka piawai
Protokol Pengangkutan
- Berbilang Mekanisme Pengangkutan
- SSE (Acara Dihantar Pelayan)
- Berkomunikasi melalui HTTP secara dwiarah, proses pelayan diasingkan daripada klien
- Stdio (Input/Output Standard)
- Berkomunikasi melalui paip Input/Output Standard, proses pelayan pada dasarnya adalah proses anak klien
- SSE (Acara Dihantar Pelayan)
Keselamatan
Situasi keselamatan lebih bernuansa. Walaupun pelayan yang menggunakan pengangkutan stdio biasanya dikolokasikan dengan klien, dan oleh itu kunci API tidak semestinya terdedah kepada internet. Mereka nampaknya diedarkan secara santai, IMO.
Kunci ini perlu dimuatkan ke dalam klien apabila pelayan bermula supaya ia boleh dihantar ke proses anak, malah ia muncul dalam log apl desktop, yang...berkenaan.
Penggunaan kunci API secara meluas ialah isu yang lebih luas yang mempengaruhi perkhidmatan, platform dan perkakas Gen AI. Syarikat seperti Okta dan Auth0 sedang mengusahakan penyelesaian untuk mengurus dan membenarkan Gen AI tanpa bergantung pada kunci.
SDK
Anthropic secara rasmi menyokong SDK peringkat rendah untuk TypeScript, Python dan Kotlin. Beberapa pembungkus boilerplate yang baru dibuat telah meliputi beberapa boilerplate dan mempunyai ciri lain yang bagus, seperti CLI untuk penyahpepijatan, pemeriksaan dan pemasangan pelayan pada klien untuk memudahkan pembangunan pelayan MCP.
Bermula dengan FastMCP
jlowin
/
fastmcp
Cara pantas, Pythonic untuk membina pelayan Protokol Konteks Model ?
FastMCP ?
Cara pantas, Pythonic untuk membina pelayan MCP.
Pelayan Model Konteks Protokol (MCP) ialah cara baharu yang standard untuk menyediakan konteks dan alatan kepada LLM anda, dan FastMCP menjadikan pembinaan pelayan MCP mudah dan intuitif. Cipta alatan, dedahkan sumber dan tentukan gesaan dengan kod Pythonic yang bersih:
# demo.py from fastmcp import FastMCP mcp = FastMCP("Demo ?") @<span>mcp.tool()</span> def add(a: int, b: int) -> int: """Add two numbers""" return a + b
Itu sahaja! Beri Claude akses kepada pelayan dengan menjalankan:
fastmcp install demo.py
FastMCP mengendalikan semua butiran protokol dan pengurusan pelayan yang kompleks, supaya anda boleh menumpukan pada membina alatan yang hebat. Ia direka bentuk untuk tahap tinggi dan Pythonic - dalam kebanyakan kes, menghiasi fungsi adalah semua yang anda perlukan.
Ciri utama:
- Pantas: Antara muka peringkat tinggi bermakna kurang kod dan pembangunan lebih pantas
- Mudah…
FastMCP ialah satu rangka kerja sedemikian. Kami kini akan meneroka cara mencipta alat yang hampir praktikal untuk membaca tapak web, menjawab pertanyaan carian melalui web dan maklumat semakan fakta. Kami akan menggunakan Jina.ai.
Ia adalah perkhidmatan yang sangat licik yang menyediakan "platform Asas Carian" yang menggabungkan "Pembenaman, Penarafan Semula dan Model Bahasa Kecil" untuk membantu perniagaan dalam membina pengalaman carian Gen AI dan Multimodal.
Prasyarat
- uv
Anda perlu dipasang uv. Ia adalah cara yang disyorkan untuk mencipta dan mengurus projek Python. Ia adalah sebahagian daripada rangkaian alat Python yang agak baru tetapi menarik yang dipanggil astral.sh. Saya mengesyorkan anda menyemaknya.
Ia bertujuan untuk menjadi kedai sehenti untuk mengurus projek, kebergantungan, persekitaran maya, versi, linting dan melaksanakan skrip dan modul Python. Ia ditulis dalam Rust. Lakukan dengan maklumat itu apa yang anda akan ?.
- Apl Desktop Claude
Anda juga perlu memasang Apl Desktop Claude. Untuk tujuan kami, Apl Desktop Claude akan berfungsi sebagai Klien MCP dan merupakan Klien sasaran utama untuk Anthropic.
ASRagab
/
mcp-jinaai-reader
Pelayan Protokol Konteks Model (MCP) untuk API Pembaca Jina.ai
Pelayan MCP untuk API Pembaca Jina.ai
Panduan Penuh di sini:
https://dev.to/asragab/building-a-model-context-protocol-server-using-jinaai-and-fastmcp-in-python-1od8
Persediaan Projek
Menggunakan uv anda boleh memulakan projek dengan:
# demo.py from fastmcp import FastMCP mcp = FastMCP("Demo ?") @<span>mcp.tool()</span> def add(a: int, b: int) -> int: """Add two numbers""" return a + b
Ini akan mencipta folder yang dipanggil mcp-jinaai-reader dan versi .python bersama-sama dengan pyproject.toml.
fastmcp install demo.py
Ini akan mencipta env maya yang sepadan dengan versi python yang kami pilih.
Selepas mencipta persekitaran, ia akan memberikan arahan tentang cara mengaktifkannya untuk sesi.
uv init mcp-jinaai-reader --python 3.11
Tambah direktori src dan pasang satu pergantungan yang kami perlukan
cd mcp-jinaai-reader uv venv
Buat fail .env pada akar projek dan tambah JINAAI_API_KEY anda pada fail. Anda boleh mendapatkannya secara percuma dengan mendaftar di Jina. Secara umum, sebarang kunci API atau pembolehubah env lain yang perlu dijalankan oleh pelayan anda akan masuk ke dalam fail ini.
source .venv/bin/activate
Dalam direktori src, cipta fail server.py...dan kita sepatutnya boleh mendapatkan kod tersebut.
Kod Pelayan
uv add fastmcp
Bermula dengan import: httpx, akan menjadi perpustakaan yang kami gunakan di sini untuk membuat permintaan http; kami memerlukan kaedah urlparse untuk membantu kami menentukan sama ada rentetan mungkin URL yang sah.
JINAAI_API_KEY=jina_*************
Ini memulakan pelayan; hujah pertama ialah nama alat. Saya tidak pasti 100% mengapa uvicorn perlu ditambah secara eksplisit sebagai pergantungan di sini kerana ia adalah pergantungan transitif FastMCP tetapi ia nampaknya diperlukan.
Ia berkemungkinan disebabkan oleh cara cli fastmcp (lebih lanjut mengenainya sebentar lagi) memasang pelayan. Jika anda mempunyai tanggungan lain, anda mesti menambahkannya di sini supaya pelanggan tahu anda perlu memasangnya sebelum menjalankan klien; kita akan lihat bagaimana ia berfungsi sebentar lagi.
from fastmcp import FastMCP import httpx from urllib.parse import urlparse import os
Anda mungkin boleh melihat corak di sini, tetapi Jina menggunakan subdomain yang berbeza untuk menghalakan permintaan tertentu. Titik akhir carian menjangkakan pertanyaan, titik akhir pembaca menjangkakan URL dan titik akhir asas boleh memberikan respons atau jawapan khusus kepada llm.
Grounding ialah topik yang lebih besar dan digunakan dengan teknik lain, seperti RAG dan penalaan halus, untuk membantu LLM dalam mengurangkan halusinasi dan menambah baik pembuatan keputusan.
Alat pertama kami
# Initialize the MCP server mcp = FastMCP("search", dependencies=["uvicorn"])
Anotasi @mcp.tool banyak melakukan pengangkatan berat. Anotasi serupa untuk sumber dan gesaan wujud dalam perpustakaan. Anotasi mengekstrak butiran tandatangan fungsi dan jenis pemulangan untuk mencipta skema input dan output untuk llm memanggil alat. Ia mengkonfigurasi alat supaya pelanggan memahami keupayaan pelayan. Ia juga mendaftarkan panggilan fungsi sebagai pengendali untuk alat yang dikonfigurasikan.
Seterusnya, anda akan dapati bahawa fungsi itu tidak segerak. Tiada konfigurasi masa jalan diperlukan dan tiada bahan asyncio.run juga. Jika anda perlu, atas sebab tertentu, menjalankan pelayan sebagai perkhidmatan kendiri, anda perlu mengendalikan sebahagian daripada ini sendiri. Terdapat contoh dalam repo FastMCP untuk cara melakukan ini.
Badan fungsi agak tidak menarik; ia mengesahkan sama ada ia menerima URL, menetapkan pengepala yang sesuai, memanggil titik akhir Jina dan mengembalikan teks.
# demo.py from fastmcp import FastMCP mcp = FastMCP("Demo ?") @<span>mcp.tool()</span> def add(a: int, b: int) -> int: """Add two numbers""" return a + b
Alat Kedua
fastmcp install demo.py
Dan itu sahaja...
Menguji dan Menyahpepijat
uv init mcp-jinaai-reader --python 3.11
Menjalankan arahan di atas akan memulakan pemeriksa mcp ia adalah alat yang disediakan oleh sdk untuk menguji dan menyahpepijat respons pelayan. Bendera --with-editable membolehkan anda membuat perubahan pada pelayan, tanpa perlu melancarkan semula pemeriksa (sangat, SANGAT disyorkan)
Anda sepatutnya melihat:
cd mcp-jinaai-reader uv venv
Secara lalai pemeriksa berjalan pada port 5173, dan pelayan (kod yang anda baru tulis) akan berjalan pada port 3000, anda boleh menukar ini dengan menetapkan SERVER_PORT dan CLIENT_PORT sebelum penyembahan.
source .venv/bin/activate
Inspektor
Jika semuanya berjalan lancar, anda akan melihat sesuatu seperti berikut, di sebelah kiri anda boleh menambah pembolehubah persekitaran yang anda perlukan, di sini JINAAI_API_KEY adalah satu-satunya.
Jika anda mengklik pada Alat pada bar menu atas, dan kemudian Senaraikan Alat anda harus menggunakan alatan yang kami cipta, perhatikan bahawa docstring berfungsi sebagai penerangan untuk alat tersebut.
Mengklik pada alat tertentu akan memaparkan kotak teks untuk anda memasukkan parameter yang diperlukan untuk memanggil alat tersebut.
Memasang Pelayan
Selepas anda berpuas hati semuanya berfungsi seperti yang diharapkan, anda kini bersedia untuk memasang pelayan pada klien Apl Desktop Claude.
uv add fastmcp
Akan melakukan ini, saya pasti pada masa akan datang ia akan menyokong pelanggan lain, tetapi buat masa ini, ini sahaja yang anda perlu lakukan. -f .env akan menghantar pembolehubah env kepada klien aplikasi.
Apa yang dilakukan di bawah tudung ialah mengemas kini claude_desktop_config.json dan menyediakan arahan serta hujah yang diperlukan untuk menjalankan pelayan. Secara lalai ini menggunakan uv yang mesti tersedia pada PATH anda.
Jika anda kini membuka Apl Desktop Claude, dan pergi ke Bar Menu dan Klik Claude > Tetapan dan kemudian klik pada Pembangun anda harus melihat nama alat anda yang anda tetapkan semasa memulakan pelayan.
Mengklik padanya akan memaparkan konfigurasinya. Anda bukan sahaja akan cara ia dilaksanakan, tetapi dalam Pilihan Lanjutan anda akan melihat pembolehubah env yang telah ditetapkan.
Anda juga boleh mengedit konfigurasi ini secara terus, tetapi saya tidak semestinya mengesyorkannya di sini.
Menjalankannya
Jika semuanya berjalan lancar apabila anda menggunakan Apl Desktop, anda sepatutnya tidak melihat ralat (jika anda melakukannya, pergi ke Tetapan akan memberi anda butang untuk menyemak log dan menyiasat dari sana).
Selain itu, anda harus melihat simbol tukul dengan bilangan alatan individu yang anda miliki (nota: anda mungkin perlu dua melainkan anda telah memasang pelayan MCP lain)
Daripada menggunakan alat secara terus, anda bersembang dengan apl seperti biasa, dan apabila ia menghadapi situasi di mana ia menyimpulkan bahawa alat itu membantu ia akan bertanya sama ada anda mahu menggunakannya. Tiada kod atau konfigurasi tambahan di sini diperlukan.
Saya fikir ia bergantung pada kedua-dua nama alat dan huraian untuk menentukan sama ada ia sesuai, jadi ia berbaloi untuk membuat penerangan ringkas yang jelas tentang perkara yang alat itu lakukan.
Anda akan mendapat gesaan seperti berikut:
Dan anda hanya boleh "berbual" dengannya, memanglah alat seperti yang ditulis kadangkala menghadapi masalah. Kadangkala ia memutuskan bahawa ia tidak boleh mengakses internet, kadangkala ia gagal mendapatkan hasil, tetapi kadangkala anda mendapat ini:
Ini mempunyai aliran semula jadi, di mana ia membaca halaman, memberikan ringkasan, dan anda memintanya pergi ke artikel tertentu dan membacanya.
Nota Akhir
Mudah-mudahan ini memberi anda sedikit cerapan tentang Pelayan MCP. Terdapat banyak untuk dibaca dan ditonton tetapi satu lagi tapak yang saya akan cadangkan ialah glama.ai mereka menyimpan senarai yang agak komprehensif bagi Pelayan MCP yang tersedia untuk dimuat turun dan dicuba, termasuk alat carian web lain yang lebih dipercayai daripada contoh mainan kami. Tontonnya dan terima kasih kerana mengikuti bersama.
Atas ialah kandungan terperinci Membina Pelayan Protokol Konteks Model menggunakan Jina.ai dan FastMCP dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Penyelesaian kepada Isu Kebenaran Semasa Melihat Versi Python di Terminal Linux Apabila anda cuba melihat versi Python di Terminal Linux, masukkan Python ...

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Apabila menggunakan Perpustakaan Pandas Python, bagaimana untuk menyalin seluruh lajur antara dua data data dengan struktur yang berbeza adalah masalah biasa. Katakan kita mempunyai dua DAT ...

Bagaimanakah Uvicorn terus mendengar permintaan HTTP? Uvicorn adalah pelayan web ringan berdasarkan ASGI. Salah satu fungsi terasnya ialah mendengar permintaan HTTP dan teruskan ...

Fastapi ...

Menggunakan Python di Terminal Linux ...

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Memahami Strategi Anti-Crawling of Investing.com Ramai orang sering cuba merangkak data berita dari Investing.com (https://cn.investing.com/news/latest-news) ...
