Skip to content

Go Mode and MCP ​

mddb is a Go Mode host. The Go Mode Android shell loads mddb's web app and calls its workspace tools through MCP. Voice uses the same tools.

mddb advertises itself ​

GET /.well-known/gomode.json is public. It names one tool group, workspace, at /api/v1/gomode/mcp, and the voice gateway when voice is on. Forward /.well-known/ through your reverse proxy.

The MCP endpoint requires the same bearer token as the web API. Requests from a browser must come from the server.base_url origin.

Add mddb to the Android shell ​

  1. Build and install the Go Mode Android app.
  2. In the app's Settings, add a service with your mddb base_url as the server URL.
  3. Sign in through mddb's page.

The page hands its validated bearer token to the native MCP client and clears it on logout. The phone must reach the URL; Tailscale works well.

Some providers refuse sign-in inside an app. Use a password, or select Sign in with another device and approve the code from a signed-in browser.

Tools follow workspace roles ​

Every workspace member can call the read tools. Editors and admins also get the edit tools; viewers never see them.

ToolAccessEffect
workspaces_listReadLists the workspaces you can access.
workspace_selectReadChooses a workspace for the current conversation.
nodes_listReadLists the children of a node, or the root nodes.
node_readReadReads a page or table node, including Markdown content and schema.
record_readReadReads one table record.
records_queryReadReads a bounded window of records, optionally through a saved view.
page_createEditCreates a Markdown page under a parent, or at the workspace root.
table_createEditCreates a table with a column schema.
node_updateEditReplaces a page's title and Markdown body.
node_appendEditAppends Markdown to the end of a page.

Workspace nodes are also MCP resources, and resource discovery includes nested pages and tables.

Each edit is a commit in the workspace's Git history. When a tool changes a page that is open in the web editor, the editor reports the external change instead of overwriting it.

Each conversation uses one workspace ​

Voice in the browser works in the workspace you have open. The Android shell's native connection has no fixed workspace:

  • With one accessible workspace, the tools use it.
  • With several, the workspace open in mddb's page, or the assistant's workspace_select call, chooses it for the conversation.

Contracts live in the source ​