Labsco
infino-ai logo

Infino

from infino-ai

Infino โ€” keyword, vector, hybrid, and SQL retrieval over data on object storage, for AI agents.

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedFreeQuick setup

Infino MCP server

An MCP server for Infino โ€” it lets an AI agent run keyword, semantic, hybrid, and SQL retrieval over your data on object storage, from any MCP-compatible client (Claude Code, Claude Desktop, Cursor, VS Code, and others). Published on npm as @infino-ai/mcp-server and listed on the official MCP Registry as io.github.infino-ai/mcp-server (which propagates to catalogs like Smithery, Glama, and PulseMCP).

  • No API key. Semantic search embeds queries with a local model โ€” nothing leaves the machine for embedding.
  • Read-only by default. Writes and full SQL are opt-in behind a single environment flag.
  • Bring your own storage. Point it at a local path or your own bucket (S3, Azure, or any S3-compatible store).

Contents


Tools

ToolArgumentsWhat it does
infino_semantic_searchtable, query, k, column?, vectorColumn?, filter?Find passages by meaning โ€” embeds the query with a local model (no key) and ranks by vector similarity. Handles paraphrase and synonyms. Optional filter ({column, query, mode?}) restricts the ranking to rows whose keyword column matches first (a pushdown pre-filter).
infino_keyword_searchtable, query, k, column?BM25 full-text search โ€” for exact terms, identifiers, error codes, product names.
infino_hybrid_searchtable, query, k, column?, vectorColumn?Fused keyword + semantic search in one ranking pass โ€” BM25 over the text column combined with vector similarity, so rows matching the literal terms and the meaning rank highest.
infino_token_matchtable, query, column?, mode?, limit?Unranked keyword filter โ€” the set of rows whose text column contains the token(s). Use when you need the matches, not a relevance order.
infino_exact_matchtable, value, column?, limit?Unranked exact-equality filter over an indexed column (tag, status, id string).
infino_counttable, query, column?, mode?Count how many rows match a keyword query, without fetching them โ€” a fast tally over the text column. For the matching rows use infino_keyword_search or infino_token_match.
infino_sqlquerySQL for counts, filters, joins, aggregates. Read-only (single SELECT/WITH) by default; accepts any single statement when INFINO_MCP_ENABLE_WRITES is set.
infino_list_tablesโ€”List the tables in the connected catalog.
infino_describe_tabletableColumn names and types for a table.
infino_add_documentstable, documentsAppend rows (one call = one commit); embeds the text column for vector tables. Only when INFINO_MCP_ENABLE_WRITES is set.
infino_update_documentstable, predicate, documentsReplace the rows matching a SQL predicate with new documents, 1:1 (missing vectors are embedded). Durable storage only. Only when INFINO_MCP_ENABLE_WRITES is set.
infino_delete_documentstable, predicateDelete the rows matching a SQL predicate. Durable storage only. Only when INFINO_MCP_ENABLE_WRITES is set.

The engine's search table functions (bm25_search, vector_search, hybrid_search, โ€ฆ) are not callable from infino_sql โ€” retrieval goes through the dedicated search tools above, which embed and project for you. infino_sql is for filters, joins, and aggregates.


Security & data handling

This server is designed to run locally, beside the client, and to keep data and credentials on the user's machine.

  • Local execution. It runs as a subprocess of your MCP client over stdio. There is no network listener and no remote service.
  • No data sent for embedding. Query and document embedding uses a local model โ€” text is never sent to a third-party embedding API. There is no API key to provision or leak.
  • Credentials stay in the environment. Storage credentials are read from standard provider environment variables and used only to reach the bucket you configured. They are never logged or returned in tool output.
  • Read-only by default. Without INFINO_MCP_ENABLE_WRITES, the write tool is not even advertised to the agent, and infino_sql rejects anything but a single SELECT/WITH. Enable writes deliberately, and prefer scoping the server to data the agent is allowed to modify.
  • Least privilege. Point INFINO_MCP_URI at the narrowest dataset the task needs, and supply storage credentials scoped to that bucket/prefix.

How retrieval works

Semantic search embeds locally with Hugging Face transformers.js (all-MiniLM-L6-v2, 384-dim by default; override with INFINO_MCP_EMBED_MODEL). The server embeds both the documents it ingests (via infino_add_documents) and your queries with the same model, so they align in the same vector space.

If you change INFINO_MCP_EMBED_MODEL, the table's vector index must match the new model's dimension โ€” embeddings produced by different models are not comparable, and a dimension mismatch will fail at search time.


Local development

The server depends on the published @infino-ai/infino Node binding, which resolves from public npm like any other dependency.

npm install
npm run build
INFINO_MCP_URI=/path/to/data node dist/index.js   # runs on stdio

Point a client at node /absolute/path/dist/index.js over stdio to dogfood a local build, or use the MCP Inspector:

npx @modelcontextprotocol/inspector node dist/index.js