Skip to content

Latest commit

 

History

History
851 lines (681 loc) · 35.3 KB

File metadata and controls

851 lines (681 loc) · 35.3 KB

کمیونٹی اور تعاون

MCP میں تعاون کیسے کریں: ٹولز، ڈاکس، کوڈ اور مزید

(اس سبق کی ویڈیو دیکھنے کے لیے اوپر تصویر پر کلک کریں)

جائزہ

یہ سبق MCP کمیونٹی کے ساتھ کیسے جُڑیں، MCP ماحولیاتی نظام میں کیسے تعاون کریں، اور مشترکہ ترقی کے لیے بہترین طریقوں کی پیروی کیسے کریں اس پر مرکوز ہے۔ اوپن سورس MCP پروجیکٹس میں حصہ لینا ان لوگوں کے لیے ضروری ہے جو اس ٹیکنالوجی کے مستقبل کو شکل دینا چاہتے ہیں۔

سیکھنے کے مقاصد

اس سبق کے آخر تک، آپ قابل ہوں گے:

  • MCP کمیونٹی اور ماحولیاتی نظام کے ڈھانچے کو سمجھنا
  • MCP کمیونٹی فورمز اور مباحثوں میں موثر طریقے سے حصہ لینا
  • MCP اوپن سورس ذخائر میں تعاون کرنا
  • کسٹم MCP ٹولز اور سرورز تیار کرنا اور شیئر کرنا
  • MCP ڈیولپمنٹ اور تعاون کے لیے بہترین طریقہ کار کی پیروی کرنا
  • MCP ڈیولپمنٹ کے لیے کمیونٹی وسائل اور فریم ورکس دریافت کرنا

MCP کمیونٹی ماحولیاتی نظام

MCP ماحولیاتی نظام مختلف اجزاء اور شرکاء پر مشتمل ہے جو پروٹوکول کو آگے بڑھانے کے لیے مل کر کام کرتے ہیں۔

کلیدی کمیونٹی اجزاء

  1. کور پروٹوکول مینٹینرز: سرکاری Model Context Protocol GitHub آرگنائزیشن MCP کی بنیادی وضاحتیں اور ریفرنس امپلیمنٹیشنز کا انتظام کرتی ہے
  2. ٹول ڈویلپرز: افراد اور ٹیمیں جو MCP ٹولز اور سرورز بناتی ہیں
  3. انٹیگریشن پرووائیڈرز: کمپنیاں جو MCP کو اپنے مصنوعات اور خدمات میں ضم کرتی ہیں
  4. اینڈ یوزرز: ڈویلپرز اور تنظیمیں جو اپنے ایپلیکیشنز میں MCP استعمال کرتی ہیں
  5. کنٹریبیوٹرز: کمیونٹی کے ارکان جو کوڈ، دستاویزات یا دیگر وسائل فراہم کرتے ہیں

کمیونٹی وسائل

سرکاری چینلز

کمیونٹی پر مبنی وسائل

  • MCP کلائنٹس - کلائنٹس کی فہرست جو MCP انٹیگریشنز کی حمایت کرتے ہیں
  • کمیونٹی MCP سرورز - کمیونٹی کی طرف سے تیار کردہ بڑھتی ہوئی MCP سرورز کی فہرست
  • Awesome MCP Servers - منتخب شدہ MCP سرورز کی فہرست
  • PulseMCP - MCP وسائل کی دریافت کے لیے کمیونٹی ہب اور نیوز لیٹر
  • ڈسکارڈ سرور - MCP ڈویلپرز کے ساتھ جڑیں
  • زبان مخصوص SDK امپلیمنٹیشنز
  • بلاگ پوسٹس اور ٹیوٹوریلز

MCP میں تعاون

تعاون کی اقسام

MCP ماحولیاتی نظام مختلف اقسام کی تعاون کا خیرمقدم کرتا ہے:

  1. کوڈ تعاون:

    • کور پروٹوکول میں اصلاحات
    • بگ فکسز
    • ٹول اور سرور امپلیمنٹیشنز
    • مختلف زبانوں میں کلائنٹ/سرور لائبریریز
  2. دستاویزات:

    • موجودہ دستاویزات کی بہتری
    • ٹیوٹوریلز اور گائیڈز بنانا
    • دستاویزات کا ترجمہ کرنا
    • مثالیں اور سیمپل ایپلیکیشنز بنانا
  3. کمیونٹی سپورٹ:

    • فورمز اور مباحثوں میں سوالات کے جواب دینا
    • مسائل کی جانچ اور رپورٹنگ
    • کمیونٹی ایونٹس کا انعقاد
    • نئے کنٹریبیوٹرز کی رہنمائی

تعاون کا عمل: کور پروٹوکول

کور MCP پروٹوکول یا سرکاری امپلیمنٹیشنز میں تعاون کرنے کے لیے، سرکاری تعاون کے رہنما خطوط سے یہ اصول اپنائیں:

  1. سادگی اور کم سے کم پن: MCP وضاحت نئے تصورات شامل کرنے کے لیے اعلیٰ معیار رکھتی ہے۔ چیزیں شامل کرنا آسان ہے بجائے ہٹانے کے۔

  2. ٹھوس نقطہ نظر: وضاحتی تبدیلیاں مخصوص امپلیمنٹیشن چیلنجز پر مبنی ہونی چاہئیں، قیاسی خیالات پر نہیں۔

  3. تجویز کے مراحل:

    • وضاحت کرنا: مسئلے کی حد کا جائزہ لیں، تصدیق کریں کہ دوسرے MCP صارفین بھی اسی مسئلے سے دوچار ہیں
    • پروٹوٹائپ بنانا: ایک مثال کے حل تیار کریں اور اس کی عملی تطبیق دکھائیں
    • تحریر کرنا: پروٹوٹائپ کی بنیاد پر، وضاحتی تجویز لکھیں

ترقیاتی ماحول کی ترتیب

# مخزن کو فورک کریں
git clone https://github.com/YOUR-USERNAME/modelcontextprotocol.git
cd modelcontextprotocol

# انحصاریوں کو انسٹال کریں
npm install

# سکیما کی تبدیلیوں کے لیے، schema.json کی توثیق اور تخلیق کریں:
npm run check:schema:ts
npm run generate:schema

# دستاویزات میں تبدیلیوں کے لیے
npm run check:docs
npm run format

# دستاویزات کو مقامی طور پر پیش نظارہ کریں (اختیاری):
npm run serve:docs

مثال: بگ فکس میں تعاون

// typescript-sdk میں مسئلہ کے ساتھ اصل کوڈ
export function validateResource(resource: unknown): resource is MCPResource {
  if (!resource || typeof resource !== 'object') {
    return false;
  }
  
  // مسئلہ: پراپرٹی کی تصدیق کا فقدان
  // موجودہ عمل درآمد:
  const hasName = 'name' in resource;
  const hasSchema = 'schema' in resource;
  
  return hasName && hasSchema;
}

// تعاون میں درست شدہ عمل درآمد
export function validateResource(resource: unknown): resource is MCPResource {
  if (!resource || typeof resource !== 'object') {
    return false;
  }
  
  // بہتر کردہ تصدیق
  const hasName = 'name' in resource && typeof (resource as MCPResource).name === 'string';
  const hasSchema = 'schema' in resource && typeof (resource as MCPResource).schema === 'object';
  const hasDescription = !('description' in resource) || typeof (resource as MCPResource).description === 'string';
  
  return hasName && hasSchema && hasDescription;
}

مثال: اسٹینڈرڈ لائبریری میں نیا ٹول شامل کرنا

# مثال مدد: MCP اسٹینڈرڈ لائبریری کے لیے ایک CSV ڈیٹا پروسیسنگ ٹول

from mcp_tools import Tool, ToolRequest, ToolResponse, ToolExecutionException
import pandas as pd
import io
import json
from typing import Dict, Any, List, Optional

class CsvProcessingTool(Tool):
    """
    Tool for processing and analyzing CSV data.
    
    This tool allows models to extract information from CSV files,
    run basic analysis, and convert data between formats.
    """
    
    def get_name(self):
        return "csvProcessor"
        
    def get_description(self):
        return "Processes and analyzes CSV data"
    
    def get_schema(self):
        return {
            "type": "object",
            "properties": {
                "csvData": {
                    "type": "string", 
                    "description": "CSV data as a string"
                },
                "csvUrl": {
                    "type": "string",
                    "description": "URL to a CSV file (alternative to csvData)"
                },
                "operation": {
                    "type": "string",
                    "enum": ["summary", "filter", "transform", "convert"],
                    "description": "Operation to perform on the CSV data"
                },
                "filterColumn": {
                    "type": "string",
                    "description": "Column to filter by (for filter operation)"
                },
                "filterValue": {
                    "type": "string",
                    "description": "Value to filter for (for filter operation)"
                },
                "outputFormat": {
                    "type": "string",
                    "enum": ["json", "csv", "markdown"],
                    "default": "json",
                    "description": "Output format for the processed data"
                }
            },
            "oneOf": [
                {"required": ["csvData", "operation"]},
                {"required": ["csvUrl", "operation"]}
            ]
        }
    
    async def execute_async(self, request: ToolRequest) -> ToolResponse:
        try:
            # پیرامیٹرز نکالیں
            operation = request.parameters.get("operation")
            output_format = request.parameters.get("outputFormat", "json")
            
            # CSV ڈیٹا براہ راست ڈیٹا یا یو آر ایل سے حاصل کریں
            df = await self._get_dataframe(request)
            
            # درخواست کردہ آپریشن کی بنیاد پر عمل کریں
            result = {}
            
            if operation == "summary":
                result = self._generate_summary(df)
            elif operation == "filter":
                column = request.parameters.get("filterColumn")
                value = request.parameters.get("filterValue")
                if not column:
                    raise ToolExecutionException("filterColumn is required for filter operation")
                result = self._filter_data(df, column, value)
            elif operation == "transform":
                result = self._transform_data(df, request.parameters)
            elif operation == "convert":
                result = self._convert_format(df, output_format)
            else:
                raise ToolExecutionException(f"Unknown operation: {operation}")
            
            return ToolResponse(result=result)
        
        except Exception as e:
            raise ToolExecutionException(f"CSV processing failed: {str(e)}")
    
    async def _get_dataframe(self, request: ToolRequest) -> pd.DataFrame:
        """Gets a pandas DataFrame from either CSV data or URL"""
        if "csvData" in request.parameters:
            csv_data = request.parameters.get("csvData")
            return pd.read_csv(io.StringIO(csv_data))
        elif "csvUrl" in request.parameters:
            csv_url = request.parameters.get("csvUrl")
            return pd.read_csv(csv_url)
        else:
            raise ToolExecutionException("Either csvData or csvUrl must be provided")
    
    def _generate_summary(self, df: pd.DataFrame) -> Dict[str, Any]:
        """Generates a summary of the CSV data"""
        return {
            "columns": df.columns.tolist(),
            "rowCount": len(df),
            "columnCount": len(df.columns),
            "numericColumns": df.select_dtypes(include=['number']).columns.tolist(),
            "categoricalColumns": df.select_dtypes(include=['object']).columns.tolist(),
            "sampleRows": json.loads(df.head(5).to_json(orient="records")),
            "statistics": json.loads(df.describe().to_json())
        }
    
    def _filter_data(self, df: pd.DataFrame, column: str, value: str) -> Dict[str, Any]:
        """Filters the DataFrame by a column value"""
        if column not in df.columns:
            raise ToolExecutionException(f"Column '{column}' not found")
            
        filtered_df = df[df[column].astype(str).str.contains(value)]
        
        return {
            "originalRowCount": len(df),
            "filteredRowCount": len(filtered_df),
            "data": json.loads(filtered_df.to_json(orient="records"))
        }
    
    def _transform_data(self, df: pd.DataFrame, params: Dict[str, Any]) -> Dict[str, Any]:
        """Transforms the data based on parameters"""
        # عمل درآمد میں مختلف تبدیلیاں شامل ہوں گی
        return {
            "status": "success",
            "message": "Transformation applied"
        }
    
    def _convert_format(self, df: pd.DataFrame, format: str) -> Dict[str, Any]:
        """Converts the DataFrame to different formats"""
        if format == "json":
            return {
                "data": json.loads(df.to_json(orient="records")),
                "format": "json"
            }
        elif format == "csv":
            return {
                "data": df.to_csv(index=False),
                "format": "csv"
            }
        elif format == "markdown":
            return {
                "data": df.to_markdown(),
                "format": "markdown"
            }
        else:
            raise ToolExecutionException(f"Unsupported output format: {format}")

تعاون کے اصول

MCP پروجیکٹس میں کامیاب تعاون کرنے کے لیے:

  1. چھوٹے سے شروع کریں: دستاویزات، بگ فکسز، یا چھوٹے بہتری سے آغاز کریں
  2. سٹائل گائیڈ کی پیروی کریں: پروجیکٹ کے کوڈنگ انداز اور کنونشنز پر عمل کریں
  3. ٹیسٹ لکھیں: اپنے کوڈ تعاون کے لیے یونٹ ٹیسٹ شامل کریں
  4. اپنے کام کی دستاویزات بنائیں: نئی خصوصیات یا تبدیلیوں کے لیے واضح دستاویزات شامل کریں
  5. مخصوص PRs جمع کروائیں: پل ریکویسٹ کو ایک مسئلہ یا فیچر تک محدود رکھیں
  6. فیڈبیک سے مشغول ہوں: اپنی تعاون پر ملنے والے فیڈبیک کا فوری جواب دیں

مثال مساوی کارروائی کا ورک فلو

# مخزن کی کلون کریں
git clone https://github.com/modelcontextprotocol/typescript-sdk.git
cd typescript-sdk

# اپنی شراکت کے لیے ایک نئی شاخ بنائیں
git checkout -b feature/my-contribution

# اپنی تبدیلیاں کریں
# ...

# ٹیسٹ چلائیں تاکہ یقین ہو کہ آپ کی تبدیلیاں موجودہ فعالیت کو نقصان نہ پہنچائیں
npm test

# اپنی تبدیلیوں کو ایک وضاحتی پیغام کے ساتھ کمیٹ کریں
git commit -am "Fix validation in resource handler"

# اپنی شاخ کو اپنے فورک پر پش کریں
git push origin feature/my-contribution

# اپنی شاخ سے مرکزی مخزن کے لیے پل ریکویسٹ بنائیں
# پھر فیڈبیک پر عمل کریں اور ضرورت کے مطابق اپنے PR پر کام کریں

MCP سرورز تیار کرنا اور شیئر کرنا

MCP ماحولیاتی نظام میں سب سے قیمتی تعاون میں سے ایک ہے کسٹم MCP سرورز تیار کرنا اور شیئر کرنا۔ کمیونٹی مختلف خدمات اور استعمال کے معاملات کے لیے سینکڑوں سرورز پہلے ہی تیار کر چکی ہے۔

MCP سرور ڈیولپمنٹ فریم ورکس

MCP سرور کی ترقی کو آسان بنانے کے لیے کئی فریم ورکس دستیاب ہیں:

  1. سرکاری SDKs (MCP Specification 2025-11-25 کے مطابق):

  2. کمیونٹی فریم ورکس:

قابلِ اشتراک ٹولز تیار کرنا

.NET مثال: قابلِ اشتراک ٹول پیکیج تیار کرنا

// Create a new .NET library project
// dotnet new classlib -n McpFinanceTools

using Microsoft.Mcp.Tools;
using System.Threading.Tasks;
using System.Net.Http;
using System.Text.Json;

namespace McpFinanceTools
{
    // Stock quote tool
    public class StockQuoteTool : IMcpTool
    {
        private readonly HttpClient _httpClient;
        
        public StockQuoteTool(HttpClient httpClient = null)
        {
            _httpClient = httpClient ?? new HttpClient();
        }
        
        public string Name => "stockQuote";
        public string Description => "Gets current stock quotes for specified symbols";
        
        public object GetSchema()
        {
            return new {
                type = "object",
                properties = new {
                    symbol = new { 
                        type = "string",
                        description = "Stock symbol (e.g., MSFT, AAPL)" 
                    },
                    includeHistory = new { 
                        type = "boolean",
                        description = "Whether to include historical data",
                        default = false
                    }
                },
                required = new[] { "symbol" }
            };
        }
        
        public async Task<ToolResponse> ExecuteAsync(ToolRequest request)
        {
            // Extract parameters
            string symbol = request.Parameters.GetProperty("symbol").GetString();
            bool includeHistory = false;
            
            if (request.Parameters.TryGetProperty("includeHistory", out var historyProp))
            {
                includeHistory = historyProp.GetBoolean();
            }
            
            // Call external API (example)
            var quoteResult = await GetStockQuoteAsync(symbol);
            
            // Add historical data if requested
            if (includeHistory)
            {
                var historyData = await GetStockHistoryAsync(symbol);
                quoteResult.Add("history", historyData);
            }
            
            // Return formatted result
            return new ToolResponse {
                Result = JsonSerializer.SerializeToElement(quoteResult)
            };
        }
        
        private async Task<Dictionary<string, object>> GetStockQuoteAsync(string symbol)
        {
            // Implementation would call a real stock API
            // This is a simplified example
            return new Dictionary<string, object>
            {
                ["symbol"] = symbol,
                ["price"] = 123.45,
                ["change"] = 2.5,
                ["percentChange"] = 1.2,
                ["lastUpdated"] = DateTime.UtcNow
            };
        }
        
        private async Task<object> GetStockHistoryAsync(string symbol)
        {
            // Implementation would get historical data
            // Simplified example
            return new[]
            {
                new { date = DateTime.Now.AddDays(-7).Date, price = 120.25 },
                new { date = DateTime.Now.AddDays(-6).Date, price = 122.50 },
                new { date = DateTime.Now.AddDays(-5).Date, price = 121.75 }
                // More historical data...
            };
        }
    }
}

// Create package and publish to NuGet
// dotnet pack -c Release
// dotnet nuget push bin/Release/McpFinanceTools.1.0.0.nupkg -s https://api.nuget.org/v3/index.json -k YOUR_API_KEY

Java مثال: ٹولز کے لیے Maven پیکیج بنانا

// شیئر کرنے کے قابل MCP ٹول پیکیج کے لیے pom.xml کی ترتیب
<!-- 
<project>
    <groupId>com.example</groupId>
    <artifactId>mcp-weather-tools</artifactId>
    <version>1.0.0</version>
    
    <dependencies>
        <dependency>
            <groupId>com.mcp</groupId>
            <artifactId>mcp-server</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>
    
    <distributionManagement>
        <repository>
            <id>github</id>
            <name>GitHub Packages</name>
            <url>https://maven.pkg.github.com/username/mcp-weather-tools</url>
        </repository>
    </distributionManagement>
</project>
-->

package com.example.mcp.weather;

import com.mcp.tools.Tool;
import com.mcp.tools.ToolRequest;
import com.mcp.tools.ToolResponse;
import com.mcp.tools.ToolExecutionException;

import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.util.HashMap;
import java.util.Map;

public class WeatherForecastTool implements Tool {
    private final HttpClient httpClient;
    private final String apiKey;
    
    public WeatherForecastTool(String apiKey) {
        this.httpClient = HttpClient.newHttpClient();
        this.apiKey = apiKey;
    }
    
    @Override
    public String getName() {
        return "weatherForecast";
    }
    
    @Override
    public String getDescription() {
        return "Gets weather forecast for a specified location";
    }
    
    @Override
    public Object getSchema() {
        Map<String, Object> schema = new HashMap<>();
        // اسکیما کی تعریف...
        return schema;
    }
    
    @Override
    public ToolResponse execute(ToolRequest request) {
        try {
            String location = request.getParameters().get("location").asText();
            int days = request.getParameters().has("days") ? 
                request.getParameters().get("days").asInt() : 3;
            
            // موسم کا API کال کریں
            Map<String, Object> forecast = getForecast(location, days);
            
            // جواب تیار کریں
            return new ToolResponse.Builder()
                .setResult(forecast)
                .build();
        } catch (Exception ex) {
            throw new ToolExecutionException("Weather forecast failed: " + ex.getMessage(), ex);
        }
    }
    
    private Map<String, Object> getForecast(String location, int days) {
        // نفاذ موسم کا API کال کرے گا
        // سادہ مثال
        Map<String, Object> result = new HashMap<>();
        // پیشن گوئی کا ڈیٹا شامل کریں...
        return result;
    }
}

// Maven استعمال کرتے ہوئے بلڈ اور پبلش کریں
// mvn clean package
// mvn deploy

Python مثال: PyPI پیکیج شائع کرنا

# PyPI پیکیج کے لیے ڈائریکٹری ساخت:
# mcp_nlp_tools/
# ├── LICENSE
# ├── README.md
# ├── setup.py
# ├── mcp_nlp_tools/
# │   ├── __init__.py
# │   ├── sentiment_tool.py
# │   └── translation_tool.py

# setup.py کی مثال
"""
from setuptools import setup, find_packages

setup(
    name="mcp_nlp_tools",
    version="0.1.0",
    packages=find_packages(),
    install_requires=[
        "mcp_server>=1.0.0",
        "transformers>=4.0.0",
        "torch>=1.8.0"
    ],
    author="Your Name",
    author_email="your.email@example.com",
    description="MCP tools for natural language processing tasks",
    long_description=open("README.md").read(),
    long_description_content_type="text/markdown",
    url="https://github.com/username/mcp_nlp_tools",
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    python_requires=">=3.8",
)
"""

# NLP ٹول کی مثال عملدرآمد (sentiment_tool.py)
from mcp_tools import Tool, ToolRequest, ToolResponse, ToolExecutionException
from transformers import pipeline
import torch

class SentimentAnalysisTool(Tool):
    """MCP tool for sentiment analysis of text"""
    
    def __init__(self, model_name="distilbert-base-uncased-finetuned-sst-2-english"):
        # جذباتی تجزیہ ماڈل لوڈ کریں
        self.sentiment_analyzer = pipeline("sentiment-analysis", model=model_name)
    
    def get_name(self):
        return "sentimentAnalysis"
        
    def get_description(self):
        return "Analyzes the sentiment of text, classifying it as positive or negative"
    
    def get_schema(self):
        return {
            "type": "object",
            "properties": {
                "text": {
                    "type": "string", 
                    "description": "The text to analyze for sentiment"
                },
                "includeScore": {
                    "type": "boolean",
                    "description": "Whether to include confidence scores",
                    "default": True
                }
            },
            "required": ["text"]
        }
    
    async def execute_async(self, request: ToolRequest) -> ToolResponse:
        try:
            # پیرامیٹرز نکالیں
            text = request.parameters.get("text")
            include_score = request.parameters.get("includeScore", True)
            
            # جذبات کا تجزیہ کریں
            sentiment_result = self.sentiment_analyzer(text)[0]
            
            # نتیجہ فارمیٹ کریں
            result = {
                "sentiment": sentiment_result["label"],
                "text": text
            }
            
            if include_score:
                result["score"] = sentiment_result["score"]
            
            # نتیجہ واپس کریں
            return ToolResponse(result=result)
            
        except Exception as e:
            raise ToolExecutionException(f"Sentiment analysis failed: {str(e)}")

# اشاعت کے لیے:
# python setup.py sdist bdist_wheel
# python -m twine upload dist/*

بہترین طریقوں کا اشتراک

جب MCP ٹولز کمیونٹی کے ساتھ شیئر کریں:

  1. مکمل دستاویزات:

    • مقصد، استعمال، اور مثالیں دستاویز کریں
    • پیرامیٹرز اور واپسی کی قیمتوں کی وضاحت کریں
    • کسی بھی بیرونی انحصارات کو دستاویز کریں
  2. خرابیوں کا ہینڈلنگ:

    • مضبوط خرابی کے انتظام کا نفاذ کریں
    • مفید خرابی پیغامات فراہم کریں
    • کنارے کے معاملات کو مہارت سے قابو پائیں
  3. کارکردگی کے عوامل:

    • رفتار اور وسائل کے استعمال کے دونوں کے لیے بہتر بنائیں
    • جہاں مناسب ہو کیشنگ کو نافذ کریں
    • توسیع پذیری کو مدنظر رکھیں
  4. السلامتی:

    • محفوظ API کیز اور توثیق استعمال کریں
    • ان پٹ کی تصدیق اور صفائی کریں
    • بیرونی API کالز کے لیے ریٹ لمٹنگ نافذ کریں
  5. ٹیسٹنگ:

    • جامع ٹیسٹ کوریج شامل کریں
    • مختلف ان پٹ اقسام اور کنارے کے معاملات کا ٹیسٹ کریں
    • ٹیسٹ کے طریقہ کار دستاویزی بنائیں

کمیونٹی تعاون اور بہترین طریقے

موثر تعاون ایک خوشحال MCP ماحولیاتی نظام کی کنجی ہے۔

مواصلاتی چینلز

  • GitHub ایشوز اور مباحثے
  • Microsoft Tech Community
  • Discord اور Slack چینلز
  • Stack Overflow (ٹیگ: model-context-protocol یا mcp)

کوڈ کا جائزہ

جب MCP تعاون کا جائزہ لیں:

  1. صاف گوئی: کیا کوڈ واضح اور اچھی دستاویزی ہے؟
  2. درستگی: کیا یہ توقع کے مطابق کام کرتا ہے؟
  3. تسلسل: کیا یہ پروجیکٹ کے کنونشنز کی پیروی کرتا ہے؟
  4. مکملت: کیا ٹیسٹ اور دستاویزات شامل ہیں؟
  5. سلامتی: کیا کوئی سلامتی کے مسائل ہیں؟

ورژن مطابقت

جب MCP کے لیے ترقی کریں:

  1. پروٹوکول ورژننگ: اپنے ٹول کے مطابق MCP پروٹوکول ورژن کی پیروی کریں
  2. کلائنٹ مطابقت: پیچھے کی طرف مطابقت کو مد نظر رکھیں
  3. سرور مطابقت: سرور امپلیمنٹیشن گائیڈلائنز کی پیروی کریں
  4. ٹوٹی ہوئی تبدیلیاں: کسی بھی توڑنے والی تبدیلیوں کو واضح دستاویز کریں

کمیونٹی پروجیکٹ کی مثال: MCP ٹول رجسٹری

ایک اہم کمیونٹی تعاون MCP ٹولز کے لیے ایک عوامی رجسٹری تیار کرنا ہو سکتا ہے۔

# ایک کمیونٹی ٹول رجسٹری API کے لیے مثال اسکیمہ

from fastapi import FastAPI, HTTPException, Depends
from pydantic import BaseModel, Field, HttpUrl
from typing import List, Optional
import datetime
import uuid

# ٹول رجسٹری کے لیے ماڈلز
class ToolSchema(BaseModel):
    """JSON Schema for a tool"""
    type: str
    properties: dict
    required: List[str] = []

class ToolRegistration(BaseModel):
    """Information for registering a tool"""
    name: str = Field(..., description="Unique name for the tool")
    description: str = Field(..., description="Description of what the tool does")
    version: str = Field(..., description="Semantic version of the tool")
    schema: ToolSchema = Field(..., description="JSON Schema for tool parameters")
    author: str = Field(..., description="Author of the tool")
    repository: Optional[HttpUrl] = Field(None, description="Repository URL")
    documentation: Optional[HttpUrl] = Field(None, description="Documentation URL")
    package: Optional[HttpUrl] = Field(None, description="Package URL")
    tags: List[str] = Field(default_factory=list, description="Tags for categorization")
    examples: List[dict] = Field(default_factory=list, description="Example usage")

class Tool(ToolRegistration):
    """Tool with registry metadata"""
    id: uuid.UUID = Field(default_factory=uuid.uuid4)
    created_at: datetime.datetime = Field(default_factory=datetime.datetime.now)
    updated_at: datetime.datetime = Field(default_factory=datetime.datetime.now)
    downloads: int = Field(default=0)
    rating: float = Field(default=0.0)
    ratings_count: int = Field(default=0)

# رجسٹری کے لیے FastAPI ایپلیکیشن
app = FastAPI(title="MCP Tool Registry")

# اس مثال کے لیے میموری میں ڈیٹا بیس
tools_db = {}

@app.post("/tools", response_model=Tool)
async def register_tool(tool: ToolRegistration):
    """Register a new tool in the registry"""
    if tool.name in tools_db:
        raise HTTPException(status_code=400, detail=f"Tool '{tool.name}' already exists")
    
    new_tool = Tool(**tool.dict())
    tools_db[tool.name] = new_tool
    return new_tool

@app.get("/tools", response_model=List[Tool])
async def list_tools(tag: Optional[str] = None):
    """List all registered tools, optionally filtered by tag"""
    if tag:
        return [tool for tool in tools_db.values() if tag in tool.tags]
    return list(tools_db.values())

@app.get("/tools/{tool_name}", response_model=Tool)
async def get_tool(tool_name: str):
    """Get information about a specific tool"""
    if tool_name not in tools_db:
        raise HTTPException(status_code=404, detail=f"Tool '{tool_name}' not found")
    return tools_db[tool_name]

@app.delete("/tools/{tool_name}")
async def delete_tool(tool_name: str):
    """Delete a tool from the registry"""
    if tool_name not in tools_db:
        raise HTTPException(status_code=404, detail=f"Tool '{tool_name}' not found")
    del tools_db[tool_name]
    return {"message": f"Tool '{tool_name}' deleted"}

کل نکات

  • MCP کمیونٹی متنوع ہے اور مختلف اقسام کے تعاون کا خیرمقدم کرتی ہے
  • MCP میں تعاون کور پروٹوکول کی بہتری سے لے کر کسٹم ٹولز تک ہو سکتا ہے
  • تعاون کے رہنما خطوط کی پیروی آپ کی PR قبولیت کے امکانات کو بہتر بناتی ہے
  • MCP ٹولز تیار کرنا اور شیئر کرنا ماحولیاتی نظام کو بہتر بنانے کا ایک قیمتی طریقہ ہے
  • کمیونٹی تعاون MCP کی ترقی اور بہتری کے لیے ضروری ہے

مشق

  1. MCP ماحولیاتی نظام میں اپنی مہارت اور دلچسپی کی بنیاد پر تعاون کے لیے ایک جگہ شناخت کریں
  2. MCP ریپوزیٹری کو فورک کریں اور لوکل ترقیاتی ماحول سیٹ اپ کریں
  3. کمیونٹی کے فائدے کے لیے کوئی چھوٹا اضافہ، بگ فکس، یا ٹول بنائیں
  4. اپنی تعاون کو مناسب ٹیسٹس اور دستاویزات کے ساتھ دستاویز کریں
  5. متعلقہ ریپوزیٹری میں پل ریکویسٹ جمع کریں

اضافی وسائل


آگے کیا ہے

اگلا: ابتدائی قبولیت سے اسباق


ڈس کلیمر: اس دستاویز کا ترجمہ AI ترجمہ سروس Co-op Translator کے ذریعے کیا گیا ہے۔ اگرچہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم اس بات سے آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا بے قاعدگیاں ہو سکتی ہیں۔ اصل دستاویز اپنی مادری زبان میں معتبر ذریعہ سمجھی جانی چاہیے۔ اہم معلومات کے لیے پیشہ ور انسان کے ذریعہ ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم پر نہیں ہے۔