Skip to main content
Glama

omniref

One MCP interface to search image and video references across many search engines, built for AI image and video generation agents (reference-to-video, style, character and motion conditioning).

Status: pre-alpha. Only a deterministic mock provider exists today. The tool schema is the part to review.

Run

Two transports, one binary. stdio is the default.

Transport

Use when

Command

stdio

The client spawns the server (Claude Desktop, Claude Code, Cursor)

omniref

http

Shared or remote server (streamable HTTP at /mcp)

omniref --transport http --host 127.0.0.1 --port 8000

The HTTP server has no authentication. It binds to localhost by default; put it behind an authenticating proxy before exposing it. The Docker image binds 0.0.0.0 inside the container, so publish the port to 127.0.0.1 only (-p 127.0.0.1:8000:8000).

From source

Requires Python 3.12+ and uv.

uv sync
uv run omniref                         # stdio
uv run omniref --transport http        # http://127.0.0.1:8000/mcp

From a GitHub release

Each tag vX.Y.Z publishes a wheel and sdist on the Releases page and a container image on GHCR.

uvx --from https://github.com/kaustubhkagrawal/omniref/releases/download/v0.1.0/omniref-0.1.0-py3-none-any.whl omniref
docker run -i --rm ghcr.io/kaustubhkagrawal/omniref:0.1.0 --transport stdio
docker run --rm -p 127.0.0.1:8000:8000 ghcr.io/kaustubhkagrawal/omniref:0.1.0

Connect a client

# stdio
claude mcp add omniref -- uvx --from git+https://github.com/kaustubhkagrawal/omniref omniref
# http
claude mcp add --transport http omniref http://127.0.0.1:8000/mcp

Generic stdio config (Claude Desktop, Cursor):

{
  "mcpServers": {
    "omniref": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/kaustubhkagrawal/omniref", "omniref"]
    }
  }
}

Related MCP server: multi-api-web-search

Releasing

Bump version in pyproject.toml, merge to main, then git tag vX.Y.Z && git push origin vX.Y.Z. The release workflow checks the tag matches pyproject.toml, runs lint and tests, builds the artifacts, creates the GitHub Release, and pushes ghcr.io/kaustubhkagrawal/omniref. Tags with a hyphen (e.g. v0.2.0-rc1) are marked prerelease and do not move latest.

Tools

Tool

Purpose

list_providers

Configured providers and the media types each supports

search_references

Fan out one query to all (or selected) providers; returns normalized, interleaved, URL-deduplicated results plus per-provider errors

Layout

src/omniref/
  models.py        Reference, SearchRequest, SearchResponse (the unified schema)
  registry.py      Parallel fan-out, timeouts, error isolation, merge/dedupe
  server.py        FastMCP server and CLI (stdio + http)
  __main__.py      python -m omniref
  providers/
    base.py        ReferenceProvider interface
    mock.py        Fake data for dev and tests
skills/
  omniref/SKILL.md   Agent skill that teaches the workflow
tests/

Adding a provider

Subclass ReferenceProvider, set name, description, media_types, implement async search(request) -> list[Reference], and register it in server.default_registry(). Map the native payload into Reference; raise on failure and the registry reports it in errors without affecting other providers.

Develop

uv run pytest
uv run ruff check . && uv run ruff format --check .

License

MIT. See LICENSE.

Available Tools

2 tools
list_providersList ProvidersA
Read-only

List configured reference search providers and the media types each supports.

Inputs: no named parameters. Returns: result

search_referencesSearch ReferencesA
Read-only

Search images and videos across all providers; results are normalized and deduplicated.

Partial failures are reported in errors while other providers' results are still returned.

Inputs: query (required), limit, providers, media_types. Returns: query, errors, results, providers_queried

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 2 tools

    Disambiguation5/5

    The two tools serve clearly distinct purposes: one enumerates available providers and their supported media types, the other performs the actual cross-provider search. An agent cannot reasonably confuse discovery of providers with executing a reference search.

    Naming Consistency5/5

    Both names follow the same snake_case verb_noun convention (list_providers, search_references) and use consistent terminology aligned with the domain (providers, references).

    Tool Count3/5

    Two tools is thin for a server that otherwise implies a multi-provider search surface; discovery and search alone leave little room for the operations users would expect. The count is defensible for a minimal read-only server but borderline under-scoped.

    Completeness3/5

    The surface covers the two core read operations (enumerate providers, search across them) but omits obvious adjacent operations such as retrieving provider details/capabilities, fetching a single reference by ID, or scoping a search to one provider. Agents can work around these gaps via search_references but may hit dead ends for provider-specific inspection.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      Aggregated search API service that provides real-time web search capabilities for AI assistants via MCP.
      2
      9 npm
      44
      GPL 3.0
    • F
      license
      C
      quality
      C
      maintenance
      Enables MCP clients to perform web searches through multiple AI models, with dual-mode routing for fast or cited results and consensus-based multi-engine querying to cross-verify information.
      2
      -
    • F
      license
      Not graded
      quality
      A
      maintenance
      Enables MCP clients to run real-time searches across Google, Bing, Yahoo, DuckDuckGo, YouTube, eBay, and other engines, with automatic formatting of answer boxes, organic results, news, images, shopping, weather, and stock data. Responses can be returned as structured JSON or token-efficient Markdown.
      -