server.cpython-312.pyc•35.1 kB
�
��gLc � �N � d dl Z d dlZd dlmZmZmZ d dlmZ d dlmZm Z m
Z
mZmZm
Z
d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d lmZ d d
lmZ d dlmZ d dlmZ d d
l m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3 ed�� ejh jk d� Z6 ee� dz Z7e7jq dd�� e7dz Z9e7dz Z:de!fd�Z; G d � d!� Z<de<fd"�Z=d#ee> de>fd$�Z?d#ee> d%eee> d&e@dee@ fd'�ZAd(ee> d)ee@ d*ee> de>fd+�ZB d^d%eee> d#ee> d*eee> de>fd,�ZCd-ee
e>e f de
e>e f fd.�ZDd/e>ez de
e>e f fd0�ZEd/e>ez d1e
e>e f ddfd2�ZF ed3� ZG G d4� d5� ZH eH� ZIeGj� d6� dee> fd7�� ZKeGj� d8� d9e>deLej� fd:�� ZNd;e!d9e>d<e>dee> fd=�ZOeGj� � d_d>e>d?eeQ ed@�A� f dBe>d<ee> dCee> de
e>e f fdD�� ZReGj� � d>e>deQfdE�� ZSeGj� � de>fdF�� ZTeGj� � d9e>de>fdG�� ZUeGj� � d9e>d>e>de>fdH�� ZVdIe3dJe
e>e>f dKe>dee> fdL�ZWdMee3 dKe>dee3 fdN�ZXeGj� � d`d9e>dKee> edO�A� f dPeee@ edQ�A� f de>fdR�� ZYeGj� � dMee3 dSe>dTe>dee3 fdU�� ZZ dad9e>dSe>dVe>dTe>de>f
dW�Z[dXe'e
e>e f z de\e>e>eQeQf fdY�Z]d?eQde>fdZ�Z^eGj� � d9e>de>fd[�� Z_eGj� � d9e>de>fd\�� Z`eGj� � d9e>de>fd]�� Zay)b� N)�date�datetime� timedelta)�Path)� Annotated�Any�Dict�List�Optional�cast)�load_dotenv)�FastMCP)�Field)�XDG_CONFIG_HOME)�AccountsApi)�
BudgetsApi)�
CategoriesApi)�TransactionsApi)� ApiClient)�
Configuration)�Account)�Category)�CategoryGroupWithCategories)�ExistingTransaction)�NewTransaction)�PostTransactionsWrapper)�PutTransactionWrapper)�TransactionDetailT)�verbose�YNAB_API_KEYzmcp-ynab)�parents�exist_okzpreferred_budget_id.jsonzbudget_category_cache.json�returnc � �b K � t st d� �t t �� } t | � S �w)zKGet a configured YNAB API client. Reads API key from environment variables.z/YNAB_API_KEY not found in environment variables)�access_token)�ynab_api_key�
ValueErrorr r )�
configurations �F/Users/home/1-Dev-Projects/mcp-servers/ynab-mcp/src/mcp_ynab/server.py�_get_clientr* + s* � �� ���J�K�K�!�|�<�M��]�#�#�s �-/c �( � e Zd ZdZd� Zdefd�Zd� Zy)�AsyncYNABClientz*Async context manager for YNAB API client.c � � d | _ y �N��client��selfs r) �__init__zAsyncYNABClient.__init__6 s � �+/��� r# c � �T K � t � � d { ��� | _ | j S 7 ��wr. )r* r0 r1 s r) �
__aenter__zAsyncYNABClient.__aenter__9 s! � �� �'�M�)����{�{�� *�s �(�&�(c � �&