MCP for EDI: Building a Carrier Compliance Dashboard With Claude Code
Adrian Duyzer
In this video, I build a logistics analytics dashboard designed to provide key information to a carrier or broker. I start with a simple Next.js app that’s connected to Tediware with an API key but has no EDI functionality, then get to work using Claude Code and Tediware’s MCP server. The data sources are EDI 204 load tenders, 990 tender responses and 214 shipment status messages.
The result is a dashboard that shows an interactive map of your lanes. You can search and filter the data by time period and shippers, and you get custom analytics that show you how well you’re serving your trading partners.
Get The Source Code
If you want to try this out, I put the source code on Github. You can check out the code, issue a read-only key, and connect it to your Tediware account. If you need to change something, your best bet is to use your favourite coding agent: just start it inside the folder where you downloaded the source code.
How It works
The app is a Next.js dashboard that runs on your own machine and keeps its data in a local SQLite file. It only reads data, which is why a read-only API key is all it needs. You don’t have to set up webhooks, a tunnel or a public URL.
- It reads your feed. Tediware keeps a feed of the documents it processes for your organization, inbound and outbound, subject to the data retention policy (max 45 days). The app pages through that feed and saves its place after each page, so a restart picks up where it stopped. After that it checks for new documents every minute.
- It downloads freight documents. For each inbound 204 and each outbound 990 and 214, it downloads the JSON version of the document from Tediware. Everything else is listed on the Activity page but not downloaded.
- It builds a model of the freight you’re moving. Each 204 becomes a tender. Each 990 is matched to its tender. Each 214 adds a status event to the load. The map, the tender and load lists and the compliance metrics are all built from those records.
The compliance metrics measure how well you keep your side of the exchange:
- Tender response (990): answered by the partner’s respond-by time or within an hour if the 204 doesn’t set one.
- Pickup and delivery (214): reported within an hour of the event.
- In-transit updates (X6): a position update at least every 30 minutes while a load is moving, for partners who receive them.
Each metric is broken down by partner and by day. A metric turns green at 95% on time, yello at 85% and red below that. You can open any tender and see every document behind it, exactly as Tediware delivered it.
For this to work in your account, inbound 204s need to come through a flow with no inbound mapping, so the app sees the standard X12 structure. Your 990s and 214s need to be sent through Tediware, which they already are if your TMS sends them that way.
How I Built This
With Tediware, Claude (or Codex or Cursor or any coding agent) can read EDI data and configuration via MCP, including partner profiles, transactions, and parsed 204, 990 and 214 transactions. That makes it really easy for Claude to build a custom dashboard that pulls in that same data.
I describe what I want in plain English and Claude builds it step by step, starting with a map, then search and filtering, then a design pass, then the compliance analytics. Because Tediware delivers JSON, not raw EDI, its easy for Claude to work with.
All the data in this video is synthetic, generated by a simulator. No confidential data is shown.