Skip to main content
Glama

VectorSmith

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

Опишите tools.yaml. VectorSmith компилирует его в типизированные инструменты с защитой тенанта — а затем вы либо import их в Python, либо serve через MCP.

License Python 3.11+ TDS MCP Docs

Что это · Как это работает · Написать YAML · Python · Claude / Codex / Cursor · Попробовать · Документация


Зачем это существует

Агенты, которые работают с вашими счетами, тикетами или каталогом, обычно получают один из двух неудачных вариантов:

Типичный подход

Что идёт не так

Вендорский MCP (Qdrant / Pinecone / …)

Инструменты администрирования кластера. Upsert, delete, create-collection. Модель может уходить не туда.

Ручная привязка JSON-схем к LangChain / OpenAI SDK

Вы заново реализуете фильтры, лимиты и изоляцию тенантов на Python. Каждый агент это копирует.

«Просто эмбеддинг и search() в системном промпте»

Нет типизированных аргументов. Нет перечислений. Нет скрытого tenant = acme.

VectorSmith — третий вариант: хранилище данных остаётся вашим. Инструменты — это YAML-контракт. Компилятор превращает контракт в MCP-схемы или внутрипроцессные инструменты. Агент никогда не видит ни URL, ни API-ключ, ни фильтр тенанта.

  you write                         VectorSmith                    the agent sees
─────────────                   ─────────────────                ────────────────
 tools.yaml          ──▶   interpolate → validate → compile  ──▶  search_invoices
 tenant: acme                    Engine stays internal            query, client, status
 ${QDRANT_URL}                                                    (no tenant, no URL)

Related MCP server: openapi-mcp-server

Как это работает

flowchart LR
  subgraph author["You"]
    Y["tools.yaml"]
    E[".env / ${VAR}"]
  end
  subgraph vs["VectorSmith"]
    L["load + secret lint"]
    V["validate VBxxxx"]
    C["compile schemas + plan"]
  end
  subgraph out["Consume once"]
    P["load_tools() / connect()"]
    M["vectorsmith serve"]
  end
  subgraph hosts["Hosts"]
    A["LangChain · LangGraph · Agents SDK · Anthropic"]
    H["Claude · Codex · Cursor · claude.ai"]
  end
  Y --> L
  E --> L
  L --> V --> C
  C --> P --> A
  C --> M --> H

Один файл, два входа. Одни и те же скомпилированные инструменты.

Python-приложение

Чат / IDE-хост

Установка

pip install "vectorsmith[qdrant,langchain]"

pip install "vectorsmith[qdrant]", чтобы vectorsmith был в PATH

Вызов

from vectorsmith import load_tools

vectorsmith serve tools.yaml --name invoices

Процесс

Внутри процесса. Без подпроцессов.

Хост запускает CLI (MCP stdio или HTTP)

Миксование

Ваши @tool-ы + Slack/GitHub через MCP-клиент

Другие ключи mcpServers лежат рядом с ним

Вам не нужно импортировать исполнитель. Вам не нужно копировать inputSchema в LLM SDK.


Напишите инструмент, а не промпт

Инструмент — это имя, описание (чтобы модель * выбрала* его), коллекция, необязательный текстовый поиск, параметры, которые модель может передавать, и фильтры, которые она не должна видеть:

tds_version: "1"

connections:
  invoices:
    backend: qdrant
    url: ${QDRANT_URL}              # secrets only here, only as ${VAR}
    api_key: ${QDRANT_API_KEY:-}

tools:
  - name: search_invoices
    kind: search
    description: >
      Search invoices by free text and filter by client, status, or amount.
      Use when the user asks about invoices, billing, or payments.
    target: { connection: invoices, collection: invoices }
    query: { param: query, required: false }
    static_filters:
      - { path: tenant, op: eq, value: acme }    # hidden from the model
    parameters:
      - { name: client, path: client_name, dtype: keyword, op: eq }
      - { name: status, path: status, dtype: keyword, op: in,
          enum: [draft, sent, paid, overdue] }
      - { name: min_amount, path: amount, dtype: float, op: gte }
    output:
      fields: [invoice_id, client_name, status, amount]
      limit_default: 10
      limit_max: 50

vectorsmith init ./demo создаёт стартовый файл. Полный список полей — виды, операторы, пайплайны, встроенные функции, каждый бэкенд — в docs/tools-yaml-reference.md.

Что видит модель

{
  "name": "search_invoices",
  "description": "Search invoices by free text and filter by client, status, or amount. …",
  "inputSchema": {
    "type": "object",
    "properties": {
      "query": { "type": "string" },
      "client": { "type": "string" },
      "status": {
        "type": "array",
        "items": { "type": "string", "enum": ["draft", "sent", "paid", "overdue"] }
      },
      "min_amount": { "type": "number" },
      "limit": { "type": "integer", "minimum": 1, "maximum": 50, "default": 10 }
    }
  }
}

tenant: acme не входит в эту схему. Движок применяет её через AND при каждом вызове. Учётные данные никогда не покидают connections.

Объявляемые виды

kind

Для чего

Типичный инструмент

search

Семантический поиск + фильтры

search_invoices

lookup

Точный id, limit 1

get_invoice

count

«Сколько просроченных?»

count_invoices

scroll

Фильтр / страницы, без ANN

инструменты типа списка

pipeline

Извлечение → post_filter / group_by / sort / project

top-N на клиента

Встроенные инструменты (search_<connection>, get_<connection>_by_id, …) опциональны на соединении. Отключите их, если уже назвали пользовательский инструмент так же.


В вашем агенте (Python)

pip install "vectorsmith[qdrant,langchain]"
from vectorsmith import load_tools
from langchain.agents import create_agent

tools = load_tools("tools.invoices.yaml", "tools.tickets.yaml")
agent = create_agent("openai:gpt-4.1", tools)
# … await tools.aclose()

Тот же YAML, другие стеки:

from vectorsmith.langgraph import load_tools      # create_react_agent / ToolNode
from vectorsmith.openai_agents import load_tools  # Agent + Runner
from vectorsmith.anthropic import load_tools      # messages.create(tools=vs.tools)
from vectorsmith import connect                   # await vs.call("search_invoices", {…})

Дополнительно

Импорт

vectorsmith[langchain]

from vectorsmith import load_tools

vectorsmith[langgraph]

те же инструменты; граф LangGraph

vectorsmith[openai-agents]

from vectorsmith.openai_agents import load_tools

vectorsmith[anthropic]

from vectorsmith.anthropic import load_tools

Рабочие приложения: examples/langchain_agent · langgraph_agent · openai_agents · anthropic_agent.


В Claude, Codex, Cursor

Эти продукты не могут выполнить import vectorsmith. Они запускают процесс. Направьте их на serve с тем же YAML.

{
  "mcpServers": {
    "invoices": {
      "command": "vectorsmith",
      "args": ["serve", "tools.invoices.yaml", "--name", "invoices"]
    }
  }
}

Codex — это TOML (~/.codex/config.toml), а не JSON. Claude Code использует .mcp.json — он не читает файл Desktop.

Хост

Конфигурация

Руководство

Claude Desktop

claude_desktop_config.json

docs/integrations/claude-desktop.md

Claude Code

.mcp.json / claude mcp add

docs/integrations/claude-code.md

OpenAI Codex

~/.codex/config.toml

docs/integrations/openai-codex.md

Cursor

.cursor/mcp.json

docs/integrations/cursor.md

claude.ai

serve --http --auth builtin

docs/quickstart-selfhost.md

Готовые фрагменты: examples/mcp_hosts/. Slack, GitHub, файловая система остаются отдельными серверами — сосуществование.


Хранилища

backend в соединении — один из шести поставляемых адаптеров. Полная матрица (дополнительные пакеты, гибрид, вложенные пути): векторные хранилища.

qdrant · pgvector · chroma · pinecone · weaviate · milvus

pgvector может работать в табличном режиме (без векторной колонки) для lookup / count / scroll. Гибридный поиск ограничен возможностями бэкенда (Qdrant / Weaviate / Milvus / Pinecone) и проверяется через validate --live.


Попробуйте

Пример со счетами — это tools.yaml плюс env-файл. Скопируйте .env.example и задайте QDRANT_URL для вашего кластера перед validate / test / serve.

# clone, then:
uv sync

uv run vectorsmith validate examples/qdrant_invoices/tools.invoices.yaml \
  --env-file examples/qdrant_invoices/.env.example

uv run vectorsmith test examples/qdrant_invoices/tools.invoices.yaml search_invoices \
  --args '{"query":"Globex invoice","limit":3}' \
  --env-file examples/qdrant_invoices/.env.example

uv run vectorsmith serve examples/qdrant_invoices/tools.invoices.yaml --name invoices \
  --env-file examples/qdrant_invoices/.env.example

Тикеты — второй файл / второе имя MCP: tools.tickets.yaml--name tickets.

Пошаговый пример


CLI

Команда

Что делает

init

Создаёт стартовый tools.yaml + .env.example

validate

Компиляция и lint. --live пингует хранилище. --strict падает на предупреждениях.

test

Вызывает один скомпилированный инструмент без serve

serve

MCP stdio (Desktop / Codex / Cursor; --watch включено по умолчанию) либо --http HOST:PORT (без watch). HTTP --auth по умолчанию — builtin (нужен https через --public-url). Локальный HTTP: --auth none.

introspect

Метаданные коллекции / полей в --out (по умолчанию schema.json). Требуется --connection.

drafts / approve

drafts list|reject NAME. approve NAME [--file NAME] переносит в этот файл. Черновики живут в ./tools.drafts.yaml ( текущий каталог процесса).

auth

rotate-secret | revoke для встроенной HTTP-аутентификации OAuth

validate завершается кодом 0 / 1 (предупреждения --strict) / 2 (ошибки). test и introspect возвращают 3 при сбое live. Добавление --http --auth none вне localhost завершается кодом 3.

Документация

kjgpta.github.io/vectorsmith — готовая мануал (Material for MkDocs). Исходники — в docs/.

Я хочу…

Сюда

Запустить инструмент за пять минут

Начало работы

Посмотреть, какие векторные хранилища есть в поставке

Векторные хранилища

Разобраться в каждом поле tools.yaml

YAML-справочник

Подключиться к Claude, Codex, Cursor, LangChain, …

Интеграции

Найти флаг CLI

CLI

Вызывайвать инструменты из Python

Python API

Починить отключение Desktop / env / HTTP-аутентификацию

FAQ

Скопировать конфигурацию хоста

examples/mcp_hosts

Посмотреть примеры агентов

examples/


Разработка

uv sync
uv run ruff check .
uv run pytest -m "not conformance"
uv run lint-imports

Workspace: packages/core (vectorsmith_core, не публикуется) · packages/cli (публикуемый vectorsmith). Core не должен импортировать CLI.

Вклад · Поддержка · Безопасность · История изменений · Кодекс поведения


Apache-2.0 · LICENSE · NOTICE

Выковывайте инструменты. Храните хранилище у себя.

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI-powered generation of production-ready CTP (ConveniencePro Tool Protocol) tools from natural language descriptions, including tool definitions, implementations, tests, and TypeScript validation.
    5
    12
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    Converts any OpenAPI/Swagger API specification into MCP tools that AI assistants can use to interact with the API.
    24
    7
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Transforms OpenAPI definitions into MCP tools for seamless LLM-API integration.
    8
    39
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Point Gecko at an OpenAPI spec; get first-call-correct, auth-hidden agent tools.

  • Reliable async execution for agent tool calls: schema gating, retries, idempotency, audit trail.

  • 33 tools that make AI write, implement, and verify intent against explicit, testable constraints.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kjgpta/vectorsmith'

If you have feedback or need assistance with the MCP directory API, please join our Discord server