Перейти к содержанию

Интеграция с AI-агентами

Подключите LegalMCP к вашему AI-агенту на Python — через официальный SDK или LangChain.


1. Python SDK (mcp)

Официальный пакет для прямого подключения к MCP-серверу.

Установка

pip install mcp

Пример: список инструментов и вызов

import asyncio
from mcp.client.streamable_http import streamablehttp_client
from mcp import ClientSession

MCP_TOKEN = "lmcp_ВАШ_ТОКЕН"

async def main():
    url = "https://legalmcp.ru/mcp"
    headers = {"Authorization": f"Bearer {MCP_TOKEN}"}

    async with streamablehttp_client(url, headers=headers) as (r, w, _):
        async with ClientSession(r, w) as session:
            await session.initialize()

            # Список всех инструментов
            tools = await session.list_tools()
            for tool in tools.tools:
                print(f"  {tool.name}: {tool.description[:80]}")

            # Поиск по законодательству
            result = await session.call_tool(
                "search_documents",
                {"query": "штраф за неуплату налогов"}
            )
            print(result)

asyncio.run(main())

Доступные инструменты

Инструмент Описание
search_documents Гибридный семантический + полнотекстовый поиск по базе знаний
get_document_by_id Точное извлечение документа по ID и дате
get_document_graph Граф связей документа
get_document_history Хронология редакций документа с diff
search_changes Поиск изменений в законодательстве после указанной даты
get_knowledge_base_status Карта покрытия базы знаний — коллекции и их состояние
report_missing_data AI Feedback Loop — сообщение об отсутствующих документах

2. LangChain / LangGraph

Библиотека langchain-mcp-adapters превращает MCP-инструменты в LangChain-совместимые tools за одну строку.

Установка

pip install langchain-mcp-adapters langchain-openai langgraph

Пример: ReAct-агент с LegalMCP

import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent

MCP_TOKEN = "lmcp_ВАШ_ТОКЕН"

async def main():
    llm = ChatOpenAI(model="gpt-4o")

    async with MultiServerMCPClient(
        {
            "legalmcp": {
                "transport": "streamable_http",
                "url": "https://legalmcp.ru/mcp",
                "headers": {"Authorization": f"Bearer {MCP_TOKEN}"},
            }
        }
    ) as client:
        tools = client.get_tools()
        agent = create_react_agent(llm, tools)

        response = await agent.ainvoke(
            {"messages": "Какой штраф за непредставление налоговой декларации?"}
        )
        print(response["messages"][-1].content)

asyncio.run(main())

Агент автоматически:

  1. Вызовет search_documents с запросом пользователя
  2. Получит релевантные статьи НК РФ
  3. Сформулирует ответ с цитатами

Несколько MCP-серверов

MultiServerMCPClient поддерживает подключение к нескольким серверам одновременно:

async with MultiServerMCPClient(
    {
        "legalmcp": {
            "transport": "streamable_http",
            "url": "https://legalmcp.ru/mcp",
            "headers": {"Authorization": f"Bearer {MCP_TOKEN}"},
        },
        "другой_сервер": {
            "transport": "stdio",
            "command": "python",
            "args": ["my_local_server.py"],
        }
    }
) as client:
    tools = client.get_tools()  # инструменты из всех серверов

3. CrewAI

CrewAI использует LangChain под капотом — те же langchain-mcp-adapters работают напрямую:

import asyncio
from crewai import Agent, Task, Crew
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_openai import ChatOpenAI

MCP_TOKEN = "lmcp_ВАШ_ТОКЕН"

async def main():
    async with MultiServerMCPClient(
        {
            "legalmcp": {
                "transport": "streamable_http",
                "url": "https://legalmcp.ru/mcp",
                "headers": {"Authorization": f"Bearer {MCP_TOKEN}"},
            }
        }
    ) as client:
        tools = client.get_tools()

        lawyer = Agent(
            role="Юрист-аналитик",
            goal="Давать точные ответы на юридические вопросы с цитатами из законов РФ",
            backstory="Вы — опытный юрист с доступом к полной базе законодательства РФ.",
            tools=tools,
            llm=ChatOpenAI(model="gpt-4o"),
        )

        task = Task(
            description="Какой штраф грозит за неуплату НДС в срок?",
            expected_output="Ответ с цитатой из НК РФ",
            agent=lawyer,
        )

        crew = Crew(agents=[lawyer], tasks=[task])
        result = await crew.kickoff_async()
        print(result)

asyncio.run(main())

Аутентификация

Все примеры используют MCP-токен (lmcp_...), который можно получить в Личном кабинете.

Способ Формат
Header (рекомендуется) Authorization: Bearer lmcp_...
Query parameter ?token=lmcp_...

Безопасность

Не хардкодьте токен в коде. Используйте переменные окружения:

import os
MCP_TOKEN = os.environ["LEGALMCP_TOKEN"]


Лимиты

Каждый вызов инструмента расходует 1 запрос из месячного лимита токена (по умолчанию — 100). Текущий расход отображается в Личном кабинете.