VectorSmith
VectorSmith
Ваша векторная база данных, превращённая в инструменты, которыми агент действительно может пользоваться.
Опишите tools.yaml. VectorSmith компилирует его в типизированные инструменты с защитой тенанта — а затем вы либо import их в Python, либо serve через MCP.
Что это · Как это работает · Написать YAML · Python · Claude / Codex / Cursor · Попробовать · Документация
Зачем это существует
Агенты, которые работают с вашими счетами, тикетами или каталогом, обычно получают один из двух неудачных вариантов:
Типичный подход | Что идёт не так |
Вендорский MCP (Qdrant / Pinecone / …) | Инструменты администрирования кластера. Upsert, delete, create-collection. Модель может уходить не туда. |
Ручная привязка JSON-схем к LangChain / OpenAI SDK | Вы заново реализуете фильтры, лимиты и изоляцию тенантов на Python. Каждый агент это копирует. |
«Просто эмбеддинг и | Нет типизированных аргументов. Нет перечислений. Нет скрытого |
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-хост | |
Установка |
|
|
Вызов |
|
|
Процесс | Внутри процесса. Без подпроцессов. | Хост запускает CLI (MCP stdio или HTTP) |
Миксование | Ваши | Другие ключи |
Вам не нужно импортировать исполнитель. Вам не нужно копировать 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: 50vectorsmith 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.
Объявляемые виды
| Для чего | Типичный инструмент |
| Семантический поиск + фильтры |
|
| Точный id, limit 1 |
|
| «Сколько просроченных?» |
|
| Фильтр / страницы, без ANN | инструменты типа списка |
| Извлечение → | 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", {…})Дополнительно | Импорт |
|
|
| те же инструменты; граф LangGraph |
|
|
|
|
Рабочие приложения: 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 Code |
| |
OpenAI Codex |
| |
Cursor |
| |
claude.ai |
|
Готовые фрагменты: 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
Команда | Что делает |
| Создаёт стартовый |
| Компиляция и lint. |
| Вызывает один скомпилированный инструмент без serve |
| MCP stdio (Desktop / Codex / Cursor; |
| Метаданные коллекции / полей в |
|
|
|
|
validate завершается кодом 0 / 1 (предупреждения --strict) / 2 (ошибки). test и introspect возвращают 3 при сбое live. Добавление --http --auth none вне localhost завершается кодом 3.
Документация
kjgpta.github.io/vectorsmith — готовая мануал (Material for MkDocs). Исходники — в docs/.
Я хочу… | Сюда |
Запустить инструмент за пять минут | |
Посмотреть, какие векторные хранилища есть в поставке | |
Разобраться в каждом поле | |
Подключиться к Claude, Codex, Cursor, LangChain, … | |
Найти флаг CLI | |
Вызывайвать инструменты из Python | |
Починить отключение Desktop / env / HTTP-аутентификацию | |
Скопировать конфигурацию хоста | |
Посмотреть примеры агентов |
Разработка
uv sync
uv run ruff check .
uv run pytest -m "not conformance"
uv run lint-importsWorkspace: packages/core (vectorsmith_core, не публикуется) · packages/cli (публикуемый vectorsmith). Core не должен импортировать CLI.
Вклад · Поддержка · Безопасность · История изменений · Кодекс поведения
Выковывайте инструменты. Храните хранилище у себя.
Maintenance
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
- AlicenseAqualityDmaintenanceEnables AI-powered generation of production-ready CTP (ConveniencePro Tool Protocol) tools from natural language descriptions, including tool definitions, implementations, tests, and TypeScript validation.512MIT
- Alicense-qualityCmaintenanceConverts any OpenAPI/Swagger API specification into MCP tools that AI assistants can use to interact with the API.247MIT
- AlicenseBqualityCmaintenanceTransforms OpenAPI definitions into MCP tools for seamless LLM-API integration.8391MIT
- Flicense-qualityDmaintenanceAggregates tools from multiple MCP servers, generates TypeScript definitions, and executes custom TypeScript scripts to orchestrate cross-server tool calls.
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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