Quill
Local MCP server that indexes compiled Java and Kotlin projects with their DI wiring and git history
Keeps a friction log for coding agents in the repo and turns each entry into a GitHub issue
By wevm TypeScript Local · stdio Developer toolsGit and code hosting
62 popularity score ★ 267 ↓ 13k/wk
Opens the app, which asks before it adds the server.
claude mcp add frog -- npx -y frog --mcp{
"mcpServers": {
"frog": {
"command": "npx",
"args": [
"-y",
"frog",
"--mcp"
]
}
}
}{
"mcpServers": {
"frog": {
"command": "npx",
"args": [
"-y",
"frog",
"--mcp"
]
}
}
}{
"servers": {
"frog": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"frog",
"--mcp"
]
}
}
}[mcp_servers.frog]
command = "npx"
args = ["-y", "frog", "--mcp"]gemini mcp add --scope user frog npx -- -y frog --mcpGITHUB_TOKEN |
Optional: GitHub token used to publish and sync issues; GH_TOKEN or a logged-in gh CLI also work. |
|---|---|
FROG_DATABASE_URL |
Optional: PostgreSQL URL; when set, entries are kept in Postgres instead of files. |
FROG_NAMESPACE |
Optional: Namespace within the Postgres store; defaults to default. |
FROG_SCHEMA |
Optional: Postgres schema to use for the store. |
Frog is a command-line tool from wevm that gives a coding agent a place to record the problems it runs into while working: a confusing config loader, a flaky test command, a missing doc. Each problem becomes a folder under `.agents/friction-log/` in the project, holding a markdown write-up and, optionally, files that reproduce it. The folder is committed with the code, so the next agent can read it before guessing.
Entries are then published as GitHub issues and removed again once those issues close, so the log only holds open problems. An entry can also be aimed at a dependency instead of your own repository, either an npm package or an `owner/repo`, but only when that project has opted in through config on its default branch; Frog then fills the entry from that project's own issue form.
The same program runs as an MCP server over stdio when started with `--mcp`, exposing its eight commands (init, list, log, migrate, publish, resolve, sync, targets) as tools. Entries are stored as files by default; setting `FROG_DATABASE_URL` to a Postgres URL switches to a shared database store, with `FROG_NAMESPACE` (default `default`) and `FROG_SCHEMA` as further settings, read in src/cli/Cli.ts. Automation on pull requests comes from a separate GitHub App or a GitHub Action workflow, not from the MCP server.
| Runtime | Node.js 22+ |
|---|
Node.js 22 or newer (the package's engines field). A git project to keep the log in. Publishing and syncing issues need a GitHub token with access to the target repository, taken from `GITHUB_TOKEN`, `GH_TOKEN` or a logged-in GitHub CLI (`gh`). The Postgres store needs a reachable PostgreSQL database and a one-off `frog migrate`.
Issues go to GitHub only. Of the database stores, only PostgreSQL is available; SQLite and Cloudflare D1 are listed as coming soon. Reporting upstream works only for projects that have opted in through their own repository config. The README warns against running the GitHub App mode and the Action-only mode in the same repository, as both can open duplicate issues. Without a token, GitHub reads are anonymous at a lower rate limit, per src/cli/internal/octokit.ts.
Teams that let coding agents work in their repositories and want the agents' complaints captured as tracked GitHub issues instead of lost in chat. It writes to the project tree and to GitHub issues, so it fits repos where the agent already has commit and issue access. It is no help for projects hosted outside GitHub, and it is not a general memory store: entries exist only until their issue is closed.
initlistlogmigratepublishresolvesynctargets