Skip to main content
Glama
mydata-mcp

mydata-mcp

by gabrielnika

mydata-mcp

Read-only MCP server for the Greek AADE myDATA e-books API.

Ask Claude (or any MCP client) questions about your business's invoices, income, and expenses — in plain language. All myDATA codes (document types, VAT categories, E3 classifications) are decoded into human-readable bilingual labels before they ever reach the model.

CI Python License

⚠️ Unofficial project — not affiliated with AADE. Strictly read-only: no write endpoint of the myDATA API is ever called.

What can you ask?

  • "Ποια τιμολόγια έλαβα από προμηθευτές τον Ιούλιο;"

  • "What was my gross margin in July 2026?"

  • "Who are my top 5 suppliers by spend this quarter?"

  • "Show me all credit notes I issued last month."

Related MCP server: docnova-mcp

Features

  • 4 tools — received documents, transmitted documents, income summary, expense summary, with date/VAT/type filters and transparent pagination.

  • 3 resources — full myDATA code tables (invoice types, VAT categories, classifications) the model can consult on demand.

  • 1 prompt — monthly_review generates a complete monthly business review.

  • Battle-tested XML handling — survives myDATA's escaped/nested and occasionally malformed XML responses via lxml recovery mode.

  • Compact output — clean, typed JSON instead of raw XML dumps; details are opt-in per call, so token usage stays low.

Architecture

flowchart LR
    LLM["MCP client<br/>(Claude Desktop / Claude Code)"] <-->|stdio| S[server.py]
    S --> C["client.py<br/>httpx · auth · pagination"]
    C <-->|HTTPS/XML| A[("AADE myDATA API")]
    C --> P["parser.py<br/>xmltodict + lxml recovery"]
    P --> N["normalizer.py<br/>pydantic + code decoding"]
    N -->|compact JSON| S

Quickstart

1. Get myDATA credentials

Register at mydata.aade.gr to obtain your user_id and subscription_key.

2. Configure your MCP client

Claude Desktop (claude_desktop_config.json) or Claude Code (claude mcp add):

{
  "mcpServers": {
    "mydata": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/nikagabriel741agent/myData-MCP-Server", "mydata-mcp"],
      "env": {
        "MYDATA_USER_ID": "your-user-id",
        "MYDATA_SUBSCRIPTION_KEY": "your-subscription-key"
      }
    }
  }
}

For a local checkout, use "args": ["--from", "/path/to/mydata-mcp", "mydata-mcp"].

3. Ask away

Try the built-in prompt: monthly_review(month=7, year=2026).

Tools

Tool

myDATA endpoint

Description

get_received_documents

RequestDocs

Documents received from suppliers

get_transmitted_documents

RequestTransmittedDocs

Documents you issued

get_income_summary

RequestMyIncome

Income bookings per E3 classification

get_expense_summary

RequestMyExpenses

Expense bookings per E3 classification

Common parameters: date_from / date_to (ISO or dd/MM/yyyy), counterpart_vat, invoice_type, include_details, max_results. Every response carries page_info: {has_more, next_mark}.

Resources

URI

Contents

mydata://codes/invoice-types

Document types 1.1–17.6 (EN + EL)

mydata://codes/vat-categories

VAT categories with rates

mydata://codes/classifications

E3/VAT classification categories & types

Configuration

Variable

Required

Description

MYDATA_USER_ID

✅

AADE user id

MYDATA_SUBSCRIPTION_KEY

✅

AADE subscription key

MYDATA_ENV

—

production (default) or sandbox

Development

uv sync          # install
uv run pytest    # test (all HTTP mocked — no credentials needed)
uv run ruff check .

License

MIT

Available Tools

4 tools
get_expense_summaryA

Fetch EXPENSE bookings per classification from myDATA e-books (RequestMyExpenses).

Each record aggregates documents per counterparty/type/classification with net, VAT, and gross totals. Classification codes are decoded to labels.

Inputs: date_to (required), date_from (required), max_results, counterpart_vat. Returns: object

get_income_summaryA

Fetch INCOME bookings per classification from myDATA e-books (RequestMyIncome).

Each record aggregates documents per counterparty/type/classification with net, VAT, and gross totals. Classification codes are decoded to labels.

Inputs: date_to (required), date_from (required), max_results, counterpart_vat. Returns: object

get_received_documentsA

Fetch documents RECEIVED by your business (e.g. supplier invoices) from myDATA.

Inputs: date_to (required), date_from (required), max_results, invoice_type, +2 more. Returns: object

get_transmitted_documentsA

Fetch documents ISSUED by your business (sales invoices, receipts) from myDATA.

Inputs: date_to (required), date_from (required), max_results, invoice_type, +2 more. Returns: object

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 4 tools

    Disambiguation5/5

    Each tool targets a clearly distinct resource: received vs transmitted documents, and income vs expense summaries. No overlap in purpose or data returned.

    Naming Consistency5/5

    All tool names follow the same get_[adjective]_[noun] pattern, with consistent snake_case and clear modifiers. The naming style is uniform and predictable.

    Tool Count5/5

    Four tools is well within the ideal 3-15 range, and each covers a distinct core query type for the myDATA domain. No redundant tools are present.

    Completeness4/5

    The read-only surface logically covers documents and summaries for both income and expenses. Major gaps are unlikely, though individual document retrieval or mutation tools are absent, which may not be required for this reporting-oriented server.

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      C
      maintenance
      Read-only MCP server for TourScale ERPNext, enabling agents to query franchisees, agreements, invoices, and GL entries via natural language.
      -
    • A
      license
      A
      quality
      D
      maintenance
      MCP server for e-invoice platforms. Enables natural language querying of invoices, partners, company data, and financial reports.
      18
      10 npm
      6
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Read-only MCP server for accessing Wallet by BudgetBakers financial data, allowing users to query accounts, transactions, categories, budgets, and more via natural language.
      10
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Read-only MCP server for self-hosted Manager.io bookkeeping, providing curated GET tools to access accounting data like invoices, balances, and reports.
      10
      32 PyPI
      1
      MIT