


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!

Python dan C masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1) Python sesuai untuk pembangunan pesat dan pemprosesan data kerana sintaks ringkas dan menaip dinamik. 2) C sesuai untuk prestasi tinggi dan pengaturcaraan sistem kerana menaip statik dan pengurusan memori manual.

Memilih Python atau C bergantung kepada keperluan projek: 1) Jika anda memerlukan pembangunan pesat, pemprosesan data dan reka bentuk prototaip, pilih Python; 2) Jika anda memerlukan prestasi tinggi, latensi rendah dan kawalan perkakasan yang rapat, pilih C.

Dengan melabur 2 jam pembelajaran python setiap hari, anda dapat meningkatkan kemahiran pengaturcaraan anda dengan berkesan. 1. Ketahui Pengetahuan Baru: Baca dokumen atau tutorial menonton. 2. Amalan: Tulis kod dan latihan lengkap. 3. Kajian: Menyatukan kandungan yang telah anda pelajari. 4. Amalan Projek: Sapukan apa yang telah anda pelajari dalam projek sebenar. Pelan pembelajaran berstruktur seperti ini dapat membantu anda menguasai Python secara sistematik dan mencapai matlamat kerjaya.

Kaedah untuk belajar python dengan cekap dalam masa dua jam termasuk: 1. Semak pengetahuan asas dan pastikan anda sudah biasa dengan pemasangan Python dan sintaks asas; 2. Memahami konsep teras python, seperti pembolehubah, senarai, fungsi, dan lain -lain; 3. Menguasai penggunaan asas dan lanjutan dengan menggunakan contoh; 4. Belajar kesilapan biasa dan teknik debugging; 5. Memohon pengoptimuman prestasi dan amalan terbaik, seperti menggunakan komprehensif senarai dan mengikuti panduan gaya PEP8.

Python sesuai untuk pemula dan sains data, dan C sesuai untuk pengaturcaraan sistem dan pembangunan permainan. 1. Python adalah mudah dan mudah digunakan, sesuai untuk sains data dan pembangunan web. 2.C menyediakan prestasi dan kawalan yang tinggi, sesuai untuk pembangunan permainan dan pengaturcaraan sistem. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Python lebih sesuai untuk sains data dan perkembangan pesat, manakala C lebih sesuai untuk prestasi tinggi dan pengaturcaraan sistem. 1. Sintaks Python adalah ringkas dan mudah dipelajari, sesuai untuk pemprosesan data dan pengkomputeran saintifik. 2.C mempunyai sintaks kompleks tetapi prestasi yang sangat baik dan sering digunakan dalam pembangunan permainan dan pengaturcaraan sistem.

Adalah mungkin untuk melabur dua jam sehari untuk belajar Python. 1. Belajar Pengetahuan Baru: Ketahui konsep baru dalam satu jam, seperti senarai dan kamus. 2. Amalan dan Amalan: Gunakan satu jam untuk melakukan latihan pengaturcaraan, seperti menulis program kecil. Melalui perancangan dan ketekunan yang munasabah, anda boleh menguasai konsep teras Python dalam masa yang singkat.

Python lebih mudah dipelajari dan digunakan, manakala C lebih kuat tetapi kompleks. 1. Sintaks Python adalah ringkas dan sesuai untuk pemula. Penaipan dinamik dan pengurusan memori automatik menjadikannya mudah digunakan, tetapi boleh menyebabkan kesilapan runtime. 2.C menyediakan kawalan peringkat rendah dan ciri-ciri canggih, sesuai untuk aplikasi berprestasi tinggi, tetapi mempunyai ambang pembelajaran yang tinggi dan memerlukan memori manual dan pengurusan keselamatan jenis.


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

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!