Skip to main content
Glama
minhyeoky

Ledger CLI MCP Server

by minhyeoky

mcp-server-ledger: Ledger CLI MCP 서버

대장간 배지

개요

명령줄에서 접근 가능한 강력한 복식부기 회계 시스템인 Ledger CLI 와 상호 작용하기 위한 모델 컨텍스트 프로토콜 서버입니다. 이 서버를 통해 대규모 언어 모델(Large Language Models)이 Ledger CLI 도구를 통해 재무 데이터를 쿼리하고 분석할 수 있습니다.

이 MCP 서버는 표준화된 인터페이스를 통해 Ledger CLI의 기능을 제공하여 AI 도우미가 재무 보고, 예산 분석, 회계 업무를 쉽게 도울 수 있도록 합니다.

Related MCP server: Lunch Money MCP Server

특징

서버는 Ledger CLI 명령에 매핑되는 다음 도구를 제공합니다.

  1. ledger_balance

    • 강력한 필터링 옵션을 사용하여 계정 잔액을 표시합니다.

    • 입력: 쿼리 패턴, 날짜 범위, 표시 옵션

    • 반환: 서식이 지정된 잔액 보고서

  2. ledger_register

    • 자세한 내역을 포함한 거래 내역을 보여줍니다.

    • 입력: 쿼리 패턴, 날짜 범위, 정렬 옵션

    • 반환: 형식화된 등록 보고서

  3. ledger_accounts

    • 원장 파일의 모든 계정을 나열합니다

    • 입력: 선택적 쿼리 패턴

    • 반환: 일치하는 계정 목록

  4. ledger_payees

    • 거래의 모든 수취인을 나열합니다.

    • 입력: 선택적 쿼리 패턴

    • 반환: 일치하는 수취인 목록

  5. ledger_commodities

    • 사용되는 모든 상품(통화)을 나열합니다.

    • 입력: 선택적 쿼리 패턴

    • 반품: 일치하는 상품 목록

  6. ledger_print

    • 원장 형식으로 거래를 인쇄합니다.

    • 입력: 쿼리 패턴, 날짜 범위

    • 반환: 서식이 지정된 원장 항목

  7. ledger_stats

    • 원장 파일에 대한 통계를 보여줍니다

    • 입력: 선택적 쿼리 패턴

    • 반환: 원장의 통계 요약

  8. ledger_budget

    • 예산 분석을 보여줍니다

    • 입력: 쿼리 패턴, 날짜 범위, 보고 기간

    • 반환: 예산 보고서

  9. ledger_raw_command

    • 원시 Ledger CLI 명령을 실행합니다.

    • 입력: 문자열 목록 형태의 명령 인수

    • 반환: 명령 출력을 텍스트로 출력

필수 조건

  • Ledger CLI가 설치되어 PATH에 사용 가능해야 합니다.

  • 재무 데이터가 포함된 유효한 원장 파일

설치

uv 사용(권장)

이 서버를 설치하고 실행하는 가장 쉬운 방법은 uv를 사용하는 것입니다.

지엑스피1

구성

서버에 Ledger 파일 경로가 필요합니다. 다음을 통해 제공할 수 있습니다.

  • LEDGER_FILE 환경 변수

  • 서버를 시작할 때의 명령줄 인수

Claude Desktop과 함께 사용

claude_desktop_config.json 에 다음을 추가하세요:

"mcpServers": {
  "ledger": {
    "command": "uv",
    "args": [
      "run",
      "--env-file",
      "/path/to/your/.env",  // Optional: to set LEDGER_FILE
      "--with",
      "mcp[cli]",
      "mcp",
      "run",
      "<repo_path>/main.py"  // Path to the main.py file in this repository
    ]
  }

}

사용 예

구성이 완료되면 AI 비서에게 재무 데이터에 대한 질문을 할 수 있습니다.

  • "지난 달 지출 보여줘"

  • "현재 모든 계좌의 잔액은 얼마입니까?"

  • "Amazon과의 모든 거래 내역을 나열하세요"

  • "2023년에 식료품에 얼마를 썼나요?"

  • "1분기 예산 실적 보여주세요"

AI는 서버를 통해 적절한 Ledger CLI 명령을 사용하여 정보를 가져옵니다.

디버깅

더 자세한 현지 테스트를 원하시면:

mcp dev main.py

개발

이 서버는 Model Context Protocol Python SDK를 사용하여 구축되었습니다. MCP 및 MCP 서버 개발 방법에 대한 자세한 내용은 공식 문서를 참조하세요.

이 프로젝트에 기여하려면:

  1. 저장소를 복제합니다

  2. 개발 종속성 설치

  3. 변경 사항을 만드세요

  4. MCP 검사기를 사용하거나 Claude Desktop과 통합하여 테스트합니다.

보안 고려 사항

이 서버는 재무 데이터에 Ledger CLI 명령을 실행합니다. 명령 삽입을 방지하기 위한 기본적인 검증 기능이 포함되어 있지만, 다음 사항을 준수해야 합니다.

  • 신뢰할 수 있는 클라이언트에게만 사용하세요

  • 어떤 파일 경로를 노출하는지 주의하세요

  • 실행하기 전에 모든 명령을 검토하세요

특허

이 MCP 서버는 MIT 라이선스에 따라 라이선스가 부여됩니다. 라이선스 조건에 따라 자유롭게 사용, 수정 및 배포할 수 있습니다.

Available Tools

9 tools
ledger_accountsC

List all accounts

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List all accounts' implies a read-only operation, but it doesn't specify whether this is a safe query, if it requires authentication, what the output format might be, or if there are any rate limits. For a tool with no annotation coverage, this leaves significant behavioral gaps that could affect agent decision-making.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at just three words, with no wasted language. It's front-loaded with the core action and resource, making it easy to parse quickly. For a simple listing tool, this brevity is appropriate and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a ledger system with multiple sibling tools, no annotations, no output schema, and incomplete parameter documentation, the description is inadequate. It doesn't explain what an 'account' means in this context, how the listing is formatted, or how it relates to other ledger operations. For a tool in a potentially complex domain, more context is needed to ensure proper usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions no parameters, but the input schema has one parameter ('query') with 0% description coverage in the schema itself. The description doesn't compensate by explaining what 'query' does or how it filters accounts, leaving the parameter undocumented. However, with only one parameter and a baseline expectation, this is minimally adequate but lacks detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all accounts' clearly states the action (list) and resource (accounts), making the basic purpose understandable. However, it doesn't differentiate this tool from its siblings like 'ledger_balance' or 'ledger_register', which might also involve account-related operations. The purpose is stated but lacks specificity about what makes this tool unique in the ledger context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools like 'ledger_balance', 'ledger_register', and 'ledger_stats', it's unclear if this is the primary account listing tool or if others serve overlapping purposes. There's no mention of prerequisites, context, or exclusions that would help an agent choose appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ledger_balanceD

Show account balances

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

D1.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure but fails completely. It doesn't indicate whether this is a read-only operation, what permissions might be required, whether it has side effects, how results are formatted, or any rate limits. The simple phrase 'Show account balances' provides no behavioral context beyond the basic action implied by the verb 'show'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at just three words, with no wasted language. It's front-loaded with the core action ('Show account balances') and contains no unnecessary elaboration. While this conciseness comes at the cost of completeness, the description itself is structurally efficient with every word serving a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (10 parameters with various date, grouping, and filtering options), lack of annotations, and absence of an output schema, the description is completely inadequate. It doesn't explain what the tool returns, how to interpret results, what the various parameters do, or when to use this versus other ledger tools. For a tool with this level of parameter richness, the minimal description fails to provide the necessary context for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions no parameters at all, while the input schema reveals 10 parameters with 0% schema description coverage (all parameters have descriptions in the schema itself, but the description field provides no additional context). For a tool with this many parameters (begin_date, end_date, query, daily, monthly, etc.), the description should at least hint at filtering or grouping capabilities, but it provides zero parameter guidance beyond what's in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Show account balances' is a tautology that essentially restates the tool name 'ledger_balance'. It provides minimal information beyond the name itself, failing to specify what kind of balances (e.g., current, historical, filtered) or for what scope (all accounts, specific accounts). While it indicates the general domain (account balances), it lacks the specificity needed to distinguish it from potential sibling tools like 'ledger_register' or 'ledger_stats'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There is no mention of context, prerequisites, or comparisons to sibling tools like 'ledger_accounts' or 'ledger_register'. An AI agent would have no indication of whether this is for summary balances, detailed transaction listings, or other purposes, making it impossible to make an informed choice among the available ledger tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ledger_budgetD

Show budget report

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

D1.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure but fails completely. 'Show budget report' gives no indication of whether this is a read-only operation, what permissions might be required, whether it has side effects, how results are formatted, or any rate limits. The description provides zero behavioral context beyond the minimal implication that it displays information rather than modifies it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is maximally concise at just two words. While severely under-specified, it contains zero wasted language and is perfectly front-loaded. Every word (both of them) serves the core purpose of identifying the tool's function, though that function remains poorly defined.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's apparent complexity (7 parameters for generating budget reports with date ranges and grouping options), no annotations, no output schema, and 0% schema description coverage, the description is completely inadequate. 'Show budget report' fails to explain what a budget report contains, how it differs from other financial reports, what the parameters control, or what format the output takes. This leaves the agent unable to properly invoke or interpret results from this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions no parameters whatsoever, while the input schema shows 7 parameters (begin_date, daily, end_date, monthly, query, weekly, yearly) with 0% schema description coverage. The agent receives no guidance about what 'budget report' means in terms of date ranges, grouping options, or filtering capabilities. This leaves all parameter semantics completely undocumented in both the schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Show budget report' is a tautology that essentially restates the tool name 'ledger_budget' without adding meaningful specificity. It doesn't explain what a 'budget report' actually contains or how it differs from other ledger tools like 'ledger_balance' or 'ledger_stats'. The description lacks a clear verb+resource combination that would help an agent understand the tool's distinct function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides absolutely no guidance on when to use this tool versus the 7 sibling tools available (ledger_accounts, ledger_balance, ledger_commodities, ledger_payees, ledger_print, ledger_raw_command, ledger_register, ledger_stats). There's no mention of appropriate contexts, prerequisites, or alternatives, leaving the agent with no basis for selecting this specific budget tool over other ledger-related operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ledger_commoditiesC

List all commodities

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List all commodities' implies a read-only operation, but it doesn't specify if it's safe, if there are rate limits, pagination, or what the output format looks like. For a tool with no annotations, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with just three words, front-loaded and free of unnecessary details. It efficiently communicates the core action without waste, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and low schema description coverage, the description is incomplete. It doesn't explain what 'commodities' are in this context, how results are returned, or any constraints, making it inadequate for a tool that likely interacts with a ledger system.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 1 parameter with 0% description coverage in the schema itself, and the tool description doesn't mention any parameters. The description fails to compensate for the lack of schema documentation, leaving the 'query' parameter's purpose and usage unclear beyond what's minimally inferred from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all commodities' clearly states the verb ('List') and resource ('commodities'), making the purpose understandable. However, it doesn't differentiate this tool from its siblings (like ledger_accounts or ledger_payees) which likely also list different resource types, so it's adequate but lacks sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention context, prerequisites, or exclusions, leaving the agent to infer usage based on the tool name alone, which is insufficient for effective selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ledger_payeesC

List all payees

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List all payees' implies a read-only operation, but it doesn't specify if it requires authentication, how results are returned (e.g., pagination, format), or any rate limits. For a tool with zero annotation coverage, this is insufficient to inform safe and effective use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with just three words, front-loaded to convey the core action immediately. There's no wasted language, making it efficient for quick understanding, though this brevity contributes to gaps in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema, no annotations), the description is incomplete. It doesn't explain the parameter's role, the return format, or behavioral aspects like error handling. For even a basic tool, more context is needed to ensure the agent can invoke it correctly without guesswork.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions no parameters, but the input schema has one parameter ('query') with 0% schema description coverage (the schema's description is generic). The description doesn't add any meaning beyond the schema, such as explaining what 'payees' are or how the 'query' filter works. With low coverage, it fails to compensate for the lack of schema details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all payees' clearly states the verb ('List') and resource ('payees'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'ledger_accounts' or 'ledger_register' which might also list things, and 'all' is somewhat vague about scope. This is adequate but has clear gaps in specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or contexts where other tools might be more appropriate, such as using 'ledger_register' for transaction details or 'ledger_accounts' for account listings. This lack of comparative context leaves usage unclear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ledger_printC

Print transactions in ledger format

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. 'Print' suggests output generation, but the description doesn't disclose behavioral traits like output format details, pagination, performance characteristics, or whether this is a read-only operation. It mentions 'ledger format' but doesn't explain what that entails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (4 words) and front-loaded with the core purpose. However, this brevity comes at the cost of completeness - it's under-specified rather than efficiently informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 3 parameters with 0% schema coverage, the description is inadequate. For a tool with multiple parameters and sibling alternatives, it should explain more about what 'ledger format' means, when to use it, and what parameters control.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions no parameters at all, while the schema has 3 parameters (begin_date, end_date, query) with 0% schema description coverage. The description fails to compensate for this complete lack of parameter documentation in the schema, leaving all parameters semantically undefined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Print transactions in ledger format' states a clear verb ('Print') and resource ('transactions'), but is vague about scope and format. It doesn't specify what 'ledger format' means or distinguish this from sibling tools like 'ledger_register' or 'ledger_raw_command' that might also output transaction data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. With multiple sibling tools for ledger data (accounts, balance, register, stats, etc.), the description offers no indication of when 'ledger_print' is appropriate versus other transaction-related tools like 'ledger_register'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ledger_raw_commandD

Run a raw ledger command

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

D1.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states 'Run a raw ledger command', which does not reveal any behavioral traits such as whether it's read-only or destructive, what permissions are needed, potential side effects, error handling, or output format. This is inadequate for a tool that likely executes commands, where such details are critical.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with a single sentence 'Run a raw ledger command', which is front-loaded and wastes no words. However, this conciseness comes at the cost of under-specification, but based on the scoring criteria, it earns a 5 for being appropriately sized with zero redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of running raw commands, no annotations, no output schema, and 0% schema description coverage, the description is severely incomplete. It fails to provide necessary context such as command syntax, expected behaviors, error cases, or how it relates to sibling tools, making it inadequate for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 1 parameter with 0% description coverage, and the description adds no meaning beyond the schema. It does not explain what 'raw ledger command arguments' are, their format, examples, or constraints. For a parameter named 'command' that accepts an array of strings, this lack of semantic context makes it difficult for an agent to use the tool correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Run a raw ledger command' is a tautology that essentially restates the tool name 'ledger_raw_command'. It specifies the verb 'run' and resource 'ledger command', but lacks specificity about what a 'raw ledger command' entails or how it differs from the 8 sibling tools (e.g., ledger_accounts, ledger_balance). This makes it vague and minimally helpful for distinguishing its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus the 8 sibling tools. It does not mention any context, prerequisites, or alternatives, leaving the agent with no information to make an informed choice among the ledger-related tools. This is a significant gap for a tool with multiple siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ledger_registerD

Show transaction register

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

D1.5/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. 'Show transaction register' implies a read-only operation but provides no information about permissions needed, data format returned, pagination, rate limits, or whether this is a live view versus cached data. For a tool with 10 parameters and no annotation coverage, this is completely inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at just three words, but this brevity comes at the cost of being under-specified rather than efficient. While front-loaded with the core action, it lacks the necessary detail for a tool with this complexity. The structure is simple but incomplete.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, no output schema, no annotations), the description is completely inadequate. It doesn't explain what a 'transaction register' contains, how it differs from other ledger tools, what parameters control, or what format the output takes. This leaves too many gaps for effective tool selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions no parameters whatsoever, while the schema has 10 parameters with 0% description coverage. The description doesn't even hint at the existence of date filtering, grouping options, or search capabilities that the parameters enable. This leaves the agent with no semantic understanding of what the parameters control.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Show transaction register' is a tautology that essentially restates the tool name 'ledger_register'. It doesn't specify what a 'transaction register' contains or how it differs from sibling tools like ledger_print or ledger_balance. While it indicates a display/read operation, it lacks specificity about scope or content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is absolutely no guidance about when to use this tool versus alternatives. With multiple sibling tools available (ledger_print, ledger_balance, ledger_stats, etc.), the description provides no context about when this specific register view is appropriate versus other ledger reporting tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ledger_statsC

Show statistics about the ledger file

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states what the tool does ('Show statistics') without any details on output format, performance, error handling, or other behavioral traits. This is inadequate for a tool with parameters and no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words. It's appropriately sized for a simple tool, though its brevity contributes to gaps in other dimensions. It's front-loaded and clear in its minimal form.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (1 parameter, no annotations, no output schema, and multiple sibling tools), the description is incomplete. It fails to explain what statistics are shown, how to use the parameter, or how it differs from other tools. This leaves significant gaps for an AI agent to operate effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 1 parameter with 0% description coverage, and the tool description provides no information about parameters. It doesn't explain what the 'query' parameter does, how to use it, or what 'Filter for statistics' means in practice. This leaves the parameter undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Show statistics about the ledger file' states a clear verb ('Show') and resource ('ledger file'), but it's vague about what specific statistics are shown and doesn't differentiate from sibling tools like 'ledger_balance' or 'ledger_register' that might also show statistical information. It provides a basic purpose but lacks specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives like 'ledger_balance' or 'ledger_register', nor does it mention any prerequisites or exclusions. It's a generic statement with no contextual usage information, leaving the agent to guess based on tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv1.0.0
    • First observedledger_accounts
    • First observedledger_balance
    • First observedledger_budget
    • First observedledger_commodities
    • First observedledger_payees
    • First observedledger_print
    • First observedledger_raw_command
    • First observedledger_register
    • First observedledger_stats

TDQS

C2.8/5.0

Scored across 9 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. Each targets a specific aspect of ledger functionality (e.g., accounts, balances, budget, commodities, payees, printing, raw commands, register, stats), and their descriptions make it easy to differentiate between them.

Naming Consistency5/5

All tool names follow a consistent 'ledger_' prefix with a descriptive noun or noun phrase (e.g., ledger_accounts, ledger_balance). This predictable pattern enhances readability and makes the tool set easy to navigate.

Tool Count5/5

With 9 tools, the count is well-scoped for a ledger CLI server. Each tool serves a distinct and useful function in managing financial data, and there are no redundant or unnecessary tools, making the set appropriately sized for its domain.

Completeness4/5

The tool set provides comprehensive coverage for querying and reporting on ledger data, including accounts, balances, transactions, and statistics. A minor gap is the lack of tools for creating or modifying ledger entries (e.g., add_transaction), but agents can work around this using ledger_raw_command for such operations.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An experimental server implementing the Model Context Protocol to allow AI assistants to query and analyze financial data stored in Beancount ledger files using the Beancount Query Language.
    53
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol server that allows AI assistants to interact with Lunch Money accounts, enabling management of transactions, categories, budgets, and other financial data through natural language commands.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol server that provides AI assistants like Claude with secure, read-only access to MoneyWiz financial data for natural language queries and financial analytics.
    13
    MIT
  • A
    license
    B
    quality
    F
    maintenance
    A Model Context Protocol server that provides programmatic access to Firefly III personal finance management. It enables AI assistants to manage accounts, transactions, budgets, and more through natural language.
    5
    8
    AGPL 3.0