mcpField
E
Elliot

Elliot

Remote
github.com/EliBarak12Developer Tools11Updated 12w ago
Repository

About Elliot

Elliot is an open-source platform for product engineers who want APIs, SQL databases, and files to be usable by AI agents as structured tools. It emphasizes low token use, recoverable errors, and session-level observability, with a Studio dashboard and connector-building workflow.

Key features

  1. 01Create typed tools from APIs and data sources
  2. 02Parameterized SQL and read-only database transactions
  3. 03Track calls, tokens, latency, and errors
  4. 04Inspect sessions and metrics in Studio
  5. 05Build, lint, evaluate, and deploy connectors

Use cases

  1. 01Exposing a REST API to coding agents
  2. 02Creating agent tools for PostgreSQL or MySQL data
  3. 03Reviewing agent calls and errors in an audit log
  4. 04Building and testing a data connector

MCP support

Elliot provides MCP endpoints that expose connector tools and resources to clients. It can connect coding agents to Elliot, and its hosted endpoint supports MCP over HTTP; connectors can also be served over stdio.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://api.elliot-cloud.com/b/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Tools

Details

From the project README
Elliot

Elliot

Turn any API or database into MCP tools for Claude Code, Cursor, OpenClaw, and Codex — with built-in observability.

CI Docs License: MIT MCP compatible Python 3.13

Documentation · Quickstart · Concepts · The five principles


Elliot is an open-source platform for turning the products you already have — REST APIs, SQL databases, files — into tools that AI agents can use well. Not just connected, but fast, safe, and observable: minimal token usage, structured errors the agent can recover from, and a full trace of every agent session.

The target user is a product engineer who has a working API or database today and wants AI agents to interact with it natively — with minimum tokens, clean error recovery, and full observability.

AX is to agents what UX is to users and DX is to developers. Elliot's job is to make AX measurable.

Table of contents

Why Elliot

Connecting an API to an agent is easy. Making it work well is not. Agents fail when:

  • Tool descriptions are vague — the agent picks the wrong tool.
  • Results are too large — the context window fills up before the answer does.
  • Errors are unstructured — the agent cannot recover or escalate.
  • Nothing is observable — you do not find out it is broken until a user complains.

Elliot makes each of these visible and fixable. Every tool ships with a structured schema, a token estimate, an actionable error shape, and a session trace — every call, every agent, attributed to a client and model.

Features

  • Agent-ready by design — every tool is linted against five concrete principles before it ships: verb-first descriptions, typed parameters, context-sized results.
  • Safe by default — parameterised SQL, read-only database transactions, env-var secrets, no keys in connector files. Connector files are safe to commit.
  • Every call observable — tokens, latency, arguments, and errors for every agent call, streamed to an audit log and visible in Studio.
  • One command to run — start the whole stack with Docker. No Python, Node, or toolchain to install.
  • Works with every agent — Claude Code, Cursor, OpenClaw, and Codex. Elliot auto-registers with each.
  • Agents build connectors — discover, build, lint, eval, deploy. The platform itself is agentic: agents can build connectors through Elliot.

Quickstart

Just want to run Elliot? The only prerequisite is Docker — no Python, Node, uv, or pnpm:

curl -LsSf https://raw.githubusercontent.com/EliBarak12/Elliot/main/scripts/install.sh | sh

This pulls the pre-built images, generates a local .env, starts all three services, and opens Studio at http://localhost:8080. Stop it any time with docker compose -f docker-compose.run.yml down.

Want to develop Elliot? Build from source instead:

# Prerequisites: uv (Python 3.13) and pnpm (Node 22)
git clone https://github.com/EliBarak12/Elliot.git && cd Elliot
make setup
make dev          # boots plugin (:3000) + studio (:5173)
                  # and writes the MCP config for every detected coding agent
                  # the runtime (:3001) starts on demand when you deploy a connector

Then open Studio at http://localhost:5173, scaffold a connector, lint it, and your agent can use it in the same session.

See it in action

A walkthrough of Elliot Studio — the visual dashboard that observes, runs, and edits everything an agent builds.

Elliot Studio — a walkthrough of every page

The loop above cycles through every Studio page. For the full-quality screencast, watch the video walkthrough.

Studio in detail:

Studio Tools pageStudio Metrics page
Tools — verb-first, typed contracts your agents call. Design, validate, and test each one.Metrics — calls, error rate, latency, and token efficiency across every tool.
Studio Agent Console pageStudio Sources page
Agent Console — a live trace of every agent session: prompts, tool calls, tokens, errors.Sources — REST APIs, PostgreSQL, MySQL, and files, discovered and managed in one place.

How it works

1. Connect your data sources
   REST APIs, PostgreSQL, MySQL, CSV / JSON files — all in one connector

2. Build tools (no SQL required)
   Define name, description, parameters, filters, and return fields
   Elliot generates safe, parameterised queries
   Or let an agent build the connector for you with the agentic builder

3. Lint for agent-readiness
   elliot lint my-domain.connector.json

4. Write and run eval cases
   elliot eval my-domain.eval.yaml — pass/fail plus a token estimate

5. Deploy and connect agents
   plugin (:3000) serves tools to any MCP client
   runtime (:3001) executes them against live data
   studio observes, runs, and edits everything

6. (Optional) Ship the connector as a plugin
   elliot export-plugin my-domain.connector.json
   produces an installable Codex + Claude Code plugin folder

On first connect, an agent automatically calls prompts/get name=getting_started — a single prompt that teaches it the five principles, the canonical workflow, and the reference resources available.

Connect your coding agent

make dev runs elliot connect, which detects every coding agent on your machine and writes its MCP config automatically. To wire a client by hand:

Claude CodeCursor
/plugin marketplace add EliBarak12/Elliot
/plugin install elliot@elliot

Install the bundled plugin (.cursor-plugin/) from the Cursor marketplace, or add the MCP server by hand:

{ "mcpServers": { "elliot": {
  "url": "https://api.elliot-cloud.com/b/mcp"
}}}
CodexOpenClaw
codex plugin marketplace add EliBarak12/Elliot

Then open the plugin directory in Codex and install elliot. Codex reads .agents/plugins/marketplace.json and the manifest at .codex-plugin/plugin.json.

openclaw plugins install elliot@elliot

OpenClaw also reads the .claude-plugin/, .codex-plugin/, and .cursor-plugin/ bundles directly. elliot connect writes ~/.openclaw/openclaw.json with the streamable-http transport.

Every install path wires the MCP URL only — Elliot's server still needs to be running, locally or at a hosted endpoint. Skills ship in the repo-root skills/ directory; Claude Code and Codex auto-discover them, and every other MCP client receives the same guidance as MCP prompts.

Add Elliot to Claude.ai and Claude Desktop

The table above covers the Claude Code plugin. To use Elliot from Claude.ai (web) or the Claude Desktop / mobile apps, add it as a remote Connector — Elliot's hosted endpoint speaks the MCP HTTP transport and runs the full OAuth 2.1 handshake, so there are no keys to paste:

  1. In Claude, open Settings → Connectors.
  2. Click Add custom connector.
  3. Paste the Elliot MCP URL and confirm:
    https://api.elliot-cloud.com/b/mcp
    
  4. Claude registers itself (RFC 7591 dynamic client registration), then sends you to the Elliot consent screen. Sign in, click Allow, and Claude returns connected.

Elliot's tools now appear in the connector picker for every chat. The access grant is listed under Connected agents in the Elliot dashboard and can be revoked there at any time. Because the connector authenticates each user individually (scope: per_user), every teammate authorises with their own identity — no shared secret.

Self-hosting Elliot? Point the connector at your own deployment's /b/mcp URL instead. The OAuth discovery documents are served from the same host, so the only requirement is that it's reachable over HTTPS.

To get Elliot listed in Anthropic's built-in Connectors directory (so users can add it without pasting a URL), see docs/claude-connector-directory.md.

Ship a connector as its own plugin

Once you've built a connector, package it as a standalone plugin that installs in Codex and Claude Code:

elliot export-plugin my-domain.connector.json

This scaffolds a my-domain-plugin/ folder with the Codex and Claude Code manifests, marketplaces, an .mcp.json that serves the connector over stdio (elliot-mcp --connector), and a skills/ directory. The MCP server is named after the connector slug, so its tools are mcp__<slug>__<tool-id>; the generated skills — a usage guide plus one per connector workflow — already reference that prefix. Install it with /plugin marketplace add <folder> (Claude Code) or codex plugin marketplace add <folder> (Codex).

Project layout

Elliot is a monorepo of four packages:

PackageNameStackRole
packages/coreelliot-corePython 3.13Types, query builder, linter, eval harness, CLI
packages/mcp-pluginelliot-mcp-pluginPython 3.13 · FastMCPMCP endpoint and agentic builder — port 3000
packages/connector-runtimeelliot-connector-runtimePython 3.13 · FastAPITool execution and session/observation store — port 3001
packages/studioelliot-studioReact 19 · ViteVisual dashboard — port 5173 (dev) / 8080 (Docker)

Connector files live in connectors/, starter templates ship with the plugin (browse them via the elliot://templates/ MCP resources), and every environment variable is documented in .env.example.

Documentation

Full documentation lives at elibarak12.github.io/Elliot.

Roadmap

Elliot's goal is to be usable by everyone, not just developers. Progress is tracked in dev/docs/USER_ONBOARDING.md.

StatusMilestone
ShippedRun from source — make dev for contributors
ShippedOne-command Docker — run with only Docker, no toolchain
PlannedGuided first-run — an onboarding wizard inside Studio
PlannedDesktop app — a double-click app, no Docker, no terminal
PlannedHosted cloud — a connector registry and a managed runtime, no install at all

Contributing

Contributions are welcome — code, connectors, docs, and bug reports alike.

uv run ruff check .
uv run ruff format --check .
uv run mypy packages/core/src packages/mcp-plugin/src packages/connector-runtime/src
uv run pytest --tb=short
pnpm --filter @elliot/studio run typecheck
pnpm --filter @elliot/studio test --run

Community and support

Found a bug, have a feature request, or want to propose a connector? Open an issue on the issue tracker — we read every one.

License

Elliot is released under the MIT License.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.