Peil-mcp

by luminc

Not rated
GitHub

About

Connect Peil to Claude (or any MCP client): log hours, draft invoices from unbilled hours, and get financial insights in your freelance practice. All in natural language.

Details

Author
luminc
Categories
Finance, Productivity, Project Management, Other

Setup

Install Peil-mcp in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/luminc/peil-mcp

Follow the installation instructions in the repository README, then restart your MCP client.

ConnectPeilto Claude (or any MCP client): log hours, draft invoices from unbilled hours, and check where you stand — from a prompt.

- Website:https://peil.app
- Docs:
https://peil.app/en/docs/mcp
- Source:
https://github.com/Luminc/peil-mcp

The server is a pure client of Peil's public API. It authenticates with ascoped API keyyou create in Peil underSettings → Developer(Pro).

draft_invoiceonly ever creates adraft— nothing is sent to your clients. Sending is a separate tool (send_invoice) that also requires the separateinvoices:sendpermission on your key. A key without that permission can never email anything on your behalf.

Client-facing email(invoices:send— irreversible, always confirm first)

In Peil:Settings → Developer→ create a key with the permissions you want. Start withread + Log hours + Draft invoices; leaveSend invoicesoff unless you truly want an assistant emailing clients. You'll paste this key into your assistant's config asPEIL_API_KEYbelow.

The easy way — no clone, no install(oncepeil-mcpis published to PyPI):

uvx peil-mcp # runs the latest release on demand # or, with pipx: pipx run peil-mcp

→ Your launch command isuvx peil-mcp(orpipx run peil-mcp). Skip tostep 3. Everything below is only needed if you're runningfrom source(e.g. before the first release, or to hack on it).

You needPython 3.11 or newerand a local copy of thismcp-server/folder. Check your Python withpython3 --version.

Which method?Runwhich uv pipxfirst. If you already haveuv, use A — it's the least work. If not,pipx(B) gives you a clean global command. If you have neither and don't want to install tooling, the plain-venvpath (C) works with nothing but the Python that's already on your machine.

Everywhere below, replace/ABS/PATH/TO/mcp-serverwith the real absolute path to this folder (runpwdinside it to get it).

uvbuilds and runs on demand — nothing to install first:

uv run --directory /ABS/PATH/TO/mcp-server peil-mcp

→ Your launch command is:uv run --directory /ABS/PATH/TO/mcp-server peil-mcp

Don't haveuv?curl -LsSf https://astral.sh/uv/install.sh | sh(macOS/Linux) orpip install uv.

pipxinstalls the server into its own isolated environment and puts apeil-mcpcommand on your PATH:

→ Your launch command is simply:peil-mcp

Don't havepipx?python3 -m pip install --user pipx && python3 -m pipx ensurepath.

C. Plainvenv+pip(works with only stock Python)

No extra tooling — just thepython3you already have:

cd /ABS/PATH/TO/mcp-server python3 -m venv .venv .venv/bin/pip install .

→ Your launch command is:/ABS/PATH/TO/mcp-server/.venv/bin/peil-mcp(equivalently/ABS/PATH/TO/mcp-server/.venv/bin/python -m peil_mcp).

Use aplainpip install .(not-e/editable) for running. An editable install relies on a.pthpath hook that can silently fail to load on some setups, givingModuleNotFoundError: No module named 'peil_mcp'. Editable is only needed if you're modifying the server itself — seeLocal development.

The only thing that changes between assistants is where the config lives.Every MCP client needs the same three things:

- command— your launch command from step 2
- envPEIL_API_KEYset to the key from step 1
- (optional)PEIL_API_URL— only if you're pointing at a non-production Peil (see
Local development); defaults tohttps://api.peil.app/api/v1.

The canonical config block (used by Claude Desktop, Cursor, Windsurf, Cline, and most others) looks like this —command+argsare just your launch command split on spaces:

{ "mcpServers": { "peil": { "command": "peil-mcp", // or "uv", or the venv's python path "args": [], // e.g. ["run","--directory","/ABS/PATH/TO/mcp-server","peil-mcp"] for uv "env": { "PEIL_API_KEY": "your-key" } } } }

Editclaude_desktop_config.json(macOS:~/Library/Application Support/Claude/, Windows:%APPDATA%\Claude\), add the block above, and restart Claude Desktop.

# pipx / venv (single-command launcher): claude mcp add peil -e PEIL_API_KEY=your-key -- peil-mcp # uv: claude mcp add peil -e PEIL_API_KEY=your-key -- uv run --directory /ABS/PATH/TO/mcp-server peil-mcp

Anything after--is the launch command. Verify withclaude mcp get peil(look forStatus: ✔ Connected) and use/mcpin a session to reconnect.

Add the canonical block to.cursor/mcp.json(this project) or~/.cursor/mcp.json(all projects), then enablepeilinSettings → MCP.

Add the canonical block to~/.codeium/windsurf/mcp_config.json, then hitRefreshin the Cascade MCP panel.

Open the extension'sMCP Servers → Configurepanel and add the canonical block tocline_mcp_settings.json.

VS Code uses a slightly different shape —servers(notmcpServers) and an explicittype— in.vscode/mcp.json:

{ "servers": { "peil": { "type": "stdio", "command": "peil-mcp", "args": [], "env": { "PEIL_API_KEY": "your-key" } } } }

Give it the samecommand + args +PEIL_API_KEYenv. The server speaks MCP over stdio; if a client can launch a stdio command, it can run Peil.

- "Where do I stand?"orientation_snapshot
- "Log 6 hours to De Correspondent today for editing work."log_hours
- "Draft an invoice from my unbilled hours for De Correspondent."draft_invoice

WithSend invoicesleft off your key, an assistant can prepare everything but physically cannot email a client — you send from Peil yourself.

Point the server at a local backend withPEIL_API_URL:

PEIL_API_URL=http://localhost:8000/api/v1 PEIL_API_KEY=your-local-key peil-mcp

If you're modifying the server, an editable install picks up your changes without reinstalling:

.venv/bin/pip install -e ".[dev]"

Tests (mocked HTTP, no backend needed —pythonpath = ["src"]inpyproject.tomlmakes them independent of the install mechanism):

Multi-device file sync, dev-doc CRUD, task management, and session handoffs for AI agents - MCP + OpenAPI dual surface.

Shared workspace your AI agents write to — 184+ MCP tools for CMMN case management.

An MCP server for integrating with Clio practice management software, tailored for Australian legal professionals.

FoundersOS - CRM, tasks, finances, feeds, and memory for founders, as an MCP server.

Freelance business manager — clients, proposals, invoices, time tracking, scope, and follow-ups. 37 MCP tools.

Create professional PDF invoices using natural language.

A server that enables access to Joplin notes and to-dos through the Model Context Protocol (MCP).

Manage your job search directly. List jobs, create applications, add events, run company research, generate templates, and more.

Connect your AI assistant to your personal knowledge base. Search, save links, create notes and to-dos. AI processes everything automatically.

Interact with Notion's API to read, create, and modify content using natural language.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.