Back to Services

Consulting

MCP Server Development

Model Context Protocol servers that let Claude, ChatGPT, Cursor or your own agents use your system safely: typed tools over existing services, OAuth, per-user permissions and a full audit log.

MCP Laravel OAuth 2.1 Claude ChatGPT

The interface you built covers the interactions you predicted: forms, tables, filters, exports. Everything else waits for the next sprint, or ends up in a spreadsheet. The Model Context Protocol (MCP) closes that gap without rewriting anything. It defines how a language model discovers and calls tools exposed by a server, so Claude, ChatGPT, Cursor or your own agent can work with your system through the same services your UI already uses.

I design and build MCP servers for business systems, mostly in Laravel and PHP.

What an MCP server for your system looks like

Each tool is a small, typed callable: a description the model reads, an input schema it must satisfy, and a handler that calls your existing actions and services. No business logic is duplicated and nothing bypasses the rules you already enforce.

  • Tools over existing services. Reporting queries, lookups, drafts, status changes. The handler calls the same code your controllers call.
  • Read-only by default. Write tools are added deliberately, one at a time, with confirmation steps where a human should stay in the loop.
  • Authentication and permissions. OAuth 2.1 so each person connects with their own identity, and your existing policies decide what each of them can see and do.
  • Traceability. Every tool call is logged with who asked, what was called, with which arguments and what came back, so you can answer "who read what, and when".
  • Resources and prompts. Reference data and reusable prompts exposed alongside the tools, so answers start from your context rather than the model's guesses.

What not to expose

A good MCP server is defined as much by what it leaves out. Bulk exports, raw SQL, anything that would let a model work around tenant boundaries, and destructive actions without a human confirmation stay out. Deciding that list is part of the work, and it is written down so it survives the next feature request.

Shipped examples

  • notedigit.com turns a private Git repository of Markdown notes into an MCP knowledge base: read-only search, read and list tools, OAuth 2.1 per-user access, no persistent storage and a full audit log. The thinking behind it is in Knowledge as Code.
  • espectro.dev exposes Sanzo Wada's color dictionary through a public API and an MCP integration for AI-assisted design work.

What you get

  • A tool inventory: what to expose first, what to keep out, and why.
  • A production MCP server inside your application or beside it, with tests, authorization, logging and rate limits.
  • Connection guides for the clients your team uses (Claude, ChatGPT, Cursor, internal agents).
  • A pattern your team can extend tool by tool.

When it fits

You have a system with valuable data and well-defined operations, and people who keep asking for "just one more report" or "a quick way to check X". If the answers live in your database and the rules live in your code, an MCP server is usually the shortest path to a natural-language layer on top.

Knowledge as Code: Connecting Business Knowledge to AI with Git and MCP Records answer WHAT and WHO. Knowledge answers WHY and HOW. Keep that knowledge in Git as one source of truth, edit it in a simple web editor, and serve it to every AI tool through MCP. AI 6 min MCP in Laravel Applications: Adding a Natural Language Layer to Your Existing System How to add MCP to a Laravel app as a controlled natural-language interface over existing services, with permissions, auditability, and production-safe tool boundaries. Laravel 11 min Sanzo Wada's Colors in Your Code: How I Brought a 1930s Color Dictionary to AI and Web Development A story about aesthetic, a forgotten Japanese artist, and turning 348 curated palettes into an MCP server that actually helps me build better interfaces. Reflections 12 min