Skip to content

Portal MCP

Personal Project

Portal MCP

Every time I changed one of my Battlefield 6 Portal modes, I had to open the Portal website, find the experience and upload the script, the strings file and sometimes the map file by hand. Setting up a new one meant clicking through the same settings all over again. So I wrote an MCP server that does it for me. When Claude and I finish a change, it uploads everything and tells me if the script compiled.

What It Does

  • Uploads my files: The script, strings and map files go straight from my project folder to the experience. It backs up what was live first and reports any compile errors.
  • Reads every setting: All 215 builder settings, team sizes and the map rotation, in plain names instead of digging through menus.
  • Changes settings: Team sizes, friendly fire, bot backfill, the name and description, without opening the builder.
  • Creates and publishes: A new mode starts as a copy of one of my others, so most settings are already right. Then it can publish it.
  • Nothing happens without me: Every change shows a preview first and waits for my OK. There's no delete on purpose.

Tech Stack:

JavaScript Battlefield 6 Node.js Model Context Protocol Claude Code

How I Built It

There's no public API for Portal, so I looked at how the Portal website talks to EA's servers. It sends protobuf messages, and the layouts for every one of them are sitting in the site's own code. I pulled them out and wrote a small encoder and decoder in plain Node with no dependencies.

Nothing Gets Lost

When I replace one file, every other field is sent back exactly as the server gave it to me. Even the ones I haven't figured out yet.

The Hidden Rules

The website quietly does things the server expects. An empty rules workspace fails the compile, strings files need their own flag and map files have to be linked to a map. I found each one on a throwaway experience.

My Own Login

It uses the session from my browser and acts only as me. It never sees my password.

The First Test

I had Claude build a tiny experience from scratch: a platform in the sky over Redline Storage with some lights and a HELLO WORLD screen. It created it, uploaded the files and published it. I never opened the website.

Looking for someone to bring your ideas to life? Let's chat about how I can help make it happen.

Get In Touch