Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Upi

БесплатноНе проверен

Upi — Model Context Protocol server

GitHubEmbed

Описание

Upi — Model Context Protocol server

README

A UPI transaction intelligence server built with Rust and the Model Context Protocol (MCP). Exposes transaction analytics as tools that Claude can call directly — search, aggregate, detect recurring payments, and rank merchants from natural language queries.

What it does

Instead of dumping raw transaction data into Claude's context, this server exposes purpose-built tools. Claude routes queries to the right tool, gets back pre-computed results, and answers accurately without doing arithmetic in-context.

Tools

Tool Description
search_txn Filter raw transactions by date, amount, merchant, category
get_spending_breakdown Category-wise spend breakdown for a date range
compare_periods Side-by-side delta between two time periods by category
detect_recurring_payments Detect monthly subscriptions using interval analysis
get_merchant_insights Total spent, count, average for a specific merchant
get_top_merchants All merchants ranked by spend, count, or average

Stack

  • Rust — systems language, zero-cost abstractions
  • rmcp — Rust MCP SDK for tool registration and stdio transport
  • chrono — date/time handling
  • serde / serde_json — serialization
  • tokio — async runtime

Running locally

cargo build
cargo run        # starts the server over stdio
cargo check      # fast type-check
cargo clippy     # lint
cargo test       # run unit tests

Connect via Claude Desktop — the binary communicates over stdio, Claude Desktop spawns and manages the process.

Architecture

src/
  main.rs        # entry: loads TransactionStore, starts stdio MCP server
  server.rs      # UpiServer: tool definitions (#[tool] methods) + ToolRouter
  model.rs       # Transaction, Category, TransactionType, response structs
  data/
    store.rs     # TransactionStore: data loading, filter helpers, analytics methods
data/
  transaction.json  # 202 mock transactions, Jan–Apr 2024 (compiled into binary)

Data is embedded at compile time via include_str! — no runtime file path needed.

Design decisions

Why dedicated tools instead of one generic query tool? Claude is a language model, not a calculator. Aggregating 200 transactions and computing percentage deltas in-context will drift. Code-side computation is exact, deterministic, and token-efficient.

Why compare_periods instead of calling get_spending_breakdown twice? One tool call vs two stdio round-trips. Pre-diffed output with change_pct and total_delta fields Claude can't compute reliably itself.

Why interval-based recurring detection instead of day-of-month matching? Day-of-month breaks in February and across month boundaries. Checking that consecutive occurrences are 28–32 days apart is robust to subscription drift.

Known limitations

  • Mock data only — no database backend
  • detect_recurring_payments window is derived from the latest transaction date, not system time
  • Category keys use Debug formatting — coupled to enum implementation detail

from github.com/tusharagrahari/upi-mcp-server

Установка Upi

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/tusharagrahari/upi-mcp-server

FAQ

Upi MCP бесплатный?

Да, Upi MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Upi?

Нет, Upi работает без API-ключей и переменных окружения.

Upi — hosted или self-hosted?

Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.

Как установить Upi в Claude Desktop, Claude Code или Cursor?

Открой Upi на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare Upi with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории development