Binder
The database for tools you build with AI
Local-first, accessible from your editor, scripts, agents, and browser.
• • • • •
Power your agent
การติดตั้งจากผู้เผยแพร่ ไม่ใช่เอนด์พอยต์ของ PlugMCP
URL แบบรีโมตหรือคำสั่งบนเครื่องของคุณ? การติดตั้งสองแบบต่างกันอย่างไร
รันบน PlugMCP
A new server you create. It is not this listing's official endpoint. Use the publisher install when you want their URL and their credentials.
เปิดBinder is a perfect storage for all sorts of tools and automation built with agents. It especially excels when you need programmatic access and agent or human in the loop. Things like:
binder http gives you an API and a record browser. Drop in server.ts for your own routes.1. Install Binder
npm install -g @binder.do/cli
bun install -g @binder.do/cli
2. Set up a workspace
binder init
The setup wizard will prompt you to pick a blueprint: a starter schema for common use cases like project management or personal notes.
3. Editor extension
Adds autocomplete for field names and valid values, inline validation, and syncs file edits back to the database on save.
Install the Binder plugin. Activates automatically in any Binder workspace.
require('lspconfig').configs.binder = {
default_config = {
cmd = { 'binder', 'lsp' },
filetypes = { 'markdown', 'yaml' },
root_dir = require('lspconfig.util').root_pattern('.binder'),
},
}
require('lspconfig').binder.setup({})
Binder stores your data as a graph of entities: each one a flexible collection of field-value pairs classified by a type like Task, Decision, or Contact. Fields are defined once and reused across types. References link entities directly, forming the graph. Types and fields are defined in .binder/types.yaml:
items:
- key: Task
fields:
- title: { required: true }
- status: { only: [pending, active, complete] }
- priority
- partOf: { only: [Milestone] }
- requires: { only: [Task] }
Editors, scripts, and agents all write to the same data. When something goes wrong, you need to know what changed and undo it. Binder records every change as an immutable transaction, attributed to its source. Full history, undo and redo, replay to any past state.
Markdown files are a view over this graph. Navigation rules define where each entity lives on disk. Change a field value and Binder moves the file automatically:
items:
- where: { type: Task, status: { op: in, value: [pending, active] } }
path: tasks/{priority} {key}
- where: { type: Task, status: complete }
path: archive/tasks/{key}
Same data, different surfaces. Use whichever fits the task.
Open any Markdown file in your coding editor to read, adjust, and review. Binder's LSP provides validation, autocomplete, and navigation across all entity files.
Install the VS Code extension to get started, or see Getting Started for WebStorm/IntelliJ and Neovim setup.
For autonomous work: querying context, capturing decisions, writing new entities. Agents can use the CLI directly or connect via MCP for a typed read/write API.
Add to .mcp.json to enable MCP:
{
"mcpServers": {
"binder": {
"type": "stdio",
"command": "binder",
"args": ["mcp"]
}
}
}
For pipelines, batch operations, reports, or embedding Binder in your own apps and libraries. Query, create, and update records without parsing Markdown. Changes write back to files automatically.
$ binder search type=Task status=active -f "title,status,priority,partOf(title,status)"
items:
- title: Add dark mode support
status: active
priority: p2
partOf:
title: MVP Release
status: active
Pipe to any tool:
$ binder search type=Task status=active -q | jq '.items[] | .key + ": " + .title'
"setup-auth: Set up authentication"
"fix-layout-bug: Fix layout orientation bug"
Create and update without opening a file:
$ binder create Task dark-mode title="Add dark mode support" status=active priority=p2 partOf=mvp-release
$ binder update dark-mode status=complete
Embed Binder directly. Use it in a one-off script, a long-running service, a library, or any Node/Bun app:
import { open, isErr } from "@binder/repo/local";
const repo = await open("/path/to/workspace"); // omit to run from cwd
if (isErr(repo)) throw repo.error;
const { data: kg } = repo;
const r = await kg.search({ filters: { type: "Task", status: "complete" } });
if (!isErr(r)) for (const t of r.data.items) console.log("-", t.title);
await kg.close();
Workspace scripts. As a convenience, files in .binder/scripts/ (.ts, .js, .mjs, .sh) become first-class subcommands:
$ binder weekly-report # runs .binder/scripts/weekly-report.ts
$ binder run weekly-report # equivalent, never shadowed by built-ins
For browser UIs, webhooks, and integrations. binder http starts a local server with a record browser at http://127.0.0.1:4000, plus a JSON API:
GET /api/schema - types and fieldsGET /api/records?type=Task&status=active - query recordsGET /api/records/:key - fetch onePOST /api/transactions - apply a transactionBring your own UI with --static <dir>, or drop one at .binder/web/ for zero config. The built-in record browser is the fallback.
Drop a server.ts next to your static files to add custom routes, built on Hono. Source files aren't served.
import { Hono } from "hono";
import type { ServerModule } from "@binder.do/cli";
const mod: ServerModule = ({ kg }) => {
const app = new Hono();
app.get("/api/stats", async (c) => {
const r = await kg.search({ filters: { type: "Task" } });
return c.json({ tasks: "data" in r ? r.data.length : 0 });
});
return app;
};
export default mod;
→ See HTTP server docs for the full reference.
Run a shell command on every committed transaction. The transaction is piped to stdin as JSON. Declare them in .binder/config.yaml:
hooks:
- name: notify-slack
command: ./scripts/notify-slack.sh
- name: audit
command: jq -c . >> .binder/audit.log
Binder is early-stage and actively shaped by feedback. Found a bug or have an idea? Open an issue. All input welcome.
Headless knowledge base with bidirectional Markdown sync
เครื่องมือ
ยังไม่มีรายการเครื่องมือ เซิร์ฟเวอร์แบบรีโมตจะได้รายการหลังการตรวจสอบสถานะครั้งแรก
FAQ
คัดลอกคอนฟิก stdio สำหรับ Cursor, Claude Desktop, Claude Code หรือ VS Code ได้ในหน้านี้ คอนฟิกนี้ใช้การติดตั้งของผู้เผยแพร่ ไม่ใช่พร็อกซีของ PlugMCP
ระเบียนนี้ไม่ได้ระบุตัวแปรสภาพแวดล้อมที่จำเป็น
Binder ทำงานแบบโลคัลผ่าน stdio
ตรวจสอบล่าสุดเมื่อ 2026-10-28 Headless knowledge base with bidirectional Markdown sync