वेरसेल एआई एसडीके + स्क्रैपलेस: आपके एजेंटों के लिए वेब उपकरण एमसीपी के माध्यम से
Lead Scraping Automation Engineer
TL;DR:
- Vercel AI SDK
createMCPClientसे Scrapeless MCP Server से जुड़ता है, जिसमें ट्रांसपोर्ट कॉन्फ़िग में एंडपॉइंट औरx-api-tokenहेडर पास किया जाता है। await client.tools()सभी 21 टूल्स लौटाता है —scrape_markdown,scrape_html,google_search,google_trends,scrape_screenshot, और 16-टूलbrowser_*सेट — नाम द्वारा कुंजीबद्ध, जोgenerateTextमें फैलाने के लिए तैयार है।- AI SDK 5 और इसके बाद MCP क्लाइंट अपने खुद के पैकेज में रहता है:
@ai-sdk/mcpसेcreateMCPClientको आयात करें, न किaiसेexperimental_createMCPClient, जिसे हटा दिया गया है। - प्रत्येक टूल एक
executeविधि प्रदर्शित करता है, इसलिए आपtools.scrape_markdown.execute({ url })को सीधे कॉल कर सकते हैं और एक मॉडल शामिल होने से पहले मार्कडाउन को वापस पढ़ सकते हैं — टूल्स को लोड या कॉल करने के लिए कोई मॉडल कुंजी की आवश्यकता नहीं है। - केवल
generateTextचरण को एक मॉडल-प्रदाता कुंजी की आवश्यकता होती है, क्योंकि यहीं मॉडल यह तय करता है कि किन टूल्स को कॉल करना है। - Scrapeless मुफ्त योजना पर शुरू करें और अपने TypeScript एजेंटों को वास्तविक वेब टूल दें।
Vercel AI SDK TypeScript में AI ऐप्स बनाने के लिए मानक टूलकिट है, और इसके अंदर एक मॉडल केवल उन टूल्स के माध्यम से कार्य कर सकता है जिन्हें आप इसे पास करते हैं। आधार SDK में कुछ भी लाइव वेब तक नहीं पहुंचता है। मॉडल संदर्भ प्रोटोकॉल इस अंतर को बंद करता है: SDK के MCP क्लाइंट को एक सर्वर की ओर इंगित करें और उस सर्वर द्वारा प्रदर्शित प्रत्येक टूल एक AI SDK टूल बन जाता है जिसे आप सीधे generateText या streamText में फैला सकते हैं।
यह गाइड AI SDK को Scrapeless MCP Server से जोड़ती है, इसके 21 टूल्स को लोड करती है, एक को वास्तव में कॉल करती है, और फिर सेट को एक मॉडल को सौंपती है — लाइव एंडपॉइंट की तुलना में सत्यापित। केवल वह चरण जिसे मॉडल-प्रदाता कुंजी की आवश्यकता होती है, वह जनरेशन कॉल है, और यह पोस्ट ठीक उसी स्थान को चिह्नित करती है जहां वह रेखा बैठती है।
Scrapeless MCP Server एक एजेंट को क्या देता है
Scrapeless MCP Server वेब-स्क्रैपिंग और ब्राउज़र टूल्स को उजागर करता है जिन्हें एक एजेंट सीधे कॉल कर सकता है, इसलिए स्क्रैपिंग परत कुछ ऐसा नहीं है जिसे आप बनाते या होस्ट करते हैं। एक कनेक्शन 21 टूल को सेव करता है: पृष्ठ सामग्री के लिए scrape_markdown और scrape_html, खोज डेटा के लिए google_search और google_trends, कैप्चर के लिए scrape_screenshot, और 16-टूल browser_* सेट जो क्लिक, टाइपिंग, स्क्रॉलिंग और इंतजार के माध्यम से एक क्लाउड ब्राउज़र को चलाता है।
browser_* टूल्स Scrapeless क्लाउड ब्राउज़र पर चलते हैं, इसलिए एक मॉडल एक इंटरएक्टिव पृष्ठ को नेविगेट कर सकता है और बिना आपके मशीन पर ब्राउज़र के क्या वास्तव में रेंडर होता है उसे पढ़ सकता है। प्रोटोकॉल के लिए खुद, What is MCP विस्तृत विवरण है, और LangChain + Scrapeless MCP उसी सर्वर को एक पायथन स्टैक में जोड़ता है।
आवश्यकताएँ
- Node.js 22 या बाद का।
- डैशबोर्ड से एक Scrapeless API कुंजी, जिसे
SCRAPELESS_API_KEYके रूप में निर्यात किया गया। - केवल जनरेशन चरण के लिए एक मॉडल-प्रदाता कुंजी जैसे
OPENAI_API_KEY। टूल्स को लोड और कॉल करने के लिए इसकी आवश्यकता नहीं है।
स्थापित करें
AI SDK कोर और MCP क्लाइंट पैकेज स्थापित करें।
bash
npm install ai@7.0.34 @ai-sdk/mcp@2.0.16
अपने Scrapeless कुंजी को शेल में सेट करें, और प्लेसहोल्डर को अपने स्रोत से बाहर रखें।
bash
export SCRAPELESS_API_KEY="sk_your_key_here"
कनेक्ट करें और टूल लोड करें
createMCPClient कनेक्शन खोलता है। http ट्रांसपोर्ट एंडपॉइंट और हेडर्स को ले जाता है, और client.tools() हाथ मिलाता है और नाम द्वारा कुंजीबद्ध टूल लौटाता है।
typescript
import { createMCPClient } from "@ai-sdk/mcp";
const client = await createMCPClient({
transport: {
type: "http",
url: "https://api.scrapeless.com/mcp",
headers: { "x-api-token": process.env.SCRAPELESS_API_KEY! },
},
});
const tools = await client.tools();
const names = Object.keys(tools).sort();
console.log("tool count:", names.length);
console.log("tools:", names.join(", "));
await client.close();
लाइव सर्वर 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 विशिष्टता पर सवारी करती है। AI SDK stdio या SSE सर्वरों के लिए एक ट्रांसपोर्ट उदाहरण को भी स्वीकार करता है; Scrapeless सर्वर एक होस्टेड HTTP एंडपॉइंट है, इसलिए यहाँ http ट्रांसपोर्ट सही है।
सीधे एक टूल कॉल करें
प्रत्येक प्रविष्टि जो लौटाई गई वस्तु में है, वह एक पूर्ण AI SDK उपकरण है जिसमें एक execute विधि है, इसलिए आप स्वयं एक कॉल कर सकते हैं इससे पहले कि कोई मॉडल जोड़ा जाए। execute तर्क और एक कॉल संदर्भ लेता है, और एक परिणाम लौटाता है जिसका सामग्री एक ब्लॉकों की सूची होती है।
typescript
import { createMCPClient } from "@ai-sdk/mcp";
const client = await createMCPClient({
transport: {
type: "http",
url: "https://api.scrapeless.com/mcp",
headers: { "x-api-token": process.env.SCRAPELESS_API_KEY! },
},
});
const tools = await client.tools();
const result = await tools.scrape_markdown.execute(
{ url: "https://quotes.toscrape.com/" },
{ toolCallId: "call_1", messages: [] },
);
const text = result.content
.filter((block: { type: string }) => block.type === "text")
.map((block: { text: string }) => block.text)
.join("");
console.log("markdown characters:", text.length);
console.log("contains a quote:", text.includes("Einstein"));
await client.close();
यह कॉल पृष्ठ को Markdown के रूप में लौटाता है, और सामग्री की जांच पुष्टि करती है कि वास्तविक पाठ वापस आया है।
text
markdown characters: 4308
contains a quote: true
यह एक मॉडल का रूप है जो उसी उपकरण से वापसी करता है: पृष्ठ की सामग्री जिस पर वह तर्क कर सकता है। AI SDK MCP उपकरणों का डोक्यूमेंटेशन परिवहन विकल्पों और client.close() को कवर करता है जिसे आपको काम खत्म होने पर कॉल करना चाहिए।
एक मॉडल को उपकरण बुलाने दें
उपकरणों को generateText में फैलाएं और मॉडल उन्हें तब बुलाता है जब कार्य की आवश्यकता होती है। मल्टी-स्टेप उपकरण उपयोग को एक बंद स्थिति की आवश्यकता होती है — stepCountIs मॉडल को एक उपकरण कॉल करने देता है, परिणाम पढ़ता है, और उत्तर देता है। यह वह कदम है जिसमें एक मॉडल-प्रदाता कुंजी की आवश्यकता होती है।
नोट: इस ब्लॉक को
@ai-sdk/openaiप्रदाता पैकेज और एकOPENAI_API_KEYकी आवश्यकता होती है, जिसमें से कोई भी यहां सेट नहीं है। 21 उपकरणों को लोड करना और ऊपर की सीधीscrape_markdownकॉल उनके बिना चलती है। ब्लॉक को उसके सटीक आकार के साथ दिखाया गया है; केवल मॉडल राउंड-ट्रिप एक प्रीरेक्विज़िट गैप है।
typescript
import { createMCPClient } from "@ai-sdk/mcp";
import { generateText, stepCountIs } from "ai";
import { openai } from "@ai-sdk/openai";
const client = await createMCPClient({
transport: {
type: "http",
url: "https://api.scrapeless.com/mcp",
headers: { "x-api-token": process.env.SCRAPELESS_API_KEY! },
},
});
const tools = await client.tools();
const { text } = await generateText({
model: openai("gpt-4o"),
tools,
stopWhen: stepCountIs(5),
prompt:
"scrape_markdown का उपयोग करके https://quotes.toscrape.com/ को लोड करें और पहले तीन उद्धरणों को लेखक के साथ सूचीबद्ध करें।",
});
console.log(text);
await client.close();
रन समय पर मॉडल प्रॉम्प्ट पढ़ता है, URL के साथ scrape_markdown को बुलाता है, पहले से लौटाए गए Markdown को प्राप्त करता है, और उत्तर लिखता है। उपकरण वही वस्तुएं हैं चाहे मॉडल उन्हें बुलाए या आप करें।
निष्कर्ष
Vercel AI SDK और Scrapeless MCP सर्वर एक नग्न मॉडल से एक ऐसा जो लाइव वेब पढ़ता है, तक पहुँचने का एक संक्षिप्त रास्ता है। createMCPClient कनेक्शन खोलता है, client.tools() सभी 21 उपकरण लौटाता है, execute एक कार्य करने का प्रमाण देता है, और generateText में tools फैलाना सेट को मॉडल को सौंपता है। केवल जनरेशन स्टेप को एक मॉडल कुंजी की आवश्यकता होती है, इसलिए आप पहले पूरे टूल सतह को कनेक्ट और परीक्षण कर सकते हैं। ऊपर दिए गए स्क्रिप्ट से शुरू करें, उपकरणों को कार्य की आवश्यकता के अनुसार सीमित करें, और मॉडल को चलाने दें।
एक मुफ्त Scrapeless खाता बनाएं एक API कुंजी प्राप्त करने के लिए, और जब आप एक आवर्ती एजेंट की योजना बनाते हैं तो Scrapeless कीमतें की जांच करें।
सामान्य प्रश्न
प्रश्न: क्या Vercel AI SDK को MCP उपकरणों को लोड करने के लिए मॉडल कुंजी की आवश्यकता है?
नहीं। createMCPClient हैंडशेक करता है और client.tools() केवल Scrapeless API कुंजी सेट करके उपकरण लौटाता है, और प्रत्येक उपकरण की execute विधि इसे सीधे कॉल करती है। एक मॉडल-प्रदाता कुंजी की आवश्यकता केवल तब होती है जब आप उपकरणों को generateText या streamText में फैलाते हैं, क्योंकि तब मॉडल तय करता है कि कौन से उपकरणों को कॉल करना है।
प्रश्न: मैं कौन सा आयात उपयोग करूं - createMCPClient या experimental_createMCPClient?
@ai-sdk/mcp से createMCPClient का उपयोग करें। पुरानी ट्यूटोरियल ai पैकेज से experimental_createMCPClient को आयात करते हैं; MCP क्लाइंट को उसके अपने @ai-sdk/mcp पैकेज में स्थानांतरित किया गया था, और ai फिर से निर्यात को हटा दिया गया था। यदि कोई उदाहरण आयात को हल नहीं करता है, तो यह आमतौर पर यही कारण होता है।
प्रश्न: मैं बिना किसी मॉडल के एक MCP उपकरण को कैसे कॉल करूं?
await client.tools() कॉल करें और फिर tools.<name>.execute(args, { toolCallId, messages: [] })। यह एक परिणाम लौटाता है जिसका सामग्री एक ब्लॉकों की सूची होती है; पाठ ब्लॉकों से पाठ पढ़ें। यह कनेक्शन की पुष्टि करने और किसी उपकरण के आउटपुट का निरीक्षण करने का सबसे तेज़ तरीका है इससे पहले कि आप एक मॉडल में वायर करें।
प्रश्न: मैं एक स्थानीय MCP सर्वर से कैसे कनेक्ट करूं?
एक परिवहन उदाहरण stdio या SSE के लिए http परिवहन ऑब्जेक्ट के बजाय पास करें, फिर उसी तरीके से client.tools() कॉल करें। Scrapeless MCP सर्वर एक होस्टेड HTTP एंडपॉइंट है, इसलिए यह मार्गदर्शन http परिवहन का उपयोग करता है।
प्रश्न: क्या टूल के माध्यम से स्क्रैपिंग लक्ष्यों के नियमों द्वारा बंधित है?
हाँ। टूल सार्वजनिक पृष्ठों को प्राप्त करते हैं, और आप प्रत्येक लक्ष्य की शर्तों और इसके रोबॉट्स निषेध प्रोटोकॉल निर्देशन का पालन करने के लिए जिम्मेदार रहते हैं। मात्रा को सीमित रखें, डेटा सार्वजनिक रखें, और मॉडल को उन टूल्स तक सीमित रखें जिनकी कार्य को वास्तव में आवश्यकता है।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



