MCP
Plug in Model Context Protocol servers — browsers, issue trackers, internal APIs — without a marketplace.
MCP is how Eyeban grows beyond the built-in tools. You wire servers in JSON; the agent discovers their tools and can call them with the same permission loop as Shell or Git.
How you attach a server
- User scope:
~/.eyeban/mcp.json - Project scope:
.eyeban/mcp.json
Stdio servers and SSE / streamable HTTP servers both work. Resources and auth flows are supported when the server exposes them.
Why buyers care
A coding agent that cannot reach Jira, the browser, or your internal API stops at the repo boundary. MCP is that boundary crossing — still reviewed, still local to your config.
Trust
Prefer servers you can audit. Do not commit tokens. Read the tool schema before Allow all. There is no curated Eyeban store and no unsigned “plugin pack” to install from the internet.
Project-scoped MCP is useful when the whole team should share the same wiring.
41 def charge(order, wallet): 42 tax = order.subtotal * 0.09 43 total = order.subtotal + tax 44 if wallet.balance < total: 45 raise InsufficientFunds(total) 46 wallet.debit(total) 47 return Receipt(order.id, total)
Split regional tax from the hardcoded rate, and check coverage before debit.
Read 6 files · 2 searches · 1 test
charge still hard-codes 0.09. tax_for(region) exists. I will wire can_cover to the wallet.
12-line patch across two files. Review the diff.
Before touching checkout, write the approach for multi-region tax.
Plan · product shell and edits are limited
Freeze the tax_for contract, then change charge, then update test_charge.
Plan is ready. I switch to Agent after you confirm.
Where does charge take tax from, and which test pins it?
Ask · read only
The rate is checkout.py:42. test_charge asserts the same 0.09.
Nothing was written.
InsufficientFunds also fires for tax-exempt orders. Evidence first.
Debug · reproduce before the fix
It fails when the region is exempt and wallet.can_cover still sees the flat rate.
Failure trail is ready. The fix waits for your OK.
- tax = order.subtotal * 0.09 + tax = order.tax_for(region) - if wallet.balance < total: + if not wallet.can_cover(total, region): wallet.debit(total)