Skip to content

MCP server ​

For agents that can't run shell commands — Claude Desktop, or any other client that speaks the Model Context Protocol — the CLI ships lindris-mcp, a server that exposes the command tree as MCP tools.

lindris-mcp shells out to the same lindris binary, so an agent runs the exact commands you would, with the same auth and the same output. A few commands are withheld from the tool list — see What the tool surface withholds. (Using Claude Code? Prefer the Claude Code or Codex plugin — no server needed.)

Claude Desktop ​

The quickest way to give Claude Desktop the Lindris tools is the prebuilt bundle. Download the .mcpb for your platform:

bash
curl -fL -o lindris-mcp.mcpb https://a.lindris.com/cli/mcpb/<os>/<arch>

Pick <os>/<arch> for your machine:

Your machineURL
Mac — Apple Silicon (M1/M2/M3/M4)https://a.lindris.com/cli/mcpb/darwin/arm64
Mac — Intelhttps://a.lindris.com/cli/mcpb/darwin/amd64
Linux — x86_64https://a.lindris.com/cli/mcpb/linux/amd64
Linux — ARM (Raspberry Pi, Graviton, ...)https://a.lindris.com/cli/mcpb/linux/arm64

Not sure? uname -sm prints your OS and architecture (Darwin arm64 → darwin/arm64; x86_64 means amd64).

Open the downloaded file in Claude Desktop under Settings → Extensions. Desktop prompts for your LINDRIS_API_KEY and injects it into the server — the bundle carries both the lindris and lindris-mcp binaries, so there is nothing else to install. Generate the key in the Lindris dashboard under Account → API.

How the MCP server authenticates ​

lindris-mcp resolves credentials exactly like the CLI — OS keyring first, then the LINDRIS_API_KEY environment variable (see Authentication). A bundled server has no interactive auth login and no keyring entry, so in practice it authenticates from the LINDRIS_API_KEY that Claude Desktop injects.

Quote the key wherever you set it — a Lindris API key can contain a |, which an unquoted value lets the shell read as a pipe and corrupt the key.

What the tool surface withholds ​

lindris people list is not an MCP tool. It works in a terminal, but the server publishes no tool for it: a paginated contact read puts whole pages of email addresses and custom fields into a model's context, and that is not something an agent should inherit because your API key can reach it.

There is no way to re-enable the tool today — no config field, environment variable, build tag or flag turns it back on; the walk skips it on the annotation alone. The supported path for a bulk contact read is running lindris people list in a terminal yourself. Per-account granting is tracked as phase 1 of awesomemotive/lindris-cli#115.

Targeted lookup stays available. lindris people get <id-or-email> is a tool, and its description says plainly that the answer is personal data.

A separate rule skips the framework commands. auth, doctor, agent-context, api, profile, version, which, about, completion, feedback and help publish no tool either, because they configure or describe the CLI rather than answer about your data — not because they are withheld. So the published surface is neither the whole command tree nor the tree minus mcp:hidden.

This is a client-side boundary, not a server-side one. Anything holding your API key can still call GET /api/people directly, so treat the key itself as the thing that grants access to your contacts.

Where to next ​

  • Claude Code / Codex — the lighter path when a terminal is available.
  • Authentication — the key-resolution model the MCP server shares with the CLI.
  • Browse the full command reference — every tool the MCP server exposes maps to one of these commands (the reverse does not hold; see above).