Server · #45 trending MCP repo

Coral

withcoral/coral

The execution layer for AI agents. Act across more of your systems with precise controls: safer, faster and more efficient than MCP tools and gateways.

Stars
4.9k
This week
—
Forks
224
Open issues
184
Skills inside
29

Get started

Add it to your agent

claude mcp add --scope user --transport http coral <your-mcp-url>   # Claude Code

From the project README.

Inside this repo

29 skills

add-recipeResearch an upstream service and write a Provider Recipe for it in apps/reef/recipes..agents/skills/add-recipeask-mattAsk which skill or flow fits your situation. A router over the skills in this repo..agents/skills/ask-mattcode-reviewReview the changes since a fixed point (commit, branch, tag, or merge-base) along two axes: Standards (does the code follow this repo's documented coding standards?) and Spec (does the code match what the originating issue/spec asked for?). Runs both reviews in parallel sub-agents and reports them s.agents/skills/code-reviewcodebase-designShared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary..agents/skills/codebase-designdiagnosing-bugsDiagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow..agents/skills/diagnosing-bugsdomain-modelingBuild and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR..agents/skills/domain-modelinggrill-meA relentless interview to sharpen a plan or design..agents/skills/grill-megrill-with-docsA relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go..agents/skills/grill-with-docsgrillingGrill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases..agents/skills/grillinghandoffCompact the current conversation into a handoff document for another agent to pick up..agents/skills/handoffimplement-specImplement the result of /to-spec and /to-tickets in code..agents/skills/implement-specimplementImplement a piece of work based on a spec or set of tickets..agents/skills/implementimprove-codebase-architectureScan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick..agents/skills/improve-codebase-architectureprUse when writing a PR body..agents/skills/prprototypeBuild a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like..agents/skills/prototyperesearchInvestigate a question against high-trust primary sources and capture the findings as a Markdown file in the repo. Use when the user wants a topic researched, docs or API facts gathered, or reading legwork delegated to a background agent..agents/skills/researchretroConduct a retrospective on a coding session..agents/skills/retroshow-meHelp the user understand the current topic visually with concise diagrams, code-shape sketches, and focused HTML artifacts..agents/skills/show-metddTest-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests..agents/skills/tddteachTeach the user a new skill or concept, within this workspace..agents/skills/teachto-benchmarkCreate a benchmark skill from an issue. The benchmark skill runs coding agents against main and an optional branch and reports whether the issue's behaviour improved..agents/skills/to-benchmarkto-questionnaireTurn a decision you can't fully answer into a questionnaire for someone else to fill in..agents/skills/to-questionnaireto-specTurn the current conversation into a spec and publish it to the project issue tracker: no interview, just synthesis of what you've already discussed..agents/skills/to-specto-ticketsBreak a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker (edges as text in one file per ticket locally, or native blocking links on a real tracker)..agents/skills/to-ticketstriageMove issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs..agents/skills/triagewait-whatStop. That last message did not land: re-pitch it..agents/skills/wait-whatwayfinderPlan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear..agents/skills/wayfinderwizardGenerate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can pe.agents/skills/wizardwriting-for-agentsWriting documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md..agents/skills/writing-for-agents

Documentation

README

View on GitHub ↗

Coral, with engraved orange corals

Coral

One MCP server for every service your agents use, with your credentials and your rules. Agents write short TypeScript programs. Coral runs them in a sandbox, adds the credentials, and checks every call against your policy.

CI License Docs Discord

Why Coral

Connecting an agent to many services usually means many MCP servers, a token pasted into each one, and every tool definition loaded into every prompt. Coral replaces that with one server:

  • Smaller context, fewer round trips. The agent searches for the tools it needs instead of loading them all up front. It then sends one program that can call several tools and return only the fields the answer needs.
  • Agents build on what already worked. When a program works, the agent saves it as a function. The next time, it calls that function in one step instead of finding the tools and writing the program again. Saved functions are typed and appear in search alongside provider tools.
  • Agents never hold credentials. Coral stores your tokens and adds them to each call. Programs run in an isolated sandbox with no secrets, no network access, and no imports.
  • You decide what runs. Set each tool's policy to Allow, Ask, or Block. A call to a tool set to Ask waits until a person approves it.
  • Every run is recorded. Review each program and the calls it made in the Coral UI.
  • You host it. Run Coral on your laptop or on your own server. Your data, credentials, and usage history stay with you.

Coral includes setup recipes for GitHub, Linear, Jira, Notion, Gmail, Stripe, Datadog, Sentry, HubSpot, and more. You can add any service that has an OpenAPI document or an MCP server.

Get started

  1. Install Coral. Download the desktop app for macOS, Linux, or Windows from the releases page, or run a shared server for your team.

  2. Add a provider. A provider is one service your agents can use. Pick one from the catalog, or bring your own OpenAPI document or MCP server. See Add a provider.

  3. Connect your agent. Each workspace in Coral has its own MCP URL. Copy it from the Coral UI and add it to your MCP client:

    claude mcp add --scope user --transport http coral <your-mcp-url>   # Claude Code
    codex mcp add coral --url <your-mcp-url>                            # Codex
    

    For Cursor, VS Code, OpenCode, and other clients, see Connect an MCP client.

Now ask your agent something that needs that provider, such as "What are my open pull requests?"

Setup guides and the configuration reference are at withcoral.com/docs.

How Coral works

graph LR
    Agent["Your agent"] -->|"search, exec"| MCP["Coral MCP server"]
    You["You"] -->|"providers, policy, approvals"| UI["Coral UI"]

    subgraph Coral["Coral (your machine or server)"]
        MCP --> Run["Sandboxed program run"]
        UI --> Gate["Credentials and policy"]
        Run --> Gate
    end

    Gate --> GH["GitHub"]
    Gate --> SL["Slack"]
    Gate --> Own["Your OpenAPI or MCP service"]

The agent searches for the tools it can use and reads their TypeScript signatures. Then it sends Coral a short program. This one finds open pull requests that have no reviewer and posts them to Slack:

const { data: pulls } = await coral.providers.github.pulls.list({
    owner: "withcoral",
    repo: "coral",
    state: "open",
});

const unreviewed = pulls.filter((pull) => pull.requested_reviewers.length === 0);

await coral.providers.slack.chat.postMessage({
    channel: "#engineering",
    text: unreviewed.map((pull) => `#${pull.number} ${pull.title}`).join("\n"),
});

return unreviewed.map((pull) => pull.number);

Coral adds the credentials and checks each call against your policy. If posting to Slack requires approval, the run pauses there until you approve it. Only the pull request numbers go back to the agent, not the full GitHub response. Once this works, the agent can save it as a function, and later programs call it as coral.functions.<name>().

To learn about providers, accounts, policy, and workspaces, read Concepts.

Upgrade from Coral 0.x

Coral 1.0 replaces the SQL interface with TypeScript programs. It is a rewrite and starts from fresh state: it does not convert what 0.x stored, and it tells you at startup if it finds 0.x state. See Upgrade from Coral 0.x.

Development

To run Coral from a checkout, follow the development guide.

Community

Ask questions, share ideas, and show what you built in our Discord or on GitHub issues.

Security

Do not report security issues in public issues or pull requests. See SECURITY.md.

License

Coral is licensed under the Apache License 2.0. See LICENSE.

Releases

Recent versions

All releases ↗
  1. v1.5.0
  2. v1.4.0
  3. v1.3.0
  4. v1.2.0
  5. v1.1.0
  6. v1.0.0