Files
integration/Plugins/BlueprintMCP/README.md

2.8 KiB

= History

This plugin was originally vibe-coded by Claude Code. It was then posted to David Gundry's github account, here:

https://github.com/mirno-ehf/ue5-mcp

He released it under the MIT license.

How do I know it was vibe coded? Because he says so:

For Humans:

You're welcome here, but probably not in the way you'd expect. This project is built and maintained entirely by AI coding agents — Claude Code, Cursor, Copilot Workspace, and the like. We don't accept human-written code or human-opened issues.

Huh, interesting. I (Josh Yelon) downloaded the code, and evaluated it. I was curious what vibe coding could do. Here's what I found:

  • The code, overall, had issues, but in the end, it wasn't that bad. It did work, mostly - and that matters. I wanted my own working MCP server, and starting from a place where you have working code is a lot easier than starting from a blank slate.

  • Claude really doesn't build any mechanisms to enforce consistency. For example: there were all the handlers, and then in a different file, declarations of all the handlers, then in another file registrations of all the handlers with the webserver, then in another place a list of all the handlers that require undo support, then in an entirely other directory, a list of all the handlers and their parameters. If any of these lists got out of sync, it would break.

  • Claude doesn't seem to care at all about extra layers upon layers, or about dependencies. Rather than building an MCP server in an unreal plugin, it built a web server in an unreal plugin, then built an MCP-to-web translation program in javascript. Requests to the server were getting translated from json into URL parameters and then back into json. Ouch. The javascript required installation of about a thousand javascript libraries, some of which were not easy to install. Why not just build an MCP server in the Unreal plugin directly, skipping all the dependencies and translation layers?

  • Claude will repeat code over and over. I found endless places where there were 10 copies of the same function, with trivial variations, that could have all been merged into one function with a parameter or two. When it does repeat code, the repetitions are not generally consistent with each other: one variant might have a bug, whereas another is fine.

  • There were lots of little edge-case bugs throughout the code. Claude is actually not bad about noticing edge cases, but it misses some.

Despite all this, it was much easier to start from something than to start from nothing.

So, I undertook a massive refactoring effort. I did use Claude Code extensively - in fact, I'd say Claude did 70% of the work. But I monitored every step, and constantly pushed Claude hard to use better software engineering practices.

The result, I think, is a pretty clean MCP server.