ادغام سرور MCP «دانش توسعه‌دهنده» با عامل‌های هوش مصنوعی سفارشی

این آموزش نشان می‌دهد چگونه سرور MCP «دانش توسعه‌دهنده» از دور را به چارچوب‌های عامل هوش مصنوعی سفارشی که با LangChain،‏ LlamaIndex، و AutoGen ساخته شده‌اند متصل کنید.

با متصل کردن عامل‌های هوشوار‌ای سفارشی‌تان به سرور راه دور «پروتکل بافت مدل» (MCP)، عامل‌هایتان می‌توانند به‌صورت پویا اسناد توسعه‌دهندگان Google را که شامل Google Cloud،‏ Firebase،‏ Android،‏ Google Maps Platform،‏ Chrome، و غیره می‌شود جستجو و بازیابی کنند.

پیش‌نیازها

پیش‌نیازهای زیر را قبل‌از شروع تکمیل کنید:

  1. تولید کلید Developer Knowledge API: با دنبال کردن راهنمای راه‌اندازی کلید API، در پروژه Google Cloud خود، Developer Knowledge API را فعال کنید و کلید API بسازید.
  2. تولید کلید Gemini API: در Google AI Studio کلید API ایجاد کنید تا مدل‌های Gemini را اصالت‌سنجی کنید، یا اگر Generative Language API در آن فعال است، از کلید Google Cloud API خود مجدداً استفاده کنید.
  3. متغیرهای محیطی خود را تنظیم کنید: کلیدهای API خود را به‌عنوان متغیرهای محیطی در ترمینال خود تنظیم کنید:

    export DEVELOPERKNOWLEDGE_API_KEY="YOUR_API_KEY"
    export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
    
  4. نصب Python: مطمئن شوید که محیط توسعه شما از Python 3.10 یا بالاتر استفاده می‌کند.

اتصال بااستفاده از LangChain

برنامه‌های LangChain می‌توانند بااستفاده از بسته langchain-mcp-adapters یا انتقال‌های استاندارد کارخواه MCP به سرورهای MCP از دور HTTP متصل شوند.

نصب وابستگی‌ها

بسته‌های Python موردنیاز را برای LangChain،‏ Gemini، و MCP نصب کنید:

pip install langgraph langchain-google-genai langchain-mcp-adapters mcp

پیکربندی عامل LangChain

مثال زیر سرور MCP «دانش توسعه‌دهنده» را به عامل LangChain ReAct با پشتیبانی Gemini متصل می‌کند. دستورگان MultiServerMCPClient را بااستفاده از حمل‌ونقل streamable_http نمونه‌سازی می‌کند، سرصفحه HTTP X-Goog-Api-Key را پیوست می‌کند، و ابزارهای از دور را در create_react_agent بار می‌کند:

import asyncio
import os

from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent

async def run_langchain_agent():
    api_key = os.environ.get("DEVELOPERKNOWLEDGE_API_KEY")
    if not api_key:
        raise ValueError(
            "DEVELOPERKNOWLEDGE_API_KEY environment variable is required."
        )

    gemini_api_key = os.environ.get("GEMINI_API_KEY")
    if not gemini_api_key:
        raise ValueError("GEMINI_API_KEY environment variable is required.")

    # Configure remote MCP connection for Developer Knowledge
    client = MultiServerMCPClient(
        {
            "google-developer-knowledge": {
                "url": "https://developerknowledge.googleapis.com/mcp",
                "transport": "streamable_http",
                "headers": {
                    "X-Goog-Api-Key": api_key,
                },
            }
        }
    )
    tools = await client.get_tools()

    # Initialize Gemini model and ReAct agent
    llm = ChatGoogleGenerativeAI(
        model="gemini-2.5-flash",
        temperature=0,
        google_api_key=gemini_api_key,
    )
    agent = create_react_agent(llm, tools)

    # Run agent query
    response = await agent.ainvoke(
        {
            "messages": [
                (
                    "user",
                    "How do I list Google Cloud Storage buckets in Python?",
                )
            ]
        }
    )
    print("\nAgent Response:\n", response["messages"][-1].content)

if __name__ == "__main__":
    asyncio.run(run_langchain_agent())

اتصال بااستفاده از LlamaIndex

‫LlamaIndex از ادغام سرور MCP ازطریق مشخصات ابزار پشتیبانی می‌کند و به عاملان بازیابی اجازه می‌دهد درطول استدلال، اسناد «دانش توسعه‌دهنده» را پُرسمان کنند.

نصب وابستگی‌ها

بسته‌های اصلی LlamaIndex، مدل زبانی بزرگ Gemini، و یکپارچه‌سازی ابزارهای MCP را نصب کنید:

pip install llama-index llama-index-tools-mcp llama-index-llms-google-genai

پیکربندی عامل LlamaIndex

مثال زیر بااستفاده از BasicMCPClient به سرور MCP از دور متصل می‌شود، آن را با McpToolSpec می‌پیچد، و ابزارهای بازیابی‌شده را به LlamaIndex FunctionAgent با پشتیبانی Gemini پیوند می‌دهد:

import asyncio
import os

from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.google_genai import GoogleGenAI
from llama_index.tools.mcp import BasicMCPClient, McpToolSpec

async def run_llamaindex_agent():
    api_key = os.environ.get("DEVELOPERKNOWLEDGE_API_KEY")
    if not api_key:
        raise ValueError(
            "DEVELOPERKNOWLEDGE_API_KEY environment variable is required."
        )

    gemini_api_key = os.environ.get("GEMINI_API_KEY")
    if not gemini_api_key:
        raise ValueError("GEMINI_API_KEY environment variable is required.")

    # Connect to the remote Developer Knowledge MCP endpoint
    mcp_client = BasicMCPClient(
        "https://developerknowledge.googleapis.com/mcp",
        headers={"X-Goog-Api-Key": api_key},
    )
    mcp_tool_spec = McpToolSpec(client=mcp_client)
    tools = await mcp_tool_spec.to_tool_list_async()

    # Create LlamaIndex FunctionAgent with Gemini
    llm = GoogleGenAI(model="gemini-2.5-flash", api_key=gemini_api_key)
    agent = FunctionAgent(tools=tools, llm=llm)

    # Query the agent
    response = await agent.run(
        "What are the default limits and quotas for the Developer Knowledge"
        " API?"
    )
    print("\nAgent Response:\n", str(response))

if __name__ == "__main__":
    asyncio.run(run_llamaindex_agent())

اتصال بااستفاده از AutoGen

کارگزاران Microsoft AutoGen می‌توانند بااستفاده از autogen-ext افزونه MCP با سرورهای MCP از دور ارتباط برقرار کنند و امکان مشارکت چندعاملی با دسترسی به اسناد رسمی توسعه‌دهندگان Google را فراهم کنند.

نصب وابستگی‌ها

بسته‌های افزونه MCP و هسته AutoGen را نصب کنید:

pip install autogen-agentchat "autogen-ext[mcp,openai]"

پیکربندی عامل AutoGen

مثال زیر بااستفاده از StreamableHttpServerParams به سرور MCP از دور متصل می‌شود و ابزارهای «دانش توسعه‌دهنده» را با AutoGen AssistantAgent با پشتیبانی Gemini ثبت می‌کند:

import asyncio
import os

from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.mcp import StreamableHttpServerParams, mcp_server_tools

async def run_autogen_agent():
    api_key = os.environ.get("DEVELOPERKNOWLEDGE_API_KEY")
    if not api_key:
        raise ValueError(
            "DEVELOPERKNOWLEDGE_API_KEY environment variable is required."
        )

    gemini_api_key = os.environ.get("GEMINI_API_KEY")
    if not gemini_api_key:
        raise ValueError("GEMINI_API_KEY environment variable is required.")

    # Retrieve remote MCP tools for Developer Knowledge by using Streamable HTTP
    server_params = StreamableHttpServerParams(
        url="https://developerknowledge.googleapis.com/mcp",
        headers={"X-Goog-Api-Key": api_key},
    )
    dk_tools = await mcp_server_tools(server_params)

    # Initialize model client with Gemini and assistant agent
    model_client = OpenAIChatCompletionClient(
        model="gemini-2.5-flash",
        api_key=gemini_api_key,
        base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
    )
    developer_assistant = AssistantAgent(
        name="google_docs_assistant",
        model_client=model_client,
        tools=dk_tools,
        system_message=(
            "You are a developer assistant specializing in Google APIs and"
            " SDKs. Use Developer Knowledge tools to retrieve verified"
            " documentation."
        ),
    )

    # Run query with team runner
    team = RoundRobinGroupChat([developer_assistant], max_turns=5)
    stream = team.run_stream(
        task=(
            "Explain how to configure Firebase Cloud Messaging topic"
            " subscriptions."
        )
    )

    async for message in stream:
        print(message)

if __name__ == "__main__":
    asyncio.run(run_autogen_agent())

روال‌های مطلوب برای ادغام کارگزار

هنگام ساختن عامل‌های هوش مصنوعی سفارشی با سرور MCP «دانش توسعه‌دهنده»، این دستورالعمل‌ها را دنبال کنید:

  • پالایش پرسمان‌های جستجو: به‌جای اصطلاحات کلی، نام‌های محصول خاص و کلیدواژه‌های مرتبط را در پرسمان زبان طبیعی بگنجانید، زیرا ابزارهای search_documents و answer_query براساس معناشناسی پرسمان مطابقت می‌دهند.
  • مدیریت نشانه‌های پنجره زمینه‌ای: از answer_query برای پاسخ‌های مستقیمی که از مجموعه اسناد استخراج شده‌اند استفاده کنید و از درخواست محتوای صفحه کامل با get_documents خودداری کنید، مگر اینکه جزئیات گزیده از search_documents کافی نباشد.
  • ایمن کردن کلیدهای میانای برنامه‌سازی کاربردی: کلیدهای «میانای برنامه‌سازی کاربردی دانش توسعه‌دهندگان» و «میانای برنامه‌سازی کاربردی Gemini» را در متغیرهای محیطی یا سیستم‌های استاندارد مدیریت رمز ذخیره کنید و هرگز اطلاعات اعتباری را در کد سخت‌کد نکنید.

قدم بعدی چیست

برای کسب اطلاعات بیشتر درباره سرور MCP «دانش توسعه‌دهندگان»، منابع زیر را کاوش کنید: