Мне очень нравится 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».
ссылка на оригинал статьи https://habr.com/ru/articles/933608/
Добавить комментарий