पाइथन में MCP सर्वर बनाना: वेबसर्च और स्क्रेप गाइड
पाइथन उदाहरणों के साथ एआई सहायक के लिए MCP सर्वर बनाएं
मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) बाहरी डेटा स्रोतों और टूल्स के साथ AI सहायकों के इंटरैक्शन के तरीके को क्रांतिकारी बना रहा है। इस गाइड में, हम Python में MCP सर्वर बनाना के बारे में जानेंगे, जिसमें वेब सर्च और स्क्रैपिंग क्षमताओं पर फोकस किए गए उदाहरण शामिल हैं।

मॉडल कॉन्टेक्स्ट प्रोटोकॉल क्या है?
मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) एक ओपन प्रोटोकॉल है जिसे एंथ्रोपिक ने पेश किया है ताकि AI सहायकों को बाहरी सिस्टमों से कनेक्ट करने का एक मानकीकृत तरीका प्रदान किया जा सके। हर डेटा स्रोत के लिए कस्टम इंटीग्रेशन बनाने के बजाय, MCP एक यूनिफाइड इंटरफेस प्रदान करता है जो:
- AI सहायकों (जैसे क्लॉड, चैटGPT, या कस्टम LLM एप्लिकेशन्स) को टूल्स खोजने और उपयोग करने की अनुमति देता है
- डेवलपर्स को एक मानकीकृत प्रोटोकॉल के माध्यम से डेटा स्रोतों, टूल्स, और प्रॉम्प्ट्स को एक्सपोज करने की अनुमति देता है
- सीमलेस इंटीग्रेशन प्रदान करता है बिना हर यूज केस के लिए पहिया फिर से बनाए
प्रोटोकॉल एक क्लाइंट-सर्वर आर्किटेक्चर पर काम करता है जहां:
- MCP क्लाइंट्स (AI सहायक) क्षमताओं को खोजते और उपयोग करते हैं
- MCP सर्वर संसाधनों, टूल्स, और प्रॉम्प्ट्स को एक्सपोज करते हैं
- संचार JSON-RPC के माध्यम से stdio या HTTP/SSE के माध्यम से होता है
अगर आप अन्य भाषाओं में MCP सर्वर लागू करने में रुचि रखते हैं, तो हमारे गाइड पर Go में MCP सर्वर लागू करना पर देखें, जो प्रोटोकॉल विनिर्देश और संदेश संरचना को विस्तार से कवर करता है।
Python में MCP सर्वर क्यों बनाएं?
Python MCP सर्वर विकास के लिए एक उत्कृष्ट विकल्प है क्योंकि:
- रिच इकोसिस्टम: लाइब्रेरीज जैसे
requests,beautifulsoup4,selenium, औरplaywrightवेब स्क्रैपिंग को सरल बनाती हैं - MCP SDK: आधिकारिक Python SDK (
mcp) रॉबस्ट सर्वर लागूकरण समर्थन प्रदान करता है - रैपिड डेवलपमेंट: Python की सरलता तेज प्रोटोटाइपिंग और इटरेशन की अनुमति देती है
- AI/ML इंटीग्रेशन: AI लाइब्रेरीज जैसे
langchain,openai, और डेटा प्रोसेसिंग टूल्स के साथ आसान इंटीग्रेशन - कम्युनिटी समर्थन: बड़ा कम्युनिटी जिसमें विस्तृत डॉक्युमेंटेशन और उदाहरण हैं
डेवलपमेंट एन्वायर्नमेंट सेटअप करना
पहले एक वर्चुअल एन्वायर्नमेंट बनाएं और आवश्यक डिपेंडेंसीज इंस्टॉल करें। वर्चुअल एन्वायर्नमेंट्स का उपयोग Python प्रोजेक्ट आइसोलेशन के लिए आवश्यक है - अगर आपको रिफ्रेशर की आवश्यकता है, तो हमारे venv चीटशीट पर देखें जिसमें विस्तृत कमांड्स और बेस्ट प्रैक्टिसेस हैं।
# वर्चुअल एन्वायर्नमेंट बनाएं और सक्रिय करें
python -m venv mcp-env
source mcp-env/bin/activate # Windows पर: mcp-env\Scripts\activate
# MCP SDK और वेब स्क्रैपिंग लाइब्रेरीज इंस्टॉल करें
pip install mcp requests beautifulsoup4 playwright lxml
playwright install # Playwright के लिए ब्राउज़र ड्राइवर्स इंस्टॉल करें
मॉडर्न विकल्प: अगर आप तेज डिपेंडेंसी रिज़ॉल्यूशन और इंस्टॉलेशन पसंद करते हैं, तो uv - मॉडर्न Python पैकेज और एन्वायर्नमेंट मैनेजर का विचार करें जो बड़े प्रोजेक्ट्स के लिए pip से काफी तेज हो सकता है।
एक बेसिक MCP सर्वर बनाना
एक मिनिमल MCP सर्वर संरचना से शुरू करते हैं। अगर आप Python के नए हैं या सिंटैक्स और सामान्य पैटर्न्स के लिए एक तेज रेफरेंस की आवश्यकता है, तो हमारे Python चीटशीट में Python फंडामेंटल्स का एक व्यापक अवलोकन प्रदान किया गया है।
import asyncio
from mcp.server import Server
from mcp.types import Tool, TextContent
import mcp.server.stdio
# सर्वर इंस्टेंस बनाएं
app = Server("websearch-scraper")
@app.list_tools()
async def list_tools() -> list[Tool]:
"""उपलब्ध टूल्स परिभाषित करें"""
return [
Tool(
name="search_web",
description="जानकारी के लिए वेब सर्च करें",
inputSchema={
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "सर्च क्वेरी"
},
"max_results": {
"type": "number",
"description": "अधिकतम परिणामों की संख्या",
"default": 5
}
},
"required": ["query"]
}
)
]
@app.call_tool()
async def call_tool(name: str, arguments: dict) -> list[TextContent]:
"""टूल एक्सीक्यूशन हैंडल करें"""
if name == "search_web":
query = arguments["query"]
max_results = arguments.get("max_results", 5)
# यहां सर्च लॉजिक लागू करें
results = await perform_web_search(query, max_results)
return [TextContent(
type="text",
text=f"'{query}' के लिए सर्च परिणाम:\n\n{results}"
)]
raise ValueError(f"अज्ञात टूल: {name}")
async def perform_web_search(query: str, max_results: int) -> str:
"""वास्तविक सर्च लागूकरण के लिए प्लेसहोल्डर"""
return f"'{query}' के लिए {max_results} परिणाम मिले"
async def main():
"""सर्वर चलाएं"""
async with mcp.server.stdio.stdio_server() as (read_stream, write_stream):
await app.run(
read_stream,
write_stream,
app.create_initialization_options()
)
if __name__ == "__main__":
asyncio.run(main())
वेब सर्च फंक्शनालिटी लागू करना
अब DuckDuckGo का उपयोग करके एक वास्तविक वेब सर्च टूल लागू करते हैं (जिसे API की आवश्यकता नहीं होती):
import asyncio
import requests
from bs4 import BeautifulSoup
from urllib.parse import quote_plus
async def search_duckduckgo(query: str, max_results: int = 5) -> list[dict]:
"""DuckDuckGo सर्च करें और परिणाम पार्स करें"""
url = f"https://html.duckduckgo.com/html/?q={quote_plus(query)}"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
try:
response = requests.get(url, headers=headers, timeout=10)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
results = []
for result in soup.select('.result')[:max_results]:
title_elem = result.select_one('.result__title')
snippet_elem = result.select_one('.result__snippet')
url_elem = result.select_one('.result__url')
if title_elem and snippet_elem:
results.append({
"title": title_elem.get_text(strip=True),
"snippet": snippet_elem.get_text(strip=True),
"url": url_elem.get_text(strip=True) if url_elem else "N/A"
})
return results
except Exception as e:
raise Exception(f"सर्च विफल: {str(e)}")
def format_search_results(results: list[dict]) -> str:
"""प्रदर्शन के लिए सर्च परिणाम फॉर्मेट करें"""
if not results:
return "कोई परिणाम नहीं मिले।"
formatted = []
for i, result in enumerate(results, 1):
formatted.append(
f"{i}. {result['title']}\n"
f" {result['snippet']}\n"
f" URL: {result['url']}\n"
)
return "\n".join(formatted)
वेब स्क्रैपिंग क्षमताओं को जोड़ना
वेब पेजों से सामग्री निकालने और निकालने के लिए एक टूल जोड़ते हैं। जब HTML सामग्री को LLMs के साथ उपयोग करने के लिए स्क्रैप करते हैं, तो आप इसे Markdown फॉर्मेट में बदलने के लिए भी चाहते हैं ताकि बेहतर प्रोसेसिंग हो सके। इस उद्देश्य के लिए, हमारे व्यापक गाइड पर Python में HTML को Markdown में बदलना देखें, जो 6 अलग-अलग लाइब्रेरीज के साथ बेंचमार्क्स और व्यावहारिक सिफारिशें प्रदान करता है।
from playwright.async_api import async_playwright
import asyncio
async def scrape_webpage(url: str, selector: str = None) -> dict:
"""Playwright का उपयोग करके वेबपेज से सामग्री निकालें"""
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
page = await browser.new_page()
try:
await page.goto(url, timeout=30000)
# सामग्री लोड होने की प्रतीक्षा करें
await page.wait_for_load_state('networkidle')
if selector:
# विशिष्ट तत्व निकालें
element = await page.query_selector(selector)
content = await element.inner_text() if element else "सेलेक्टर नहीं मिला"
else:
# मुख्य सामग्री निकालें
content = await page.inner_text('body')
title = await page.title()
return {
"title": title,
"content": content[:5000], # सामग्री लंबाई सीमित करें
"url": url,
"success": True
}
except Exception as e:
return {
"error": str(e),
"url": url,
"success": False
}
finally:
await browser.close()
# MCP सर्वर में स्क्रैपर टूल जोड़ें
@app.list_tools()
async def list_tools() -> list[Tool]:
return [
Tool(
name="search_web",
description="DuckDuckGo का उपयोग करके वेब सर्च करें",
inputSchema={
"type": "object",
"properties": {
"query": {"type": "string", "description": "सर्च क्वेरी"},
"max_results": {"type": "number", "default": 5}
},
"required": ["query"]
}
),
Tool(
name="scrape_webpage",
description="वेबपेज से सामग्री निकालें",
inputSchema={
"type": "object",
"properties": {
"url": {"type": "string", "description": "निकालने के लिए URL"},
"selector": {
"type": "string",
"description": "विशिष्ट सामग्री के लिए वैकल्पिक CSS सेलेक्टर"
}
},
"required": ["url"]
}
)
]
पूर्ण MCP सर्वर कार्यान्वयन
यहाँ एक पूर्ण, उत्पादन-तैयार MCP सर्वर है जिसमें खोज और स्क्रैपिंग दोनों क्षमताएं हैं:
#!/usr/bin/env python3
"""
वेब खोज और स्क्रैपिंग के लिए MCP सर्वर
वेब खोज करने और पृष्ठों से सामग्री निकालने के उपकरण प्रदान करता है
"""
import asyncio
import logging
from typing import Any
import requests
from bs4 import BeautifulSoup
from urllib.parse import quote_plus
from playwright.async_api import async_playwright
from mcp.server import Server
from mcp.types import Tool, TextContent, ImageContent, EmbeddedResource
import mcp.server.stdio
# लॉगिंग कॉन्फ़िगरेशन
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("websearch-scraper")
# सर्वर बनाना
app = Server("websearch-scraper")
# खोज कार्यान्वयन
async def search_web(query: str, max_results: int = 5) -> str:
"""DuckDuckGo खोजें और प्रारूपित परिणाम वापस करें"""
url = f"https://html.duckduckgo.com/html/?q={quote_plus(query)}"
headers = {"User-Agent": "Mozilla/5.0"}
try:
response = requests.get(url, headers=headers, timeout=10)
soup = BeautifulSoup(response.text, 'html.parser')
results = []
for result in soup.select('.result')[:max_results]:
title = result.select_one('.result__title')
snippet = result.select_one('.result__snippet')
link = result.select_one('.result__url')
if title and snippet:
results.append({
"title": title.get_text(strip=True),
"snippet": snippet.get_text(strip=True),
"url": link.get_text(strip=True) if link else ""
})
# परिणाम प्रारूपित करें
if not results:
return "कोई परिणाम नहीं मिला।"
formatted = [f"'{query}' के लिए {len(results)} परिणाम मिले:\n"]
for i, r in enumerate(results, 1):
formatted.append(f"\n{i}. **{r['title']}**")
formatted.append(f" {r['snippet']}")
formatted.append(f" {r['url']}")
return "\n".join(formatted)
except Exception as e:
logger.error(f"खोज विफल: {e}")
return f"खोज त्रुटि: {str(e)}")
# स्क्रैपर कार्यान्वयन
async def scrape_page(url: str, selector: str = None) -> str:
"""Playwright का उपयोग करके वेबपेज सामग्री निकालें"""
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
page = await browser.new_page()
try:
await page.goto(url, timeout=30000)
await page.wait_for_load_state('networkidle')
title = await page.title()
if selector:
element = await page.query_selector(selector)
content = await element.inner_text() if element else "सेलेक्टर नहीं मिला"
else:
content = await page.inner_text('body')
# सामग्री लंबाई सीमित करें
content = content[:8000] + "..." if len(content) > 8000 else content
result = f"**{title}**\n\nURL: {url}\n\n{content}"
return result
except Exception as e:
logger.error(f"स्क्रैपिंग विफल: {e}")
return f"स्क्रैपिंग त्रुटि: {str(e)}"
finally:
await browser.close()
# MCP टूल परिभाषाएं
@app.list_tools()
async def list_tools() -> list[Tool]:
"""उपलब्ध MCP टूल सूचीबद्ध करें"""
return [
Tool(
name="search_web",
description="DuckDuckGo का उपयोग करके वेब खोजें। शीर्षक, स्निपेट और URL वापस करते हैं।",
inputSchema={
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "खोज प्रश्न"
},
"max_results": {
"type": "number",
"description": "अधिकतम परिणाम संख्या (डिफ़ॉल्ट: 5)",
"default": 5
}
},
"required": ["query"]
}
),
Tool(
name="scrape_webpage",
description="एक वेबपेज से सामग्री निकालें। CSS सेलेक्टर्स के साथ विशिष्ट तत्वों को टारगेट किया जा सकता है।",
inputSchema={
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "निकालने के लिए URL"
},
"selector": {
"type": "string",
"description": "विशिष्ट सामग्री निकालने के लिए वैकल्पिक CSS सेलेक्टर"
}
},
"required": ["url"]
}
)
]
@app.call_tool()
async def call_tool(name: str, arguments: Any) -> list[TextContent]:
"""टूल निष्पादन हैंडल करें"""
try:
if name == "search_web":
query = arguments["query"]
max_results = arguments.get("max_results", 5)
result = await search_web(query, max_results)
return [TextContent(type="text", text=result)]
elif name == "scrape_webpage":
url = arguments["url"]
selector = arguments.get("selector")
result = await scrape_page(url, selector)
return [TextContent(type="text", text=result)]
else:
raise ValueError(f"अज्ञात टूल: {name}")
except Exception as e:
logger.error(f"टूल निष्पादन विफल: {e}")
return [TextContent(
type="text",
text=f"{name} निष्पादित करने में त्रुटि: {str(e)}"
)]
async def main():
"""MCP सर्वर चलाएं"""
logger.info("वेबसर्च-स्क्रैपर MCP सर्वर शुरू कर रहे हैं")
async with mcp.server.stdio.stdio_server() as (read_stream, write_stream):
await app.run(
read_stream,
write_stream,
app.create_initialization_options()
)
if __name__ == "__main__":
asyncio.run(main())
अपने MCP सर्वर को कॉन्फ़िगर करने के लिए
अपने MCP सर्वर को क्लॉड डेस्कटॉप या अन्य MCP क्लाइंट्स के साथ उपयोग करने के लिए, एक कॉन्फ़िगरेशन फ़ाइल बनाएं:
क्लॉड डेस्कटॉप के लिए (claude_desktop_config.json):
{
"mcpServers": {
"websearch-scraper": {
"command": "python",
"args": [
"/path/to/your/mcp_server.py"
],
"env": {}
}
}
}
स्थान:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
अपने MCP सर्वर का परीक्षण करें
कार्यक्षमता की पुष्टि करने के लिए एक परीक्षण स्क्रिप्ट बनाएं:
import asyncio
import json
import sys
from io import StringIO
async def test_mcp_server():
"""स्थानीय रूप से MCP सर्वर परीक्षण करें"""
# खोज परीक्षण
print("वेब खोज परीक्षण कर रहे हैं...")
results = await search_web("Python MCP ट्यूटोरियल", 3)
print(results)
# स्क्रैपर परीक्षण
print("\n\nवेबपेज स्क्रैपर परीक्षण कर रहे हैं...")
content = await scrape_page("https://example.com")
print(content[:500])
if __name__ == "__main__":
asyncio.run(test_mcp_server())
उन्नत विशेषताएं और सर्वोत्तम प्रथाएं
1. रेट लिमिटिंग
लक्ष्य सर्वरों को ओवरव्हेल्म करने से बचने के लिए रेट लिमिटिंग लागू करें:
import time
from collections import defaultdict
class RateLimiter:
def __init__(self, max_requests: int = 10, time_window: int = 60):
self.max_requests = max_requests
self.time_window = time_window
self.requests = defaultdict(list)
async def acquire(self, key: str):
now = time.time()
self.requests[key] = [
t for t in self.requests[key]
if now - t < self.time_window
]
if len(self.requests[key]) >= self.max_requests:
raise Exception("रेट लिमिट पार हो गया")
self.requests[key].append(now)
limiter = RateLimiter(max_requests=10, time_window=60)
2. कैशिंग
प्रदर्शन सुधारने के लिए कैशिंग जोड़ें:
from functools import lru_cache
import hashlib
@lru_cache(maxsize=100)
async def cached_search(query: str, max_results: int):
return await search_web(query, max_results)
3. त्रुटि हैंडलिंग
मजबूत त्रुटि हैंडलिंग लागू करें:
from enum import Enum
class ErrorType(Enum):
NETWORK_ERROR = "नेटवर्क त्रुटि"
PARSE_ERROR = "पार्स त्रुटि"
RATE_LIMIT = "रेट लिमिट पार हो गया"
INVALID_INPUT = "अमान्य इनपुट"
def handle_error(error: Exception, error_type: ErrorType) -> str:
logger.error(f"{error_type.value}: {str(error)}")
return f"त्रुटि ({error_type.value}): {str(error)}"
4. इनपुट वैलिडेशन
प्रोसेस करने से पहले उपयोगकर्ता इनपुट वैलिडेट करें:
from urllib.parse import urlparse
def validate_url(url: str) -> bool:
try:
result = urlparse(url)
return all([result.scheme, result.netloc])
except:
return False
def validate_query(query: str) -> bool:
return len(query.strip()) > 0 and len(query) < 500
डिप्लॉयमेंट विचार
वेब डिप्लॉयमेंट के लिए SSE ट्रांसपोर्ट का उपयोग
वेब-आधारित डिप्लॉयमेंट के लिए, SSE (Server-Sent Events) ट्रांसपोर्ट का उपयोग करें। अगर आप सर्वरलेस डिप्लॉयमेंट की सोच रहे हैं, तो आपको AWS Lambda प्रदर्शन का तुलनात्मक अध्ययन JavaScript, Python, और Golang के बीच करने में रुचि हो सकती है ताकि आप अपने रनटाइम के बारे में सूचित निर्णय ले सकें:
import mcp.server.sse
async def main_sse():
"""SSE ट्रांसपोर्ट के साथ सर्वर चलाएं"""
from starlette.applications import Starlette
from starlette.routing import Mount
sse = mcp.server.sse.SseServerTransport("/messages")
starlette_app = Starlette(
routes=[
Mount("/mcp", app=sse.get_server())
]
)
import uvicorn
await uvicorn.Server(
config=uvicorn.Config(starlette_app, host="0.0.0.0", port=8000)
).serve()
AWS Lambda डिप्लॉयमेंट
MCP सर्वर को AWS Lambda फंक्शन के रूप में भी डिप्लॉय किया जा सकता है, विशेष रूप से SSE ट्रांसपोर्ट का उपयोग करते हुए। Lambda डिप्लॉयमेंट के लिए व्यापक गाइड्स के लिए:
- AWS SAM + AWS SQS + Python PowerTools का उपयोग करके Lambda कोडिंग - Python Lambda विकास के लिए सर्वोत्तम प्रथाओं को सीखें
- Python और Terraform के साथ डुअल-मोड AWS Lambda बनाना - पूर्ण इन्फ्रास्ट्रक्चर-एज-कोड दृष्टिकोण
Docker डिप्लॉयमेंट
कंटेनराइज्ड डिप्लॉयमेंट के लिए एक Dockerfile बनाएं:
FROM python:3.11-slim
WORKDIR /app
# सिस्टम डिपेंडेंसीज इंस्टॉल करें
RUN apt-get update && apt-get install -y \
wget \
&& rm -rf /var/lib/apt/lists/*
# Python डिपेंडेंसीज इंस्टॉल करें
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
RUN playwright install chromium
RUN playwright install-deps
# एप्लिकेशन कॉपी करें
COPY mcp_server.py .
CMD ["python", "mcp_server.py"]
प्रदर्शन अनुकूलन
एसिंक्रोनस ऑपरेशन्स
सहयोगी ऑपरेशन्स के लिए asyncio का उपयोग करें:
async def search_multiple_queries(queries: list[str]) -> list[str]:
"""बहुत सारे प्रश्नों को सहयोगी रूप से खोजें"""
tasks = [search_web(query) for query in queries]
results = await asyncio.gather(*tasks)
return results
कनेक्शन पूलिंग
बेहतर प्रदर्शन के लिए कनेक्शन्स को पुनः उपयोग करें:
import aiohttp
session = None
async def get_session():
global session
if session is None:
session = aiohttp.ClientSession()
return session
async def fetch_url(url: str) -> str:
session = await get_session()
async with session.get(url) as response:
return await response.text()
सुरक्षा सर्वोत्तम प्रथाएं
- इनपुट सैनीटाइजेशन: हमेशा उपयोगकर्ता इनपुट्स को वैलिडेट और सैनीटाइज करें
- URL व्हाइटलिस्टिंग: स्क्रैपिंग के लिए URL व्हाइटलिस्टिंग लागू करने का विचार करें
- टाइमआउट कंट्रोल्स: संसाधन खपत को रोकने के लिए उपयुक्त टाइमआउट सेट करें
- कंटेंट लिमिट्स: स्क्रैप की गई सामग्री की सीमा रखें
- ऑथेंटिकेशन: उत्पादन डिप्लॉयमेंट के लिए ऑथेंटिकेशन लागू करें
- HTTPS: उत्पादन में SSE ट्रांसपोर्ट के लिए HTTPS का उपयोग करें
विभिन्न LLM प्रोवाइडर्स के साथ काम करना
हालांकि MCP का विकास Anthropic द्वारा Claude के लिए किया गया था, प्रोटोकॉल को किसी भी LLM के साथ काम करने के लिए डिज़ाइन किया गया है। अगर आप MCP सर्वर बनाते हैं जो कई AI प्रोवाइडर्स के साथ इंटरैक्ट करते हैं और संरचित आउटपुट की आवश्यकता है, तो आपको OpenAI, Gemini, Anthropic, Mistral, और AWS Bedrock सहित लोकप्रिय LLM प्रोवाइडर्स के बीच संरचित आउटपुट की तुलना देखनी चाहिए।
उपयोगी लिंक्स और संसाधन
- MCP आधिकारिक दस्तावेज़ीकरण
- GitHub पर MCP Python SDK
- MCP स्पेसिफिकेशन
- Anthropic का MCP सर्वर रिपॉजिटरी
- Playwright Python दस्तावेज़ीकरण
- BeautifulSoup दस्तावेज़ीकरण
- MCP समुदाय उदाहरण
संबंधित संसाधन
MCP और प्रोटोकॉल कार्यान्वयन
- Go में MCP सर्वर कार्यान्वयन - Go में MCP कार्यान्वयन के बारे में सीखें, संदेश संरचना और प्रोटोकॉल स्पेसिफिकेशन्स के साथ
Python विकास
- Python चीतशीट - Python सिंटैक्स और पैटर्न के लिए त्वरित संदर्भ
- venv चीतशीट - वर्चुअल एन्वायर्नमेंट प्रबंधन कमांड्स
- uv - Python पैकेज मैनेजर - pip के मुकाबले आधुनिक, तेज़ विकल्प
वेब स्क्रैपिंग और कंटेंट प्रोसेसिंग
- Python में HTML को Markdown में बदलना - LLM उपभोग के लिए स्क्रैप की गई सामग्री को प्रोसेस करने के लिए आवश्यक
सर्वरलेस डिप्लॉयमेंट संसाधन
- AWS Lambda प्रदर्शन तुलना: JavaScript vs Python vs Golang - अपने सर्वरलेस MCP डिप्लॉयमेंट के लिए सही रनटाइम चुनें
- Lambda के साथ AWS SAM + SQS + Python PowerTools - उत्पादन-तैयार Lambda विकास पैटर्न
- Python और Terraform के साथ डुअल-मोड AWS Lambda - इन्फ्रास्ट्रक्चर-एज-कोड दृष्टिकोण
LLM इंटीग्रेशन
- LLM प्रोवाइडर्स के बीच संरचित आउटपुट तुलना - OpenAI, Gemini, Anthropic, Mistral, और AWS Bedrock
निष्कर्ष
Python में MCP सर्वर बनाना AI सहायकों को कस्टम टूल्स और डेटा स्रोतों के साथ बढ़ाने के लिए शक्तिशाली संभावनाएं खोलता है। यहां प्रदर्शित वेब खोज और स्क्रैपिंग क्षमताएं बस शुरुआत हैं—आप इस आधार को डेटाबेस, APIs, फाइल सिस्टम, और लगभग किसी भी बाहरी सिस्टम के साथ इंटीग्रेट करने के लिए बढ़ा सकते हैं।
मॉडल कॉन्टेक्स्ट प्रोटोकॉल अभी भी विकसित हो रहा है, लेकिन इसके AI टूल इंटीग्रेशन के लिए मानकीकृत दृष्टिकोण के कारण यह अगली पीढ़ी के AI-सक्षम एप्लिकेशन बनाने वाले डेवलपर्स के लिए एक रोमांचक तकनीक है। चाहे आप अपने संगठन के लिए आंतरिक टूल बनाएं या समुदाय के लिए सार्वजनिक MCP सर्वर बनाएं, Python तेज़ विकास और डिप्लॉयमेंट के लिए एक उत्कृष्ट आधार प्रदान करता है।