Multimodal AI data infrastructure as an MCP server. 35 tools · 13 resources · 11 prompts for catalog management, AI/ML pipelines, dependency management, project scaffolding, and an interactive REPL.
Uses sync endpoints + uvloop for best performance with Pixeltable ≥ 0.6.3 (see pyproject.toml). Aligned with the pixeltable-skill and pixeltable-starter-kit conventions (pxt.mcp_udfs, FastAPIRouter, return_rows=True, pxt.Required[T], pxt.Array[T]).
Requires uv:
curl -LsSf https://astral.sh/uv/install.sh | shClaude Code (easiest) — just say:
"Install https://github.com/pixeltable/mcp-server-pixeltable-developer as a uv tool and add it to your MCPs"
Manual install:
uv tool install --from git+https://github.com/pixeltable/mcp-server-pixeltable-developer.git mcp-server-pixeltable-developer
claude mcp add pixeltable mcp-server-pixeltable-developer # Claude CodeIf uv warns that ~/.local/bin is not on your PATH, run uv tool update-shell (or add that directory to PATH) so mcp-server-pixeltable-developer is found. Check with mcp-server-pixeltable-developer --version.
From source:
git clone https://github.com/pixeltable/mcp-server-pixeltable-developer && cd mcp-server-pixeltable-developer
uv syncClaude Desktop
{
"mcpServers": {
"pixeltable": {
"command": "mcp-server-pixeltable-developer",
"env": {
"PIXELTABLE_HOME": "/Users/{you}/.pixeltable",
"PIXELTABLE_FILE_CACHE_SIZE_G": "10"
}
}
}
}From source — use "command": "uv" with "args": ["run", "--directory", "{repo}", "python", "-m", "mcp_server_pixeltable_stio"].
Cursor
User config — ~/.cursor/mcp.json (applies to all workspaces):
{
"mcpServers": {
"pixeltable-developer": {
"command": "mcp-server-pixeltable-developer",
"env": {
"PIXELTABLE_HOME": "/Users/you/.pixeltable"
}
}
}
}If Cursor reports command not found, use the full path from uv tool update-shell / which mcp-server-pixeltable-developer, e.g. "command": "/Users/you/.local/bin/mcp-server-pixeltable-developer".
Develop this repo from source — optional project .cursor/mcp.json so the server runs from your clone (replace the path):
{
"mcpServers": {
"pixeltable-developer": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-server-pixeltable-developer", "python", "-m", "mcp_server_pixeltable_stio"],
"env": {
"PIXELTABLE_HOME": "/Users/you/.pixeltable"
}
}
}
}Do not define the same server name twice (user + project) unless you intend to run two entries.
Restart your client after configuration changes.
Use a dedicated PIXELTABLE_HOME for testing so you do not touch other catalogs.
From a clone, after uv sync:
export PIXELTABLE_HOME="$HOME/.pixeltable-mcp-test"
uv run mcp dev src/mcp_server_pixeltable_stio/server.py:mcpThis starts the server and opens the MCP Inspector in your browser so you can invoke tools, read resources, and try prompts without an IDE.
Quick checks: tool pixeltable_check_dependencies with expression openai.chat_completions; tool execute_python with print(pxt.__version__); resource pixeltable://version.
Add PIXELTABLE_HOME under env in .cursor/mcp.json (see Client Configuration above). Restart Cursor, confirm the server connects, then run a simple tool from the MCP panel.
mcp-server-pixeltable-developer --version
uv run python list_tools.py--version / --help exit immediately. list_tools.py only prints registered tools, resources, and prompts (import check, not a full MCP session).
| Category | Tools |
|---|---|
| Init | init (recovery for circular env init) |
| Tables | create_table · drop_table · create_view · create_snapshot |
| Data | create_replica · query_table · insert_data · query · add_computed_column |
| Directories | create_dir · drop_dir · move |
| Config | configure_logging · set_datastore |
| AI/ML | create_udf · create_array · create_tools · connect_mcp (wraps pxt.mcp_udfs) |
| Deps | check_dependencies · install_dependency |
| Types | create_type (Image, Video, Audio, Array[Float], Required[T], …) |
| Docs | search_docs |
| Scaffolding | scaffold_project · list_project_templates (wraps pixeltable-new) |
| REPL | execute_python · introspect_function · list_available_functions · install_package |
| Logging | log_bug · log_missing_feature · log_success · generate_bug_report · get_session_summary |
| Display | display_in_browser (canvas-extra + PIXELTABLE_MCP_CANVAS=1) |
All tools are prefixed pixeltable_ (except REPL/logging helpers). Full docstrings available via introspect_function. pixeltable://tools always reflects the live FastMCP registration.
create_view accepts iterator (frame_iterator / document_splitter / audio_splitter / string_splitter) + iterator_kwargs so frame and chunk views don't require dropping into execute_python.
| URI | What it returns |
|---|---|
pixeltable://tables |
All tables with count |
pixeltable://tables/{path} |
Info about a table / view / snapshot |
pixeltable://tables/{path}/schema |
Column schema |
pixeltable://directories |
All directories |
pixeltable://ls / pixeltable://ls/{path} |
Directory listing |
pixeltable://version |
Pixeltable version |
pixeltable://config/datastore |
Datastore config |
pixeltable://types |
Available data types |
pixeltable://functions |
Registered Pixeltable functions |
pixeltable://tools |
MCP tool list (introspects the live FastMCP server) |
pixeltable://help |
Workflow guidance + pitfalls |
pixeltable://diagnostics |
System & dependency diagnostics |
Core: pixeltable_usage_guide (now leads with pitfalls) · getting_started · computer_vision_pipeline · rag_pipeline · video_analysis_pipeline · audio_processing_pipeline
Agent / data (from pixeltable-skill): tool_calling_agent_pipeline · agent_with_memory_pipeline · video_rag_agent_pipeline · agentic_patterns_guide · ml_data_pipeline
Create a table called movies with title, year, and rating columns → insert sample data → query ratings above 8.5
Add a computed column that runs YOLOX object detection on every image
Check what deps I need for openai.chat_completions(...) → install them
execute_python("print(pxt.list_tables())")
- Pixeltable docs
- pixeltable-skill — task router, critical anti-patterns (
openai.vision,FrameIterator, positional.similarity, etc.), and workflow examples aligned with current Pixeltable - pixeltable-starter-kit —
FastAPIRouter/pxt servepatterns and seven app templates; usepixeltable_scaffold_projectto bootstrap them - Consumer side of MCP:
pxt.mcp_udfs(url)(Pixeltable 0.6.x+) pulls this server's tools into a Pixeltable agent; expose them withpxt.tools(local_udf, *mcp_tools)andinvoke_tools
src/mcp_server_pixeltable_stio/
server.py FastMCP server, tool/resource/prompt registration, uvloop, canvas gate
core/
tables.py Table CRUD, views (iterator support), snapshots, replicas, queries,
computed columns (eval context exposes all skill providers),
_resolve_pxt_type (Required[T] / Array[T] / dict form)
directories.py Directory CRUD, listing, moving
dependencies.py Dependency checking, unified installer, diagnostics
udf.py UDF creation, type system, pxt.tools / pxt.mcp_udfs wrappers
helpers.py Config, version, docs search, live pixeltable://tools introspection
resources.py Read-only MCP resource handlers
scaffold.py pixeltable-new wrappers (module first, uvx fallback)
canvas_server.py Optional browser canvas (lazy-imported; opt-in via env)
prompt.py Prompt templates (11 prompts covering core flows + 5 skill agent flows)
repl_functions.py Persistent Python REPL, introspection, package management
tests/ Fast pytest suite + slow smoke (--run-slow uses tmp PIXELTABLE_HOME)
.github/workflows/ CI: matrix py3.10/3.11/3.12, list_tools.py + pytest
The display_in_browser tool requires:
- Install the canvas extra:
uv pip install 'mcp-server-pixeltable-developer[canvas]'(adds FastAPI + uvicorn). - Start the MCP server with
PIXELTABLE_MCP_CANVAS=1(override the port withPIXELTABLE_MCP_CANVAS_PORT).
Without those, the tool returns a clear error and core MCP traffic is unaffected.
pixeltable_list_project_templates and pixeltable_scaffold_project wrap pixeltable-new. The MCP imports pixeltable_new.new if installed, otherwise shells out to uvx pixeltable-new --json. Patterns: serving / backend / batch. Templates include multimodal-rag, agent, video-intel, audio-intel, data-lab, content-pipeline, full-stack-showcase.
- Restart your client after any config change
- Python 3.10+ and
uvare required command not foundafteruv tool install: ensure~/.local/binis onPATH(uv tool update-shell) or invoke via full path; confirm withmcp-server-pixeltable-developer --version- Check that
PIXELTABLE_HOMEpoints to a valid directory - Circular env initialization detected: call the
pixeltable_inittool to clear the stale state, or re-create yourPIXELTABLE_HOME - Canvas error from
display_in_browser: install thecanvasextra and setPIXELTABLE_MCP_CANVAS=1(see above) - Use
log_bug(...)/generate_bug_report()for structured issue tracking - File issues at github.com/pixeltable/mcp-server-pixeltable-developer