Skip to main content
Glama

VectorSmith

Tu base de datos vectorial, forjada en herramientas que un agente realmente puede usar.

Escribe un tools.yaml. VectorSmith lo compila en herramientas tipadas y protegidas por tenant — y luego puedes importarlas en Python o serverlas por MCP.

License Python 3.11+ TDS MCP Docs

Qué es · Cómo funciona · Escribir YAML · Python · Claude / Codex / Cursor · Pruébalo · Docs


Por qué existe

Los agentes que hablan con tus facturas, tickets o catálogo normalmente se topan con una de dos malas opciones:

Enfoque típico

Lo que sale mal

MCP de proveedor (Qdrant / Pinecone / …)

Herramientas de administración de clúster. Upsert, delete, create-collection. El modelo puede desviarse.

Vincular manualmente esquemas JSON a LangChain / el SDK de OpenAI

Reimplementas filtros, límites y aislamiento por tenant en Python. Cada agente lo copia.

«Simplemente haz embed y search() en el prompt del sistema»

Sin argumentos tipados. Sin enums. Sin un tenant = acme oculto.

VectorSmith es la tercera opción: el almacén de datos sigue siendo tuyo. Las herramientas son un contrato YAML. El compilador convierte ese contrato en esquemas MCP o herramientas en proceso. El agente nunca ve la URL, la clave API ni el filtro de tenant.

  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

Cómo funciona

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

Un archivo, dos puertas. Las mismas herramientas compiladas.

Aplicación Python

Host de chat / IDE

Instalación

pip install "vectorsmith[qdrant,langchain]"

pip install "vectorsmith[qdrant]" para que vectorsmith esté en PATH

Llamada

from vectorsmith import load_tools

vectorsmith serve tools.yaml --name invoices

Proceso

En proceso. Sin subprocesos.

El host lanza el CLI (MCP stdio o HTTP)

Mix-in

Tus @tools + Slack/GitHub mediante un cliente MCP

Otras claves de mcpServers se colocan a su lado

No importas un ejecutor. No copias inputSchema en el SDK del LLM.


Escribe una herramienta, no un prompt

Una herramienta es un nombre, una descripción (para que el modelo la elija), una colección, búsqueda de texto opcional, parámetros que el modelo puede pasar y filtros que nunca debe ver:

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 crea un archivo inicial. La lista completa de campos — kinds, operadores, pipelines, built-ins, todos los backends — está en docs/tools-yaml-reference.md.

Lo que ve el modelo

{
  "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 no está en ese esquema. El motor lo combina con AND en cada llamada. Las credenciales nunca salen de connections.

Kinds que puedes declarar

kind

Para

Herramienta típica

search

Recuperación semántica + filtros

search_invoices

lookup

ID exacto, límite 1

get_invoice

count

«¿Cuántos están vencidos?»

count_invoices

scroll

Filtrar / paginar, sin ANN

herramientas de tipo lista

pipeline

Recuperar → post_filter / group_by / sort / project

top-N por cliente

Los built-ins (search_<connection>, get_<connection>_by_id, …) son opt-in en la conexión. Desactívalos si ya nombraste una herramienta de usuario con el mismo nombre.


En tu agente (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()

El mismo YAML, otros stacks:

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", {…})

Extra

Importación

vectorsmith[langchain]

from vectorsmith import load_tools

vectorsmith[langgraph]

mismas herramientas; grafo de LangGraph

vectorsmith[openai-agents]

from vectorsmith.openai_agents import load_tools

vectorsmith[anthropic]

from vectorsmith.anthropic import load_tools

Aplicaciones funcionales: examples/langchain_agent · langgraph_agent · openai_agents · anthropic_agent.


En Claude, Codex, Cursor

Esos productos no pueden import vectorsmith. Lanzan un proceso. Apúntalos a serve con el mismo YAML.

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

Codex usa TOML (~/.codex/config.toml), no JSON. Claude Code usa .mcp.jsonno lee el archivo de Desktop.

Host

Config

Guía

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

Fragmentos listos para copiar y pegar: examples/mcp_hosts/. Slack, GitHub y el sistema de archivos siguen siendo servidores separadoscoexistencia.


Almacenes

backend en una conexión es uno de los seis adaptadores incluidos. Matriz completa (extras, híbrido, rutas anidadas): almacenes vectoriales.

qdrant · pgvector · chroma · pinecone · weaviate · milvus

pgvector puede ejecutarse en modo tabla (sin columna vectorial) para lookup / count / scroll. La búsqueda híbrida está limitada por capacidades (Qdrant / Weaviate / Milvus / Pinecone) y se comprueba con validate --live.


Pruébalo

El ejemplo de facturas es un tools.yaml más un archivo de entorno. Copia .env.example y establece QDRANT_URL en tu clúster antes de 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

Los tickets son un segundo archivo / segundo nombre MCP: tools.tickets.yaml--name tickets.

Recorrido de ejemplo


CLI

Comando

Descripción

init

Escribe un tools.yaml inicial + .env.example

validate

Compila + lint. --live hace ping al almacén. --strict falla ante advertencias

test

Llama a una herramienta compilada sin servirla

serve

MCP stdio (Desktop / Codex / Cursor; --watch activado por defecto) o --http HOST:PORT (sin watch). El --auth HTTP por defecto es builtin (necesita https --public-url). HTTP en localhost: --auth none.

introspect

Metadatos de colección / campo en --out (por defecto schema.json). Requiere --connection.

drafts / approve

drafts list|reject NAME. approve NAME [--file tools.yaml] lo promueve a ese archivo. Los borradores viven en ./tools.drafts.yaml (cwd del proceso).

auth

rotate-secret | revoke para OAuth HTTP integrado

validate sale con 0 / 1 (advertencias de --strict) / 2 (errores). test e introspect usan 3 ante un fallo en vivo. serve --http --auth none fuera de localhost sale con 3.


Documentación

kjgpta.github.io/vectorsmith es el manual renderizado (Material for MkDocs). La fuente está en docs/.

Quiero…

Ve aquí

Poner una herramienta en marcha en cinco minutos

Primeros pasos

Ver qué almacenes vectoriales se incluyen

Almacenes vectoriales

Entender cada campo de tools.yaml

Referencia YAML

Integrarlo con Claude, Codex, Cursor, LangChain, …

Integraciones

Consultar una opción de CLI

CLI

Llamar a herramientas desde Python

API de Python

Solucionar desconexión de Desktop / env / autenticación HTTP

FAQ

Copiar una configuración de host

examples/mcp_hosts

Ver aplicaciones de agente

examples/


Desarrollo

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

Espacio de trabajo: packages/core (vectorsmith_core, sin publicar) · packages/cli (publicado como vectorsmith). Core no debe importar el CLI.

Contribuir · Soporte · Seguridad · Cambios · Código de conducta


Apache-2.0 · LICENSE · NOTICE

Forja las herramientas. Conserva el almacén.

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