🔺Пример MCP для Gemini CLI
Ковыряюсь с Gemini CLI, консольным кодовым агентом, который на днях вышел. Накидал пример, как расширить его функционал при помощи MCP сервера.
my_mcp.py
from openai import OpenAI
from mcp.server.fastmcp import FastMCP
import base64
import os
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
mcp = FastMCP("openai-image-generator")
@mcp.tool(description="Generate an image with OpenAI Images API")
def generate_image(
prompt: str,
size: str = "1024x1024", # "1024x1536", "1536x1024", "1024x1024"
quality: str = "high", # 'low', 'medium', 'high'
background: str = "transparent"
) -> str:
"""Return a file path to the generated image."""
response = client.images.generate(
model="gpt-image-1",
prompt=prompt,
size=size,
quality=quality,
output_format="png",
user="test_user",
moderation="low",
background=background,
n=1)
image_base64 = response.data[0].b64_json
image_bytes = base64.b64decode(image_base64)
file_name = f"gen_image.png"
file_path = os.path.join(os.getcwd(), file_name)
with open(file_path, "wb") as f:
f.write(image_bytes)
return file_path
if __name__ == "__main__":
mcp.run()
Тут вызывается API для генерации изображения, ключ берется из переменных окружения, картинка сохраняется на диск. И прописываем путь до файлика в settings.json Gemini:
{
"mcpServers": {
"openai-image-generator": {
"command": "python",
"args": [
"/path/to/my_mcp.py"
],
"env":
"OPENAI_API_KEY": "${OPENAI_API_KEY}"
}
}
}
}
Если теперь просить сгенерить лого для своего репозитория, то Gemini составит релевантный промпт по репе, вызовает этот метод и по желанию обновит Readme проекта, добавив в него картинку.
Смысл тут в том, что так можно подключить любой вызов вашего внешнего инструмента.
В целом же есть куча готовых серверов, можно легко подключить GitHub для создания агентом пулл-реквеста или RAG на своих файлах. Хороший список есть в официальной репе разработчиков MCP протокола.