يوضّح لك هذا البرنامج التعليمي كيفية ربط خادم MCP البعيد الخاص بـ Developer Knowledge بأُطر عمل مخصّصة لوكلاء الذكاء الاصطناعي تم إنشاؤها باستخدام LangChain وLlamaIndex وAutoGen.
من خلال ربط وكلاء الذكاء الاصطناعي المخصّصين بخادم بروتوكول سياق النموذج (MCP) البعيد، يمكن لوكلائك البحث بشكل ديناميكي عن مستندات مطوّري البرامج الموثوقة والحديثة من Google واستردادها، والتي تغطي Google Cloud وFirebase وAndroid وGoogle Maps Platform وChrome وغير ذلك.
المتطلبات الأساسية
يجب استيفاء المتطلبات الأساسية التالية قبل البدء:
- إنشاء مفتاح Developer Knowledge API: فعِّل واجهة Developer Knowledge API وأنشئ مفتاح واجهة برمجة تطبيقات في مشروعك على Google Cloud باتّباع دليل إعداد مفتاح واجهة برمجة التطبيقات.
- إنشاء مفتاح Gemini API: أنشئ مفتاح API في Google AI Studio للمصادقة على نماذج Gemini، أو أعِد استخدام مفتاح Google Cloud API إذا كانت واجهة Generative Language API مفعّلة عليه.
ضبط متغيرات البيئة: اضبط مفاتيح واجهة برمجة التطبيقات كمتغيرات بيئة في نافذة الأوامر:
export DEVELOPERKNOWLEDGE_API_KEY="YOUR_API_KEY" export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"تثبيت Python: تأكَّد من أنّ بيئة التطوير تستخدم الإصدار 3.10 أو إصدارًا أحدث من Python.
الربط باستخدام LangChain
يمكن لتطبيقات LangChain الاتصال بخوادم HTTP MCP البعيدة باستخدام حزمة
langchain-mcp-adapters أو عمليات نقل برامج MCP العادية.
تثبيت الحِزم التابعة
ثبِّت حِزم Python المطلوبة لكلّ من LangChain وGemini وMCP:
pip install langgraph langchain-google-genai langchain-mcp-adapters mcp
ضبط وكيل LangChain
يربط المثال التالي خادم Developer Knowledge 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 من خلال مواصفات الأدوات، ما يسمح لوكلاء الاسترجاع بالبحث في مستندات Developer Knowledge أثناء الاستدلال.
تثبيت الحِزم التابعة
ثبِّت حِزم LlamaIndex الأساسية وGemini LLM وعناصر تكامل أدوات MCP:
pip install llama-index llama-index-tools-mcp llama-index-llms-google-genai
ضبط إعدادات وكيل LlamaIndex
يوضّح المثال التالي كيفية الاتصال بخادم MCP البعيد باستخدام BasicMCPClient، وتضمينه في McpToolSpec، وربط الأدوات التي تم استردادها بـ FunctionAgent المستند إلى LlamaIndex والمزوّد بميزة "مدعوم من 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 التفاعل مع خوادم MCP البعيدة باستخدام
إضافة autogen-ext MCP، ما يتيح التعاون بين عدة وكلاء مع إمكانية الوصول
إلى مستندات المطوّرين الرسمية من Google.
تثبيت الحِزم التابعة
ثبِّت حِزم AutoGen الأساسية وحِزم إضافة MCP:
pip install autogen-agentchat "autogen-ext[mcp,openai]"
إعداد وكيل AutoGen
يوضّح المثال التالي كيفية الاتصال بخادم MCP البعيد باستخدام
StreamableHttpServerParams وتسجيل أدوات Developer Knowledge باستخدام 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())
أفضل الممارسات المتعلّقة بدمج الوكلاء
عند إنشاء وكلاء الذكاء الاصطناعي المخصّصين باستخدام خادم Developer Knowledge MCP، اتّبِع الإرشادات التالية:
- تحسين طلبات البحث: تضمين أسماء منتجات محدّدة وكلمات رئيسية ذات صلة في طلب البحث باللغة الطبيعية بدلاً من المصطلحات العامة، لأنّ أداتَي
search_documentsوanswer_queryتتطابقان مع دلالات طلب البحث. - إدارة الرموز المميزة في نافذة السياق: استخدِم
answer_queryللحصول على إجابات مباشرة مستخلَصة من مجموعة مستندات Google، وتجنَّب طلب محتوى الصفحة الكامل باستخدامget_documentsإلا إذا كانت تفاصيل المقتطف منsearch_documentsغير كافية. - تأمين مفاتيح واجهة برمجة التطبيقات: خزِّن مفاتيح واجهة برمجة التطبيقات Developer Knowledge API وGemini API في متغيرات البيئة أو أنظمة إدارة الأسرار العادية، ولا تبرمج بيانات الاعتماد بشكل ثابت في الرمز البرمجي.
الخطوات التالية
يمكنك الاطّلاع على المراجع التالية لمعرفة المزيد عن خادم Developer Knowledge MCP:
- اطّلِع على دليل تركيب خادم MCP في "قاعدة معلومات المطوّرين" الكامل.
- راجِع نطاقات المجموعة المتاحة.
- كيفية إنشاء إجابات من المستندات