मॉडल संदर्भ प्रोटोकॉल · rmcp 2.2

अपने एजेंटों को सिस्टम से कनेक्ट करें जहां काम होता है.

MCP एक अन्य प्रोग्राम को एक मानक अनुबंध के माध्यम से उपकरण, सूचना और पुन: प्रयोज्य संकेत प्रकाशित करने देता है। ADK-Rust उन क्षमताओं को टाइप किए गए एजेंट टूल में बदल देता है, व्यापक प्रोटोकॉल को उजागर करता है, और आपका उत्पाद चलने के दौरान स्थानीय MCP सर्वर के बदलते बेड़े का प्रबंधन कर सकता है।

उपकरणसंसाधनसंकेतसमापनसदस्यताएँउद्दीपनकार्यStdioStreamable HTTP

ADK-Rust MCP वास्तुकला

अपने एजेंट से MCP क्षमताएं जोड़ें या हटाएं।

आपका एजेंट किसी अन्य ADK-Rust टूल की तरह ही MCP क्षमताओं का उपयोग करता है। MCP इसे प्रत्येक सर्वर से जोड़ता है, जबकि प्रत्येक सर्वर अपने डेटा, नियमों और कार्यों के लिए स्वयं जिम्मेदार रहता है।

01

एजेंट उत्पाद

काम मांगने का अनुभव.

एजेंट या वर्कफ़्लो

उन उपकरणों में से एक क्षमता चुनता है जिन्हें देखने की अनुमति दी गई है।

एडीके नीति

कॉल के चारों ओर अनुमोदन, प्राधिकरण, रेलिंग और ऑडिट लागू करता है।

Toolset
02

ADK-Rust MCP क्लाइंट

रनटाइम के अंदर टाइप किया गया एडॉप्टर।

McpToolset

उपकरण खोजता है और सर्वर के स्कीमा और परिणाम सामग्री को संरक्षित करता है।

प्रोटोकॉल APIs

संसाधन, संकेत, पूर्णता, सदस्यता, प्राप्ति, और कार्य।

सर्वर मैनेजर

स्थानीय stdio कनेक्शनों की रजिस्ट्री में परिवर्तन और पर्यवेक्षण करता है।

MCP
03

कनेक्शन सीमा

वह परिवहन चुनें जो स्वामित्व से मेल खाता हो।

स्थानीय stdio

ADK-Rust एक मूल बाइनरी या अन्य चाइल्ड प्रक्रिया प्रारंभ करता है और उसके सत्र का स्वामी होता है।

Streamable HTTP

हेडर, ऑथ और टाइमआउट के साथ स्वतंत्र रूप से होस्ट की गई सेवा से कनेक्ट करें।

अनुबंध
04

MCP सर्वर

प्रत्येक सर्वर केवल वही प्रकाशित करता है जो उसके पास है।

उपकरण

क्रियाएँ

संसाधन

प्रसंग

संकेत

टेम्पलेट्स

कार्य

लंबा काम

प्रत्येक सर्वर अपनी स्वयं की साख, डेटा पहुंच, दुष्प्रभावों और सेवा स्वास्थ्य के लिए जिम्मेदार रहता है

व्यावसायिक डेटा

सीआरएम, ईआरपी, ऑर्डर, दस्तावेज़, विश्लेषण और आंतरिक ज्ञान।

डेवलपर सिस्टम

स्रोत नियंत्रण, निर्माण उपकरण, ब्राउज़र, सैंडबॉक्स और कोडिंग वातावरण।

बाहरी सेवाएँ

भुगतान, संचार, खोज, मानचित्र और भागीदार APIs।

विशेषज्ञ रनटाइम

मीडिया निर्माण, स्प्रेडशीट, कंप्यूटर उपयोग और डोमेन-विशिष्ट सेवाएँ।

`McpToolset` एक कनेक्शन का प्रबंधन करता है। `McpServerManager` स्थानीय कनेक्शनों के बदलते बेड़े का प्रबंधन करता है। आधिकारिक `rmcp` SDK कस्टम सर्वर, ट्रांसपोर्ट, हैंडलर और प्रोटोकॉल एक्सटेंशन के लिए उपलब्ध रहता है।

समस्या से शुरुआत करें

हमें MCP की आवश्यकता क्यों है?

एक एआई एजेंट तब उपयोगी हो जाता है जब वह उन प्रणालियों तक पहुंच सकता है जो वास्तविक जानकारी रखते हैं और वास्तविक कार्य करते हैं। साझा प्रोटोकॉल के बिना, प्रत्येक डेटाबेस, SaaS उत्पाद, ब्राउज़र टूल, आंतरिक सेवा और विशेषज्ञ रनटाइम को एक कस्टम एडाप्टर की आवश्यकता होती है। वे एडाप्टर खोज, स्कीमा, परिवहन, त्रुटियां, प्रमाणीकरण और जीवनचक्र कोड दोहराते हैं।

MCP उस सीमा के चारों ओर एक स्थिर अनुबंध रखता है। एक सर्वर बताता है कि वह क्या ऑफ़र करता है और उसे कैसे कॉल करना है। एक क्लाइंट रनटाइम पर उस कैटलॉग को खोजता है। एजेंट एप्लिकेशन सर्वर के कार्यान्वयन को आयात किए बिना या उसके निजी क्रेडेंशियल प्राप्त किए बिना एक समीक्षा की गई क्षमता का चयन कर सकता है।

ADK-Rust उस अनुबंध को उसी टूल और Toolset एब्स्ट्रैक्शन से जोड़ता है जिसका उपयोग मूल Rust टूल द्वारा किया जाता है। मॉडल अपने सामान्य एजेंट लूप के माध्यम से MCP क्षमताओं के साथ काम कर सकता है, जबकि एप्लिकेशन कॉल के आसपास प्रदाता-विशिष्ट स्कीमा रूपांतरण, अनुमोदन, सत्र, टेलीमेट्री और ऑपरेटिंग नीति रखता है।

औज़ार

कुछ ऐसा जो एजेंट सर्वर से करने के लिए कह सकता है

एक टूल का एक नाम, एक उपयोगी विवरण, एक इनपुट स्कीमा और वैकल्पिक रूप से एक आउटपुट स्कीमा होता है। उदाहरणों में ऑर्डर पढ़ना, रिपॉजिटरी खोजना, टिकट अपडेट करना या स्प्रेडशीट तैयार करना शामिल है।

संसाधन

संदर्भ एजेंट या उत्पाद पढ़ सकता है

एक संसाधन जानकारी को एक स्थिर यूआरआई देता है। यह किसी दस्तावेज़, नीति, डेटाबेस रिकॉर्ड, कैटलॉग या उत्पन्न परिणाम का प्रतिनिधित्व कर सकता है, बिना यह दिखावा किए कि डेटा पढ़ना एक क्रिया है।

शीघ्र

सर्वर द्वारा प्रकाशित एक पुन: प्रयोज्य संदेश टेम्पलेट

एक प्रॉम्प्ट सर्वर के डोमेन के स्वामित्व वाले किसी कार्य के लिए सही निर्देश और इनपुट कैप्चर कर सकता है, जैसे किसी ऑर्डर की जांच करना या किसी तैनाती की समीक्षा करना।

उद्दीपन

गुम मानवीय इनपुट के लिए अनुरोध

टूल कॉल के दौरान, सर्वर क्लाइंट से एक फॉर्म प्रस्तुत करने या एक स्वीकृत यूआरएल खोलने के लिए कह सकता है। आवेदन सहमति के लिए और उत्तर को मान्य करने के लिए जिम्मेदार रहता है।

Dynamic MCP management

Capabilities can change while the product keeps running.

An agent product may serve several tenants, workspaces, or operating modes. The useful MCP servers can change when a workspace opens, an administrator enables an integration, a credential rotates, or a specialist process is upgraded.

`McpServerManager` keeps that lifecycle in the application instead of forcing every server definition into startup code. It is designed for local stdio child processes; independently hosted HTTP services remain application-owned connections.

01

Load the registry

Read mcp.json-compatible definitions or construct them in Rust. Disabled servers stay registered without starting.

02

Start and negotiate

Spawn each enabled child and complete the MCP handshake before its capabilities become visible.

03

Discover safely

List tools from running servers, filter the published surface, and prefix only names that collide.

04

Change it live

Add, update, enable, disable, or remove a server without rebuilding the agent application.

05

Supervise the session

Detect a closed connection and apply the server's bounded exponential-backoff restart policy.

06

Save and close

Persist the current registry atomically, cancel MCP sessions, wait for the grace period, and drop child transports.

Practical sequence

Resolve a damaged order with three independently owned capabilities.

The model does not receive database credentials or private API clients. It receives a reviewed catalog of tools and resources. ADK-Rust keeps approval around the consequential replacement call.

Support agent01Discover approved CRM, order, and policy toolsMCP client
MCP client02tools/list over the negotiated connectionsThree MCP servers
Support agent03read_order { order_id: ORD-1042 }Orders server
Orders server04Structured order and delivery evidenceSupport agent
Support agent05Read the current damaged-goods policy resourcePolicy server
Support agent06request_replacement after ADK approvalCRM server
CRM server07Replacement ID, status, and audit evidenceSupport agent

वर्तमान प्रोटोकॉल सतह

ADK-Rust न केवल टूल कॉल, बल्कि व्यापक MCP प्रोटोकॉल का उपयोग करता है।

प्रत्यक्ष ADK-Rust API उन क्षमताओं को कवर करते हैं जिनकी एक एजेंट उत्पाद को सबसे अधिक आवश्यकता होती है: टूल खोजें और कॉल करें, संसाधनों को पढ़ें, संकेतों को हल करें, तर्क सुझावों का अनुरोध करें, बदलते संसाधनों की सदस्यता लें, प्राप्त अनुरोधों का उत्तर दें, और बातचीत के जरिए लंबे समय तक चलने वाले टूल कार्य का पालन करें।

उन्नत सर्वर संलेखन, कस्टम क्लाइंट हैंडलर, नोटिफिकेशन, ट्रांसपोर्ट, प्राधिकरण कार्य और प्रोटोकॉल एक्सटेंशन के लिए, adk_tool::mcp::rmcp फ्रेमवर्क के अंदर उपयोग किए गए सटीक आधिकारिक SDK संस्करण को फिर से निर्यात करता है। यह असंगत प्रोटोकॉल प्रकारों को एक एप्लिकेशन में मिश्रित करने से बचाता है।

01

एजेंट-सामना करने वाले एडेप्टर

सामान्य ADK-Rust एजेंट और टूल प्रवाह के अंदर MCP क्षमताओं का उपयोग करें।

उपकरण/सूची + उपकरण/कॉल
कच्चा इनपुट/आउटपुट स्कीमा
पाठ, छवि, ऑडियो, संसाधन
उपकरण फ़िल्टर
प्रदाता सामान्यीकरण
02

प्रसंग एवं मार्गदर्शन

MCP को टूल कॉल तक कम करने के बजाय बाकी कैटलॉग पढ़ें।

संसाधन + टेम्पलेट
संकेत/सूची + प्राप्त करें
शीघ्र समापन
संसाधन पूर्णता
संसाधन सदस्यता
03

इंटरएक्टिव और लंबा काम

समर्थन प्रोटोकॉल वार्तालाप जो एक तत्काल प्रतिक्रिया से परे जारी रहते हैं।

प्रपत्र उद्दीपन
यूआरएल प्राप्ति
बातचीत किए गए उपकरण कार्य
कार्य/प्राप्त करें + परिणाम
सीमाबद्ध रद्दीकरण
04

कनेक्शन

स्थानीय प्रक्रिया स्वामित्व या अलग से होस्ट की गई सेवा चुनें।

स्थानीय stdio
Streamable HTTP
कस्टम हेडर
वाहक + API कुंजी
समाप्त-सत्र पुनर्प्राप्ति
एक सुविचारित अनुकूलता सीमा: MCP सैंपलिंग, रूट्स और लॉगिंग को SEP-2577 के माध्यम से अपस्ट्रीम में रोक दिया गया है। ADK-Rust एक ऑप्ट-इन संगतता सुविधा के पीछे नमूनाकरण रखता है; इसे किसी नए उत्पाद के लिए अनुशंसित आर्किटेक्चर के रूप में प्रस्तुत नहीं किया जाता है।

कामकाजी उदाहरण

स्टार्टअप से शटडाउन तक MCP सर्वर प्रबंधित करें।

किसी एप्लिकेशन को प्रत्येक कार्यक्षेत्र, ग्राहक या कार्य के लिए अलग-अलग MCP क्षमताओं की आवश्यकता हो सकती है। स्टार्टअप पर प्रत्येक सर्वर को हार्ड-कोड करना उन परिवर्तनों को कठिन बना देता है। McpServerManager एप्लिकेशन को स्थानीय MCP सर्वर शुरू करने, उनके टूल को संयोजित करने, उनके कॉन्फ़िगरेशन को बदलने, उनके कनेक्शन की निगरानी करने और उन्हें सफाई से बंद करने के लिए एक स्थान देता है।

यह उदाहरण local-tools नामक एक कॉन्फ़िगर सर्वर से शुरू होता है। एजेंट इसके इको टूल को खोज और कॉल कर सकता है। एप्लिकेशन फिर एक दूसरा सर्वर जोड़ता है, इसे सक्षम करता है, इसके चल रहे कॉन्फ़िगरेशन को बदलता है, अद्यतन रजिस्ट्री को सहेजता है, और इसे फिर से हटा देता है। प्रत्येक परिवर्तन प्रशासन स्क्रीन या कॉन्फ़िगरेशन सेवा के लिए उपलब्ध समान API का उपयोग करता है।

उदाहरण पूरी तरह से आपकी मशीन पर चलता है। Rust निष्पादन योग्य MCP चाइल्ड सर्वर के रूप में स्वयं की एक प्रति प्रारंभ करता है, इसलिए हैंडशेक, टूल डिस्कवरी, टूल कॉल, पुनरारंभ, दृढ़ता और शटडाउन वास्तविक हैं। किसी मॉडल, Node.js पैकेज, API कुंजी या इंटरनेट कनेक्शन की आवश्यकता नहीं है।

01

एक सर्वर प्रारंभ करें

एक mcp.json-संगत कॉन्फ़िगरेशन से local-tools लोड करें, इसकी चाइल्ड प्रक्रिया शुरू करें, MCP हैंडशेक पूरा करें, और इसके इको टूल की खोज करें।

02

दूसरा सर्वर जोड़ें

स्टैंडबाय-टूल्स को अक्षम के रूप में पंजीकृत करें, फिर इसे सक्षम करें और तब प्रारंभ करें जब एप्लिकेशन निर्णय लेता है कि क्षमता उपलब्ध होनी चाहिए।

03

इसे सुरक्षित रूप से बदलें

चल रहे सर्वर परिभाषा को अद्यतन करें। प्रबंधक इसे नए कॉन्फ़िगरेशन के साथ पुनरारंभ करता है और प्रतिस्थापन स्टार्टअप विफल होने पर पिछली परिभाषा को पुनर्स्थापित कर सकता है।

04

सहेजें और बंद करें

लाइव रजिस्ट्री को JSON पर वापस लिखें, अतिरिक्त सर्वर को अक्षम करें और हटा दें, फिर प्रत्येक MCP सत्र और चाइल्ड प्रक्रिया को साफ़-साफ़ बंद करें।

manager.rsजंग
let manager = McpServerManager::from_json(&config)?
      .with_health_check_interval(Duration::from_secs(15));

  manager.start_server("local-tools").await?;
  manager.start_monitoring();

  manager
      .add_server("standby-tools".into(), standby)
      .await?;
  manager.enable_server("standby-tools").await?;
  manager.start_server("standby-tools").await?;

  manager
      .update_server("standby-tools", replacement)
      .await?;
  manager.save_json_file("mcp.json").await?;
  manager.shutdown().await?;
terminalवास्तविक आउटपुट
$ cargo run --manifest-path     examples/mcp_manager/Cargo.toml

  1. Loaded local-tools from mcp.json-compatible configuration
     status: Running
  2. Discovered 1 tool: echo
  3. Called the real child server
     response: {"output":"MCP server replied: dynamic MCP is running"}
  4. Added standby-tools at runtime: Disabled
     enabled and started: Running
  5. Reconfigured the running server and restarted it safely
  6. Saved the live registry
  7. Disabled, removed, and shut down every child server

क्लाइंट, प्रबंधक, या सर्वर

अपनी आवश्यक ADK-Rust MCP क्षमता चुनें।

अधिकांश एजेंट एप्लिकेशन MCP क्लाइंट हैं। वे मौजूदा सर्वर से जुड़ते हैं और चयनित टूल एजेंट को उपलब्ध कराते हैं। उत्पाद जो कार्यक्षेत्र या व्यवस्थापक एकीकरण की अनुमति देते हैं, प्रबंधक के पीछे स्थानीय stdio कनेक्शन रख सकते हैं। नई क्षमता प्रकाशित करने वाली टीमें पुनः निर्यात किए गए rmcp सर्वर APIs का उपयोग करती हैं और फिर ADK-Rust क्लाइंट से सर्वर का परीक्षण करती हैं।

Your situation
Use
Why
One known MCP service
McpToolset
One initialized connection, filters, tools, resources, prompts, completion, subscriptions, elicitation, and tasks.
A changing set of local integrations
McpServerManager
Runtime add, update, enable, disable, remove, save, monitor, restart, aggregation, and collision-safe names.
A separately hosted MCP service
McpHttpClientBuilder
Streamable HTTP with request timeout, headers, bearer or API-key injection, and expired-session recovery.
You own the capability being published
adk_tool::mcp::rmcp
Build the MCP server with the official SDK version already aligned with ADK-Rust.

उत्पादन डिज़ाइन

MCP को सुरक्षित रूप से तैनात करें।

MCP खोज और संचार को सुसंगत बनाता है। यह तय नहीं करता है कि एक एजेंट को किन प्रणालियों तक पहुंचना चाहिए, किन कार्यों के लिए अनुमोदन की आवश्यकता है, क्रेडेंशियल कैसे जारी किए जाते हैं, या निर्भरता विफल होने पर क्या होना चाहिए। वे उत्पाद और प्लेटफ़ॉर्म निर्णय बने रहेंगे।

सर्वर सीमा चुनें

एक टीम या सिस्टम के स्वामित्व वाली सुसंगत क्षमता के आसपास एक सर्वर बनाएं। ऐसे विशाल सर्वर से बचें जिसके उपकरण असंबंधित क्रेडेंशियल्स और जोखिम स्तरों तक फैले हों।

एक छोटी सी सतह प्रकाशित करें

मॉडल द्वारा देखे जाने से पहले टूल को फ़िल्टर करें। पढ़ने के संचालन को लेखन, भुगतान, विलोपन, परिनियोजन और अन्य परिणामी कार्रवाइयों से अलग रखें।

ADK-Rust में अनुमोदन रखें

mcp.json autoApprove अनुकूलता के लिए संरक्षित है; यह फ्रेमवर्क के प्राधिकरण, पुष्टिकरण हैंडलर, या एप्लिकेशन नीति को बायपास नहीं करता है।

परिवहन का स्वामित्व से मिलान करें

जब आपका एप्लिकेशन स्थानीय चाइल्ड प्रक्रिया का स्वामी हो तो stdio का उपयोग करें। जब किसी अन्य परिनियोजन के पास उपलब्धता, पहचान और स्केलिंग हो तो स्ट्रीम करने योग्य HTTP का उपयोग करें।

सामग्री को अविश्वसनीय मानें

टूल विवरण, स्कीमा, संसाधन सामग्री और परिणाम एक सिस्टम सीमा को पार करते हैं। तर्कों को मान्य करें, परिणाम आकार को बाध्य करें, और मॉडल संदर्भ को शत्रुतापूर्ण निर्देशों से बचाएं।

निर्भरताएँ संचालित करें

कनेक्शन और कार्य का समय निर्धारित करें, जीवनचक्र परिवर्तनों को रिकॉर्ड करें, व्यवसाय निर्भरता की अलग से जांच करें और तय करें कि एक सर्वर अनुपलब्ध होने पर उत्पाद कैसे व्यवहार करेगा।

प्रमाणीकरण विवरण: HTTP बिल्डर बियरर टोकन, कस्टम API-कुंजी हेडर और एक निश्चित OAuth 2.0 क्लाइंट-क्रेडेंशियल टोकन एंडपॉइंट का समर्थन करता है। पूर्ण MCP प्राधिकरण खोज, ब्राउज़र प्राधिकरण, PKCE, और संसाधन-सूचक वार्ता को आधिकारिक rmcp प्राधिकरण APIs या आपकी पहचान परत का उपयोग करना चाहिए।

उपयोगी सिस्टम कनेक्ट करें

एक एजेंट को सावधानीपूर्वक चुनी गई क्षमता दें, फिर नेटवर्क बढ़ाएं।

उस सर्वर से शुरुआत करें जिसे आप समझते हैं, उसके कैटलॉग को फ़िल्टर करें, एक रीड-ओनली टूल को कॉल करें और संपूर्ण परिणाम का निरीक्षण करें। जब उत्पाद के पास प्रत्येक के लिए स्पष्ट कारण हो तो लेखन क्रियाएं, गतिशील प्रबंधन, दूरस्थ सेवाएं, एलिसिटेशन और लंबे समय तक चलने वाले कार्य जोड़ें।