ऑटो-जेन + स्क्रेपलेस: अपने एजेंटों को एमसीपी के जरिए लाइव वेब टूल्स दें
Lead Scraping Automation Engineer
TL;DR:
- AutoGen
mcp_server_toolsके साथ Scrapeless MCP Server के उपकरणों को लोड करता है और सभी 21 को एक एजेंट को सौंपता है,scrape_markdownसे लेकर पूर्ण ब्राउज़र सेट तक। - कनेक्शन एक ऑब्जेक्ट है,
StreamableHttpServerParams, जो एपीआई प्वाइंट औरx-api-tokenहेडर को ले जाता है; उपकरणों को लोड या कॉल करने के लिए कोई मॉडल क्लाइंट की आवश्यकता नहीं है। - प्रत्येक उपकरण
StreamableHttpMcpToolAdapterके रूप में आता है, इसलिए आप इसे सीधेrun_json({...}, CancellationToken())के साथ कॉल कर सकते हैं इससे पहले कि इसे एजेंट के साथ जोड़ें। - केवल
AssistantAgent.runको एक मॉडल-प्रदाता कुंजी की आवश्यकता होती है; उपकरणों को लोड करना औरscrape_markdownकॉल करना आवश्यक नहीं है। - एक
scrape_markdownकॉल लक्ष्य पृष्ठ को Markdown के रूप में लौटाती है, जो एजेंट के विचार करने के लिए तैयार है। - Scrapeless फ्री प्लान पर शुरू करें और अपने AutoGen एजेंटों को वास्तविक वेब उपकरण दें।
AutoGen माइक्रोसॉफ्ट का मल्टी-एजेंट एप्लीकेशन के लिए ढांचा है, और इसके एजेंट केवल उन उपकरणों के रूप में सक्षम होते हैं जो उनके पास होते हैं। बक्से से बाहर, उनमें से कोई भी उपकरण लाइव वेब तक नहीं पहुँचता। मॉडल संदर्भ प्रोटोकॉल उस अंतर को बंद करता है: AutoGen को एक MCP सर्वर पर इंगित करें और यह जो भी उपकरण अनावरण करता है, वह एक AutoGen उपकरण बन जाता है जिसे आपका एजेंट कॉल कर सकता है, किसी भी फ़ंक्शन उपकरण के समान इंटरफ़ेस के साथ।
यह गाइड AutoGen को Scrapeless MCP सर्वर से जोड़ता है, इसके 21 उपकरणों को लोड करता है, वास्तव में एक को कॉल करता है, और सेट को एक AssistantAgent से संलग्न करता है — सभी को लाइव सर्वर के खिलाफ सत्यापित किया गया। एकमात्र चरण जिसे एक मॉडल-प्रदाता कुंजी की आवश्यकता होती है, वह एजेंट का उत्पादन कॉल है, और यह पोस्ट स्पष्ट करती है कि वह रेखा कहाँ गिरती है।
Why Scrapeless MCP
Scrapeless MCP सर्वर वेब-सक्रैपिंग और ब्राउज़र उपकरणों को उजागर करता है जिन्हें एजेंट सीधे कॉल कर सकता है, इसलिए आपको स्वयं स्क्रैपिंग लेयर बनाना या होस्ट करना नहीं है। एक कनेक्शन 21 उपकरणों की सेवा करता है: सामग्री के लिए scrape_markdown और scrape_html, खोज डेटा के लिए google_search और google_trends, कैप्चर के लिए scrape_screenshot, और एक पूर्ण browser_* सेट जो एक क्लाउड ब्राउज़र को चलाता है। AutoGen प्रत्येक को mcp_server_tools के माध्यम से एक मूलभूत उपकरण में बदल देता है, बिना किसी अडैप्टर कोड के लिखे।
browser_* उपकरण Scrapeless क्लाउड ब्राउज़र को चलाते हैं, ताकि एक एजेंट एक इंटरएक्टिव पृष्ठ पर नेविगेट कर सके और जो रेंडर होता है उसे पढ़ सके, सब Scrapeless के बुनियादी ढांचे पर। एक अलग ढांचे में उसी सर्वर को वायर्ड करने के लिए, LangChain + Scrapeless MCP पोस्ट LangChain पक्ष को कवर करती है।
Prerequisites
- Python 3.10 या बाद का संस्करण।
- डैशबोर्ड से एक Scrapeless एपीआई कुंजी, जिसे
SCRAPELESS_API_KEYके रूप में निर्यात किया गया है। - केवल एजेंट रन के लिए एक मॉडल-प्रदाता कुंजी (जैसे
OPENAI_API_KEY) की आवश्यकता है। उपकरणों को लोड और कॉल करने के लिए इसकी आवश्यकता नहीं है।
Install
MCP एक्स्ट्रा और एजेंट पैकेज के साथ AutoGen स्थापित करें।
bash
pip install "autogen-ext[mcp]" autogen-agentchat
अपने Scrapeless कुंजी को शेल में सेट करें। रन समय पर वास्तविक कुंजी का उपयोग करें और अपने स्रोत से प्लेसहोल्डर को बाहर रखें।
bash
export SCRAPELESS_API_KEY="sk_your_key_here"
Load the Tools
StreamableHttpServerParams एपीआई कुंजी को x-api-token हेडर में ले जाने वाले प्वाइंट का नाम देता है। mcp_server_tools हाथ मिलाता है और सर्वर के उपकरणों को AutoGen उपकरणों के रूप में लौटाता है।
python
import asyncio
import os
from autogen_ext.tools.mcp import StreamableHttpServerParams, mcp_server_tools
async def main() -> None:
params = StreamableHttpServerParams(
url="https://api.scrapeless.com/mcp",
headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"]},
)
tools = await mcp_server_tools(params)
names = sorted(tool.name for tool in tools)
print("tool count:", len(names))
print("tools:", ", ".join(names))
asyncio.run(main())
लाइव सर्वर 21 उपकरण लौटाता है, केवल Scrapeless कुंजी सेट करके लोड किया गया।
text
tool count: 21
tools: browser_click, browser_close, browser_create, browser_get_html, browser_get_text, browser_go_back, browser_go_forward, browser_goto, browser_press_key, browser_screenshot, browser_scroll, browser_scroll_to, browser_snapshot, browser_type, browser_wait, browser_wait_for, google_search, google_trends, scrape_html, scrape_markdown, scrape_screenshot
परिवहन और संदेश परत मॉडल संदर्भ प्रोटोकॉल विनिर्देशन का पालन करती है, जो JSON-RPC 2.0 विनिर्देशन पर आधारित है। एक स्थानीय सर्वर के लिए, AutoGen StdioServerParams भी भेजता है; Scrapeless सर्वर एक होस्टेड HTTP एपींड है, इसलिए यह गाइड स्ट्रीमेबल-HTTP पैरामीटर का उपयोग करता है।
Call a Tool
प्रत्येक लोड किया गया उपकरण StreamableHttpMcpToolAdapter है, और आप इसे एजेंट को सौंपने से पहले सीधे कॉल कर सकते हैं। run_json तर्क और एक रद्दीकरण टोकन लेता है और उपकरण का परिणाम लौटाता है।
python
import asyncio
import os
from autogen_core import CancellationToken
from autogen_ext.tools.mcp import StreamableHttpServerParams, mcp_server_tools
async def main() -> None:
params = StreamableHttpServerParams(
url="https://api.scrapeless.com/mcp",
headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"]},
)
tools = await mcp_server_tools(params)
scrape_markdown = next(tool for tool in tools if tool.name == "scrape_markdown")
result = await scrape_markdown.run_json({"url": "https://quotes.toscrape.com/"}, CancellationToken())
text = result if isinstance(result, str) else str(result)
print("मार्कडाउन वर्ण:", len(text))
print("एक उद्धरण है:", "The world as we have created it" in text)
asyncio.run(main())
यह कॉल पृष्ठ को मार्कडाउन के रूप में लौटाती है, और सामग्री की जांच पुष्टि करती है कि एक वास्तविक उद्धरण मौजूद है।
text
मार्कडाउन वर्ण: 4424
एक उद्धरण है: सत्य
यह आकार है जो एजेंट वापस पाता है: पृष्ठ सामग्री जिस पर वह तर्क कर सकता है। ऑटोजन एमसीपी टूल्स संदर्भparams और अडाप्टर को पूरी तरह से प्रलेखित करता है।
एक एजेंट को टूल संलग्न करें
टूल्स को AssistantAgent को एक मॉडल क्लाइंट के साथ पास करें, और एजेंट कार्य की आवश्यकता पड़ने पर उन्हें कॉल करता है। यह वह कदम है जिसमें एक मॉडल-प्रदाता कुंजी की आवश्यकता होती है।
नोट:
AssistantAgent.runको एक मॉडल-प्रदाता कुंजी की आवश्यकता है जैसे किOPENAI_API_KEY, जो यहां सेट नहीं है। ऊपर लोड करने और सीधेscrape_markdownकॉल करने के लिए 21 टूल और सीधे कॉल बिना इसकी आवश्यकता के चलते हैं। यह ब्लॉक अपने सटीक आकार के साथ दिखाया गया है; केवल मॉडल राउंड-ट्रिप एक अनिवार्यता की कमी है।
python
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
async def run_agent(tools) -> None:
model_client = OpenAIChatCompletionClient(model="gpt-4o")
agent = AssistantAgent("web_agent", model_client=model_client, tools=tools)
result = await agent.run(
task="उद्धरण लेने के लिए scrape_markdown का उपयोग करें https://quotes.toscrape.com/ और पहले तीन उद्धरणों को लेखकों के साथ सूचीबद्ध करें।"
)
print(result.messages[-1].content)
चालन समय पर मॉडल कार्य को पढ़ता है, URL के साथ scrape_markdown को कॉल करता है, उस मार्कडाउन को प्राप्त करता है जो पहले सीधे कॉल ने प्रदर्शित किया था, और उत्तर लिखता है। टूल वही वस्तुएं होती हैं चाहे मॉडल उन्हें कॉल करे या आप करें।
निष्कर्ष
ऑटोजन और स्क्रेपलेस एमसीपी सर्वर एक नग्न एजेंट से एक ऐसा एजेंट बनाने का एक छोटा रास्ता है जो लाइव वेब को पढ़ता है। mcp_server_tools 21 टूल लोड करता है, run_json एक के काम करने को साबित करती है, और AssistantAgent पर एक tools तर्क सभी को संलग्न करता है। केवल एजेंट की पीढ़ी का चरण एक मॉडल कुंजी की आवश्यकता होती है, इसलिए आप पहले पूरे टूल के सतह को लोड और परीक्षण कर सकते हैं। ऊपर दिए गए स्क्रिप्ट से शुरू करें, एजेंट की आवश्यकता वाले टूल के दायरे का निर्धारण करें, और मॉडल को चलने दें।
एक मुफ़्त स्क्रेपलेस खाता बनाएं एक एपीआई कुंजी प्राप्त करने के लिए, और जब आप एक आवर्ती एजेंट की योजना बनाते हैं तो स्क्रेपलेस मूल्य निर्धारण की जाँच करें।
अक्सर पूछे जाने वाले प्रश्न
प्रश्न: क्या ऑटोजन को एमसीपी टूल लोड करने के लिए एक मॉडल क्लाइंट की आवश्यकता है?
नहीं। mcp_server_tools हैंडशेक चलाता है और केवल स्क्रेपलेस एपीआई कुंजी सेट करने के साथ टूल लौटाता है, और प्रत्येक टूल को सीधे run_json के साथ कॉल किया जा सकता है। एक मॉडल क्लाइंट केवल तब आवश्यक है जब आप टूल को AssistantAgent से संलग्न करते हैं और run को कॉल करते हैं, क्योंकि उस समय मॉडल यह तय करता है कि कौन से टूल को कॉल करना है।
प्रश्न: मैं बिना एजेंट के एमसीपी टूल को कैसे कॉल करूँ?
mcp_server_tools से प्रत्येक टूल एक StreamableHttpMcpToolAdapter है जिसमें एक run_json विधि है। तर्कों का एक शब्दकोश और एक CancellationToken पास करें, और यह टूल परिणाम लौटाता है। यह कनेक्शन की पुष्टि करने और एक टूल के आउटपुट का निरीक्षण करने का सबसे तेज़ तरीका है इससे पहले कि आप इसे एजेंट में वायर करें।
प्रश्न: मैं HTTP के बजाय stdio एमसीपी सर्वर से कैसे कनेक्ट करूं?
पैरामीटर को बदलें। URL के बजाय सर्वर कमांड के साथ StdioServerParams का उपयोग करें, फिर इसे उसी mcp_server_tools कॉल में पास करें। स्क्रेपलेस एमसीपी सर्वर एक होस्टेड HTTP अंत बिंदु है, इसलिए यह गाइड स्ट्रीम करने योग्य-HTTP पैरामीटर का उपयोग करता है।
प्रश्न: मैं एक एजेंट को केवल कुछ टूल कैसे दूं?
mcp_server_tools एक सूची लौटाता है, इसलिए इसे AssistantAgent को पास करने से पहले इसे फ़िल्टर करें। केवल scrape_markdown और google_search को एजेंट देना अधिक सुरक्षित है बनिस्पत पूर्ण 21-टूल सेट से जब कार्य को केवल सामग्री और खोज की आवश्यकता हो।
प्रश्न: स्क्रेपलेस सर्वर कौन से टूल प्रदान करता है?
इक्कीस: scrape_markdown, scrape_html, scrape_screenshot, google_search, google_trends, और क्लाउड ब्राउज़र पर नेविगेशन, क्लिक करने, टाइप करने, स्क्रॉल करने और प्रतीक्षा करने के लिए एक 16-टूल browser_* सेट। एकसाथ वे सामग्री निकासी, खोज और पूर्ण ब्राउज़र अंतःक्रिया को कवर करते हैं।
प्रश्न: क्या टार्गेट के नियमों के द्वारा उपकरणों के माध्यम से स्क्रैपिंग बाधित है?
हां। उपकरण सार्वजनिक पृष्ठों को लाते हैं, और आप प्रत्येक लक्ष्य की शर्तों और इसके रोबोट्स निष exclusions प्रोटोकॉल निर्देशों का सम्मान करने के लिए ज़िम्मेदार रहते हैं। मात्रा को सीमित रखें और डेटा को सार्वजनिक रखें, और कार्य के लिए आवश्यक उपकरणों तक एजेंट को सीमित करें।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



