brettapps789's picture
download
raw
2.77 kB
from mcp.server.fastmcp import FastMCP
from modules import (
investment,
valuation,
personal,
corporate,
analysis,
knowledge
)
# Initialize FastMCP server
mcp = FastMCP("Finance")
# Investment Tools
@mcp.tool()
def calculate_npv(rate: float, cash_flows: list):
return investment.calculate_npv(rate, cash_flows)
@mcp.tool()
def calculate_irr(cash_flows: list):
return investment.calculate_irr(cash_flows)
@mcp.tool()
def calculate_roi(gain: float, cost: float):
return investment.calculate_roi(gain, cost)
# Valuation Tools
@mcp.tool()
def dcf_valuation(fcf: float, growth_rate: float, terminal_growth: float, discount_rate: float, periods: int):
return valuation.dcf_valuation(fcf, growth_rate, terminal_growth, discount_rate, periods)
# Personal Finance Tools
@mcp.tool()
def mortgage_calculator(principal: float, annual_rate: float, years: int):
return personal.mortgage_calculator(principal, annual_rate, years)
@mcp.tool()
def savings_projection(initial: float, monthly_addition: float, annual_rate: float, years: int):
return personal.savings_projection(initial, monthly_addition, annual_rate, years)
# Corporate Finance Tools
@mcp.tool()
def calculate_wacc(equity: float, debt: float, cost_equity: float, cost_debt: float, tax_rate: float):
return corporate.calculate_wacc(equity, debt, cost_equity, cost_debt, tax_rate)
@mcp.tool()
def calculate_capm(risk_free_rate: float, beta: float, market_return: float):
return corporate.calculate_capm(risk_free_rate, beta, market_return)
# Advanced Analysis Tools
@mcp.tool()
def calculate_retirement_needs(current_age: int, retirement_age: int, monthly_expenses: float, inflation: float = 0.03):
return analysis.calculate_retirement_needs(current_age, retirement_age, monthly_expenses, inflation)
@mcp.tool()
def calculate_financial_ratios(assets: float, liabilities: float, income: float, revenue: float):
return analysis.calculate_financial_ratios(assets, liabilities, income, revenue)
@mcp.tool()
def compound_interest_breakdown(principal: float, rate: float, years: int, monthly: float = 0):
return analysis.compound_interest_breakdown(principal, rate, years, monthly)
# Knowledge Base Tools
@mcp.tool()
def get_financial_definition(term: str):
"""Returns the definition of a financial term (e.g., NPV, WACC)."""
return knowledge.get_financial_definition(term)
@mcp.tool()
def get_financial_compliance_info(region: str):
"""Returns basic tax and filing rules for US, UK, or EU."""
return knowledge.get_compliance_check(region)
@mcp.tool()
def list_ratio_benchmarks():
"""Returns industry-standard financial ratio averages."""
return knowledge.list_ratio_benchmarks()
if __name__ == "__main__":
mcp.run()

Xet Storage Details

Size:
2.77 kB
·
Xet hash:
6fd1ac84ab85ced01ddebb8f692e3604bfdfc29c05b8a7de8350041ce087853b

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.