Complete personal-finance MCP server with 76 deterministic tools for financial planning, investment analysis, and portfolio management. Includes a Next.js website frontend and live market data integration.
Personal Finance MCP has 16 tools with consistently present descriptions and schemas. Naming follows verb_noun pattern (calculate_*, create_*, analyze_*) which is clear. However, descriptions lack depth, most are 50-150 characters, below the 194-char baseline for production A+ tools. Parameter descriptions are present but minimal (typically 10-30 chars per param). Output schemas are not documented, LLMs cannot infer what fields to expect from tool responses. Error handling is absent: no guidance on recovery, retryability, or user-fixable vs. fatal errors. Security is reasonable (read-only operations, no secrets in params), but composition reveals a fundamental issue: tool chains assume the user will manually thread results between sequential calls. For example, create_financial_plan returns a prioritized action plan, but downstream tools (calculate_sip_returns, plan_retirement) don't document what fields from the plan they consume, forcing the agent to guess or make extra calls. Defaults are mostly sensible (emergency_fund=0, dependents=0, inflation=6), though retirement_age=60 may not fit all users. Overall: technically sound but lacks the LLM-optimization and chaining clarity that production tools require.
Household cash-flow analysis: monthly surplus, savings rate, expense ratio. Use when a user describes their income and spending and asks 'how am I doing', 'how much can I save/invest', or wants a budget health check.
Calculate bond convexity — second-order measure of interest rate risk. Higher convexity = less price sensitivity to large yield changes.
Calculate Macaulay Duration and Modified Duration. Duration measures interest rate sensitivity of a bond. Modified Duration shows % price change per 1% yield change.
Calculate bond price using DCF of coupon payments and face value. Price = Σ[C/(1+r)^t] + FV/(1+r)^n. coupon_frequency: 1=annual, 2=semi-annual, 4=quarterly.
Contingency / emergency fund target and shortfall. Use for 'how big should my emergency fund be', 'am I covered if I lose my job'. Recommend 3-6 months of expenses (12 if income is irregular).
Output schemas not documented. LLMs cannot infer what fields tools return, forcing guessing or extra discovery calls. Affects all 16 tools.
JSON string parameters (loans_json, debts_json) force LLMs to manually construct JSON instead of passing structured data. Breaks composition and invites malformed JSON.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Calculate Current Yield = Annual Coupon / Market Price × 100.
Debt-to-income (debt servicing) ratio and how much more EMI is prudent. Use for 'can I afford another loan', 'am I over-leveraged', loan eligibility.
Calculate EMI (Equated Monthly Instalment) for a loan. EMI = P × r × (1+r)^n / ((1+r)^n - 1). Also shows total interest paid and interest-to-principal ratio.
Calculate Yield to Maturity — the internal rate of return of a bond. Uses Newton-Raphson iteration for precision.
Price a zero-coupon bond. Price = FV / (1+r)^n. Zero-coupon bonds pay no periodic interest, sold at discount.
Compare multiple loan options to find the best deal. Input: JSON array of loans, each with principal, annual_rate, tenure_years, and optional name.
Holistic financial plan from a user's life situation — the best first tool when someone describes their finances in plain language ('I'm 30, earn X, spend Y, have a home loan, want to retire at 60'). It chains net worth, cash flow, emergency fund, debt-to-income, risk profiling and a retirement gap into ONE prioritised action plan, in the canonical financial-planning order (evaluate → protect → reduce debt → profile risk → invest for goals). Call this to bridge a free-form story to concrete numbers, then drill into specific calculators (SIP, retirement, loans) for detail.
Analyze whether consolidating multiple debts makes sense. Compares current EMI and interest against consolidated option.
Should you invest surplus money or prepay the loan? Compares post-tax investment return against effective loan cost.
Generate loan amortization schedule showing month-wise principal/interest split. Shows how the interest component decreases and principal component increases over time.
Calculate impact of prepaying a loan — savings in interest and time. Shows months saved and total interest saved.
Tool descriptions are below production baseline (avg 62 chars vs 194-char baseline). Too brief to guide LLM selection or explain when to use each tool vs. alternatives.
Parameter descriptions are minimal (avg 10-20 chars). LLMs cannot infer semantic meaning (e.g., is 'annual_rate' per annum or decimal?).
No error handling or recovery guidance. Tools lack documentation of failure modes, retryability, or user-fixable errors (e.g., negative rates, nonsensical tenure).
Tool chaining not documented. create_financial_plan returns a 'prioritised action plan' but downstream tools (calculate_sip_returns, plan_retirement) don't specify which fields they consume.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only but this is not formally declared.