week7-mcp-server
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Week 7 — MCP (giving an agent its own tools, the standard way)
Part of my journey leveling up automation skills as the field shifts toward AI. This week is about Model Context Protocol (MCP) — instead of pasting data into a prompt, the LLM is handed a small set of tools and decides for itself which ones to call, in which order, to answer a question.
Why this week matters: hardcoding data into a prompt doesn't scale past a demo. MCP is the emerging standard for "here are your tools and data sources, go" — it's what lets an agent plug into a live system instead of a snapshot.
The architecture
[client.py asks a question]
|
v
[Claude sees 3 tool definitions — no invoice data in the prompt]
| decides which tools to call, with what arguments
v
[MCP server (server.py): list_invoices / get_invoice / get_purchase_order]
| returns live data over stdio
v
[Claude reasons over the results and answers]Continuity: Week 2 extracted an invoice from a document. Week 6 decided what to do with an invoice exception, given data the bot already had in hand. This week, the data itself lives behind an MCP server — an agent fetches its own facts instead of having them handed to it. Combine this with Week 6's policy-guarded decision service and you get Portfolio Project #4 on the roadmap: an agent that both looks things up and hands the judgement call to an auditable rule layer.
Related MCP server: ebp-mcp
What's here
File | Role |
| The MCP server — exposes |
| Spawns the server and drives it from Claude — no server process to start separately |
| Unit tests for the tool functions — no API key needed |
1. Run it
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
# copy .env.example to .env and paste your key
python src/client.pyclient.py spawns server.py itself over stdio (that's how MCP typically
works for local tools — no HTTP port to manage, unlike Week 6). Watch the
[MCP tool call: ...] lines print as Claude decides what it needs to look up.
Run the unit tests for the tool logic (no API key needed):
pytest2. The key design idea: tools + data over a standard protocol
Before MCP, "give the model a tool" meant hand-rolling a JSON schema and a
dispatch if/elif for every project. MCP standardizes that: server.py
declares tools once with @mcp.tool(), and any MCP-speaking client — this
repo's client.py, Claude Desktop, another team's agent — can discover and
call them the same way. That's the "connecting agents to real tools" pitch:
the tool-provider and the agent don't need to be written by the same person.
3. What I learned / production-ready vs. not
MCP separates who owns the data from who reasons about it — the server doesn't know or care which LLM is calling it.
Model choice matters here too: this is orchestration (deciding which tool to call), not hard judgement, so a cheap/fast model (
claude-haiku-4-5) is the right call — save Opus-tier reasoning for the kind of decision Week 6 makes.Not production-ready: the "ERP" is an in-memory dict, the server has no auth, and there's no real MCP resource (only tools) — a production version would likely expose invoice records as MCP resources too. (Weeks 8+.)
Stack
Python · MCP (official Python SDK) · Claude (claude-haiku-4-5 for
tool-driving) · Anthropic SDK · pytest
This server cannot be deployed
Maintenance
Related MCP Connectors
Read incoming supplier invoices through a remote MCP server and get structured data for accounting.
41 MCP tools for EU invoice evidence, supplier checks, market data and read-only chain queries
Free hosted MCP for invoices, estimates, clients, items and PDFs. OAuth authorization required.
Create and manage invoices and customers on Jupiter Invoice (MCP, API-key auth).
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI agents to stamp, cancel, and query Mexican CFDI 4.0 invoices through MCP tools, with support for local stdio and hosted HTTP transport.471 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables reading EBP Cloud/SaaS business data (Hubbix Comptabilité, Hubbix Gestion Commerciale, SaaS Gestion Commerciale, SaaS Bâtiment) through a set of read-only business tools over stdio, using user-supplied EBP credentials. Note that data exposed to the MCP client may be transmitted to whichever model provider it uses.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables parsing of structured receipts, invoices, and bank statements and tolerance-based three-way reconciliation that detects tax calculation drift and duplicate claims, then synthesizes balanced double-entry bookkeeping journal entries. Exposes these capabilities as MCP tools (initialize, tools/list, tools/call) over a dependency-free JSON-RPC 2.0 stdio server.7MIT
- AlicenseBqualityBmaintenanceDeprecated legacy sandbox stub for local testing.12,109 npm1MIT