Как стать автором
Поиск
Написать публикацию
Обновить

Учим LM Studio ходить в интернет при ответах на вопросы

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров4K

Мне очень нравится LM Studio, так как она позволяет локально запускать ИИ модели. Что позволяет сохранить приватность того о чем ты беседуешь с ИИ. Но по сравнению с коммерческими онлайн моделями, LM Studio не умеет ходить в интернет "из коробки". Те модели не могут использовать актуальную информацию из Интернета для ответов на вопросы.

Не так давно в LM Studio было добавлено возможность подключать MCP-сервера к моделям. Самое первое, что я сделал это, написал небольшой MCP-сервер, который позволяет извлекать текст из URL-адреса. Также может извлекать ссылки, которые есть на странице. Это дает возможность в запросе к ИИ указать адрес и попросить извлечь текст оттуда или ссылки, что бы использовать при ответе.

Что бы это все работало, для начала создаем pyproject.toml в папке mcp-server.

[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "url-text-fetcher"
version = "0.1.0"
description = "FastMCP server for URL text fetching"
authors = [{ name="Evgeny Igumnov", email="igumnovnsk@gmail.com" }]
dependencies = [
  "fastmcp",
  "requests",
  "beautifulsoup4",
]
[project.scripts]
url-text-fetcher = "url_text_fetcher.mcp_server:main"

Потом создаем файл mcp_server.py в папке mcp-server/url_text_fetcher.

from mcp.server.fastmcp import FastMCP
import requests
from bs4 import BeautifulSoup
from typing import List  # for type hints

mcp = FastMCP("URL Text Fetcher")

@mcp.tool()
def fetch_url_text(url: str) -> str:
    """Download the text from a URL."""
    resp = requests.get(url, timeout=10)
    resp.raise_for_status()
    soup = BeautifulSoup(resp.text, "html.parser")
    return soup.get_text(separator="\n", strip=True)

@mcp.tool()
def fetch_page_links(url: str) -> List[str]:
    """Return a list of all URLs found on the given page."""
    resp = requests.get(url, timeout=10)
    resp.raise_for_status()
    soup = BeautifulSoup(resp.text, "html.parser")
    # Extract all href attributes from <a> tags
    links = [a['href'] for a in soup.find_all('a', href=True)]
    return links

def main():
    mcp.run()

if __name__ == "__main__":
    main()

Далее создаем пустой __init.py__ в папке mcp-server/url_text_fetcher.

И наконец что бы MCP-сервер работал, нужно установить его:

pip install -e .

Внизу окна с чатом в LM Studio, где пользователь вводит вопрос, можно выбрать MCP-сервер через "Integrations". Кликнув "Install" и "Edit mcp.json". В этом файле можно добавить свой MCP-сервер.

{
  "mcpServers": {
    "url-text-fetcher": {
      "command": "python",
      "args": [
        "-m",
        "url_text_fetcher.mcp_server"
      ]
    }
  }
}

Второе, что я сделал это, подключил уже готовый MCP-сервер от поисковой системы Brave. Который позволяет в запросе к ИИ указывать что поищи информацию в интернете для ответа на вопрос. Для этого сначала проверьте установлен ли у вас npx. И установите @modelcontextprotocol/server-brave-search:

npm i -D @modelcontextprotocol/server-brave-search

Вот как его можно подключить в файле mcp.json:

{
  "mcpServers": {
    "brave-search": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-brave-search"
      ],
      "env": {
        "BRAVE_API_KEY": ".................."
      }
    },
    "url-text-fetcher": {
      "command": "python",
      "args": [
        "-m",
        "url_text_fetcher.mcp_server"
      ]
    }
  }
}

Ключ BRAVE_API_KEY можно получить бесплатно с небольшими ограничениями до 2000 запросов в месяц и не более 1 запроса в секунду.

В итоге внизу окна с чатом в LM Studio, где пользователь вводит вопрос, можно выбрать MCP-сервер через "Integrations" и там должны появиться два MCP-сервера: "mcp/url-text-fetcher" и "mcp/brave-search".

Теги:
Хабы:
+15
Комментарии6

Публикации

Ближайшие события