VectorSmith
VectorSmith
당신의 벡터 데이터베이스를 에이전트가 실제로 사용할 수 있는 도구로 단조하세요.
tools.yaml을 작성하세요. VectorSmith가 이를 타입이 지정되고 테넌트로 보호되는 도구로 컴파일합니다. 그런 다음 Python에서 import하거나 MCP를 통해 serve하면 됩니다.
이게 왜 필요한가 · 작동 방식 · 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) |
혼합 | MCP 클라이언트를 통한 | 다른 |
실행기를 import할 필요도, 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, 1개 제한 |
|
| "몇 개가 연체되었나요?" |
|
| 필터 / 페이지, ANN 없음 | 목록 스타일 도구 |
| 검색 → | 클라이언트별 상위 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에서
이 제품들은 vectorsmith를 import할 수 없습니다. 프로세스를 생성합니다. 동일한 YAML로 serve를 가리키세요.
{
"mcpServers": {
"invoices": {
"command": "vectorsmith",
"args": ["serve", "tools.invoices.yaml", "--name", "invoices"]
}
}
}Codex는 JSON이 아닌 TOML(~/.codex/config.toml)입니다. Claude Code는 .mcp.json을 사용하며 Desktop 파일을 읽지 않습니다.
호스트 | 구성 | 가이드 |
Claude Desktop |
| |
Claude Code |
| |
OpenAI Codex |
| |
Cursor |
| |
claude.ai |
|
복사-붙여넣기 스니펫: examples/mcp_hosts/. Slack, GitHub, 파일시스템은 별도의 서버로 유지됩니다 — 공존.
스토어
연결의 backend는 제공되는 6개 어댑터 중 하나입니다. 전체 매트릭스(추가 기능, 하이브리드, 중첩 경로): vector stores.
qdrant · pgvector · chroma · pinecone · weaviate · milvus
pgvector는 lookup / count / scroll을 위해 테이블 모드(벡터 열 없음)로 실행할 수 있습니다. 하이브리드 검색은 기능별로 제한되며(Qdrant / Weaviate / Milvus / Pinecone) validate --live로 확인합니다.
사용해 보기
인보이스 예제는 tools.yaml과 env 파일로 구성됩니다. .env.example을 복사하고 validate / test / serve 전에 QDRANT_URL을 당신의 클러스터로 설정하세요.
# 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
명령어 | 설명 |
| 시작용 |
| 컴파일 + 린트. |
| 서빙 없이 컴파일된 도구 하나 호출 |
| MCP stdio (Desktop / Codex / Cursor; 기본적으로 |
| 컬렉션 / 필드 메타데이터를 |
|
|
| 내장 HTTP OAuth용 |
validate는 0 / 1(--strict 경고) / 2(오류)로 종료됩니다. test와 introspect는 라이브 실패 시 3을 사용합니다. localhost가 아닌 곳에서 serve --http --auth none은 3으로 종료됩니다.
문서
kjgpta.github.io/vectorsmith 는 렌더링된 매뉴얼입니다 (Material for MkDocs). 소스는 docs/ 입니다.
원하는 것 | 이동 |
5분 안에 도구 작동시키기 | |
어떤 벡터 스토어가 포함되는지 보기 | |
모든 | |
Claude, Codex, Cursor, LangChain 등에 연결하기 | |
CLI 플래그 찾아보기 | |
Python에서 도구 호출하기 | |
Desktop 연결 끊김 / 환경 변수 / HTTP 인증 해결 | |
호스트 구성 복사 | |
에이전트 앱 보기 |
개발
uv sync
uv run ruff check .
uv run pytest -m "not conformance"
uv run lint-imports작업 공간: packages/core (vectorsmith_core, 미게시) · packages/cli (게시된 vectorsmith). Core는 CLI를 import하면 안 됩니다.
기여하기 · 지원 · 보안 · 변경 로그 · 행동 강령
도구를 단조하세요. 스토어를 지키세요.
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