Search
Write a publication
Pull to refresh
235
21.2
Сергей Аверкиев @averkij

ML Engineer

Send message

🔺Пример 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 протокола.

Tags:
Total votes 5: ↑5 and ↓0+5
Comments5

🔺HFDay.ru

Сделал для сообщества сайт с обзорами статей с HF Daily Papers на русском.

hfday.ru
hfday.ru

Синхронизируется каждый час, можно отсортировать по рейтингу или вывести вверх недавно добавленные статьи, чего, кстати, на оригинальной страничке не сделать.

Обзоры, теги по темам и прочие данные генерируются через claude-3.7 и gpt-4o на основе спаршенных с сайта абстрактов. Аффилиации, имена авторов и скриншоты также вытаскиваются из статей и отображаются.

Код. Развернуто все полностью на GitHub — через Workflow джобы и Pages, что само по себе очень прикольно. Скрипты обновляют файлы с данными, пишут логи и генерируют страничку, которая коммитится обратно в репозиторий. Такую автоматизацию удобно использовать для своих проектов. Код открыт.

Данные. Предыдущие выпуски, включая json с классифицированными обзорами, откладываются в папку /d, можно брать их для своих нужд. Кушает это где-то по 20-30 рублей в день.

Языки. Кроме русского, обзоры переводятся на английский и китайский (вдруг вы его подучиваете).

Фильтры. Можно фильтровать по тематике статей, классификация на 42 класса (#agents, #data, #healthcare, #machine_translation, #science, #long_context, #reasoning и другие). Можно делать перекрестные и объединяющие фильтры.

Рейтинг. Кроме топа по дням есть топ по месяцам — например, за июнь было уже 600+ статей. Можно посмотреть какие из них лучшие по каким темам. Опять же, на оригинальной страничке такого нет.

В общем, добавляйте в закладки и шарьте с коллегами. Идеи приветствуются.

hfday.ru x градиент обреченный

//Upd. Забыл добавить — код тут.

Tags:
Total votes 5: ↑5 and ↓0+5
Comments2

Information

Rating
737-th
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity

Specialization

Fullstack Developer, ML Engineer
Lead
From 600,000 ₽