Tallystick

Tallystick MCP

Set it up in your agent

Every client below runs the same command, uvx tallystick-mcp. There is no environment to prepare and nothing to install first. Replace __KEY__ with the key from your purchase.

The three reading tools work with no key at all, so you can wire it up and try it before buying anything.

Where the key goes

Every client below supports an env block, which is why that is the way the key travels. Tallystick reads TALLYSTICK_LICENSE_KEY first and falls back to ~/.tallystick/license.json for clients where editing env is awkward. It is never passed as a command-line argument: arguments show up in process listings.

VS Code is the one client with real secret storage. Its inputs block asks once and keeps the key in the OS keychain, so the file you commit holds a reference and not the secret.

Claude Desktop

Windows: %APPDATA%\Claude\claude_desktop_config.jsonmacOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "tallystick": {
      "command": "uvx",
      "args": [
        "tallystick-mcp"
      ],
      "env": {
        "TALLYSTICK_LICENSE_KEY": "__KEY__"
      }
    }
  }
}

Settings, Developer, Edit Config. Restart Claude after saving.

Cursor

~/.cursor/mcp.json (or .cursor/mcp.json inside one project)

{
  "mcpServers": {
    "tallystick": {
      "command": "uvx",
      "args": [
        "tallystick-mcp"
      ],
      "env": {
        "TALLYSTICK_LICENSE_KEY": "__KEY__"
      }
    }
  }
}

The one-click button adds the server. Paste the key after, into the env block it creates.

VS Code

.vscode/mcp.json (per project)

{
  "inputs": [
    {
      "type": "promptString",
      "id": "tallystick-key",
      "description": "Tallystick licence key",
      "password": true
    }
  ],
  "servers": {
    "tallystick": {
      "command": "uvx",
      "args": [
        "tallystick-mcp"
      ],
      "env": {
        "TALLYSTICK_LICENSE_KEY": "${input:tallystick-key}"
      }
    }
  }
}

The root key is servers, not mcpServers. VS Code asks for the key once and keeps it in the OS keychain, so nothing secret goes into the file.

Windsurf

~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "tallystick": {
      "command": "uvx",
      "args": [
        "tallystick-mcp"
      ],
      "env": {
        "TALLYSTICK_LICENSE_KEY": "__KEY__"
      }
    }
  }
}

Cascade, MCP servers, then Refresh after saving.

Cline

cline_mcp_settings.json (MCP Servers, Configure, in the panel)

{
  "mcpServers": {
    "tallystick": {
      "command": "uvx",
      "args": [
        "tallystick-mcp"
      ],
      "env": {
        "TALLYSTICK_LICENSE_KEY": "__KEY__"
      }
    }
  }
}

Edit through the Cline panel rather than the file when you can.

Zed

~/.config/zed/settings.json

{
  "context_servers": {
    "tallystick": {
      "source": "custom",
      "command": "uvx",
      "args": [
        "tallystick-mcp"
      ],
      "env": {
        "TALLYSTICK_LICENSE_KEY": "__KEY__"
      }
    }
  }
}

The root key is context_servers, and source:"custom" is required for anything you add by hand.

Gemini CLI

~/.gemini/settings.json

{
  "mcpServers": {
    "tallystick": {
      "command": "uvx",
      "args": [
        "tallystick-mcp"
      ],
      "env": {
        "TALLYSTICK_LICENSE_KEY": "__KEY__"
      }
    }
  }
}

Env vars must be stated in the env block; Gemini CLI does not inherit your shell.

OpenAI Agents SDK

In your own Python code, not a config file.

from agents.mcp import MCPServerStdio

tallystick = MCPServerStdio(
    params={
        "command": "uvx",
        "args": ["tallystick-mcp"],
        "env": {"TALLYSTICK_LICENSE_KEY": "__KEY__"},
    }
)

Any framework with an MCP stdio adapter connects the same way.

Anything else that speaks MCP

Any client or framework that can launch an MCP server over stdio works. Give it the command uvx tallystick-mcp and this one environment variable:

TALLYSTICK_LICENSE_KEY=__KEY__

Checking it worked

Ask your agent to name the format of any invoice file. It should call detect_invoice_format and answer with the flavour, for example XRechnung 3.0 CII or ZUGFeRD embedded in PDF. That tool is free and needs no key, so a correct answer proves the wiring before the licence is ever read.

Nothing on this page uploads a file. Parsing happens in the process your client started, on your machine. What the server does and what it costs.