Peil

app.peil由 peil.app 發布v0.1.5更新於 Oct 31, 2026

Log hours, draft invoices and check where you stand — finance for Dutch freelancers.

概覽

AI 產生的概覽

Peil 的 MCP 伺服器讓助理為荷蘭自由工作者記錄工時、草擬發票、登錄支出並查看財務狀況。

可以做什麼
  • 讀取客戶、未開票工時、發票、支出,以及應收/逾期/草稿/年初至今概況
  • 新增、修改與刪除工時紀錄
  • 建立、更新與刪除客戶
  • 依收據新增支出,包含荷蘭 btw 與類別
  • 從未開票工時草擬發票,變更狀態、編輯、封存或刪除,並設定催款信件文案
  • 在金鑰允許時寄送發票信件、安排或取消寄送、寄送付款提醒
適用情境
適合已在使用 Peil 的荷蘭自由工作者,希望用一句提示處理日常事務:記錄工時、把未開票工時變成草稿發票、把收據登錄為支出,並詢問自己的財務現況。
執行需求
以 Python 套件形式透過 stdio 在本機執行(從原始碼執行需 Python 3.11 或更新版本;uvx 或 pipx 可免複製直接執行)。需要在 Peil 的「設定 → 開發者」建立具權限範圍的 API 金鑰,並以 PEIL_API_KEY 傳入;PEIL_API_URL 可覆寫 API 基礎位址。需要能連線至 Peil API 的網路。
安裝前請注意
金鑰帶有寫入權限:工時、客戶、支出與發票工具會建立、修改和刪除資料。寄送類工具會寄信給客戶且無法撤回,除非確有必要,否則不要開啟 invoices:send 權限;沒有該權限的金鑰無法代為寄信。收據照片會被助理讀取,照片本身保存在 Peil 應用程式中。部分功能在 Peil 方案中仍屬 Pro。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Peil,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Peil MCP server

mcp-name: app.peil/peil-mcp

Connect Peil to Claude (or any MCP client): log hours, draft invoices from unbilled hours, add expenses from a receipt, and check where you stand — from a prompt.

The server is a pure client of Peil's public API. It authenticates with a scoped API key you create in Peil under Settings → Developer. Keys and this server are free on every plan; what is Pro in Peil (emailing invoices, reminders, recurring invoices) stays Pro over a key too.

Draft-by-default

draft_invoice only ever creates a draft — nothing is sent to your clients. Sending is a separate tool (send_invoice) that also requires the separate invoices:send permission on your key. A key without that permission can never email anything on your behalf.

Tools

Reads (read)

ToolWhat it does
list_clientsList your clients
get_client_detailsOne client's details, incl. whether a default rate is set
list_unbilledUnbilled hours per client for a period
list_invoicesList invoices, filterable by status / client
orientation_snapshotOutstanding / overdue / drafts / YTD position
get_reminder_copyYour custom reminder email copy + schedule
list_expensesA year's one-off expenses, and which have no receipt kept

Hours (timesheet:write)

ToolWhat it does
log_hoursAdd a timesheet entry (client default rate unless given)
edit_hoursEdit an entry (only the fields you pass change)
delete_hoursDelete an entry (blocked if on a sent/paid invoice)

Clients (clients:write)

ToolWhat it does
create_client / update_client / delete_clientClient CRUD (delete blocked if it has projects/sent invoices)

Expenses (expenses:write)

ToolWhat it does
create_expenseAdd an expense as the receipt says it: total, Dutch btw, category (key or label). Your assistant can read the receipt; the photo itself is kept in the Peil app

Invoices (invoices:write)

ToolWhat it does
draft_invoiceDraft an invoice from unbilled hours (summary / by_project / per_day)
set_invoice_statusChange status (e.g. mark paid) — does not email anyone
update_invoiceEdit safe fields (due date, payment date, notes)
delete_invoice / archive_invoiceDelete (paid ones blocked) / archive
set_reminder_copyWrite custom reminder email copy for one tone/language

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

ToolWhat it does
send_invoiceEmail an invoice to the client now
schedule_sendSchedule a draft to be emailed at a future time
cancel_scheduled_sendCancel a scheduled send
send_reminderEmail a payment reminder for a sent/overdue invoice

1. Create your key

In Peil: Settings → Developer → create a key with the permissions you want. Start with read + Log hours + Draft invoices (add Add expenses if you want your assistant to file receipts); leave Send invoices off unless you truly want an assistant emailing clients. You'll paste this key into your assistant's config as PEIL_API_KEY below.

2. Install the server

The easy way — no clone, no install:

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

→ Your launch command is uvx peil-mcp (or pipx run peil-mcp). Skip to step 3. Everything below is only needed if you're running from source (e.g. before the first release, or to hack on it).

From source

You need Python 3.11 or newer and a local copy of this mcp-server/ folder. Check your Python with python3 --version.

Which method? Run which uv pipx first. If you already have uv, 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-venv path (C) works with nothing but the Python that's already on your machine.

Everywhere below, replace /ABS/PATH/TO/mcp-server with the real absolute path to this folder (run pwd inside it to get it).

A. With uv (no install step)

uv builds and runs on demand — nothing to install first:

sh
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 have uv? curl -LsSf https://astral.sh/uv/install.sh | sh (macOS/Linux) or pip install uv.

B. With pipx (isolated global command)

pipx installs the server into its own isolated environment and puts a peil-mcp command on your PATH:

sh
pipx install /ABS/PATH/TO/mcp-server

→ Your launch command is simply: peil-mcp

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

C. Plain venv + pip (works with only stock Python)

No extra tooling — just the python3 you already have:

sh
cd /ABS/PATH/TO/mcp-serverpython3 -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 a plain pip install . (not -e/editable) for running. An editable install relies on a .pth path hook that can silently fail to load on some setups, giving ModuleNotFoundError: No module named 'peil_mcp'. Editable is only needed if you're modifying the server itself — see Local development.

3. Connect your assistant

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
  • env — PEIL_API_KEY set to the key from step 1
  • (optional) PEIL_API_URL — only if you're pointing at a non-production Peil (see Local development); defaults to https://api.peil.app/api/v1.

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

jsonc
{  "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" }    }  }}

Claude Desktop

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

Claude Code (CLI)

sh
# 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 with claude mcp get peil (look for Status: ✔ Connected) and use /mcp in a session to reconnect.

Cursor

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

Windsurf

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

Cline / Roo (VS Code)

Open the extension's MCP Servers → Configure panel and add the canonical block to cline_mcp_settings.json.

VS Code (native Copilot agent mode)

VS Code uses a slightly different shape — servers (not mcpServers) and an explicit type — in .vscode/mcp.json:

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

Any other MCP client

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

First prompts

Once connected, try:

  • "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
  • "Here's my train ticket, add it as an expense." (with a photo) → create_expense

With Send invoices left off your key, an assistant can prepare everything but physically cannot email a client — you send from Peil yourself.


Local development

Point the server at a local backend with PEIL_API_URL:

sh
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:

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

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

sh
.venv/bin/pytest

來源:README.md,提交 643582f

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

3
  1. v0.1.5最新Oct 10, 2026
  2. v0.1.4Sep 25, 2026
  3. v0.1.3Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分