本文へスキップ

このページはまだお使いの言語では用意されていません。英語の文章をご覧いただいています。

MCP

A server for AI assistants

ARMANOS ships a small MCP server. Your AI assistant uses it to list, create, change, open and close browser profiles, by calling the same local API your own scripts call.
10
Tools exposed
127.0.0.1 by default
Address it dials
stdio, JSON-RPC
Transport
Node.js
You install

What MCP does here

MCP is a shared language between an AI assistant and small programs that do real work. The assistant asks for a named action with named arguments, the program performs it and answers.

ARMANOS ships one such program: a single Node file with no third-party dependencies. Your AI tool starts it as a child process and talks to it over standard input and output.

No new road into your profiles

The server does no browsing of its own. Each tool call becomes exactly one request to the local automation API on loopback, the same interface a script of yours would use.

So the assistant is not given a new way into your profiles. It is given the way that already existed, with the same token and the same rules.

The app still has to be running

The MCP server is a translator, not a copy of ARMANOS. If the app is closed or the local API is switched off, every tool answers with a plain sentence saying what to do: open the app if it is closed, turn the API on if it is off.

Ten tools ten routes

There are exactly ten tools, and every one of them maps to a route the local API already implements. Nothing on the list is a promise for later.

Each tool carries a description written for a model rather than for a menu. It says what comes back, so the assistant picks a call instead of guessing at one.

ToolWhat it doesRoute it calls
get_statusChecks the local API is reachable and reports the app versionGET /status
list_profilesEvery profile, or one page filtered by search, tags, group, status and running, and like the Filters window by system, exit country and exit IP, kernel, no tags and last run. Profile notes are left outGET /api/v1/profile/list
get_active_profilesThe ids of profiles with a window open right nowGET /api/v1/browser/active
launch_profileOpens a window and returns its debugging endpointPOST /api/v1/browser/start
stop_profileCloses every window of one profile and counts themPOST /api/v1/browser/stop
create_profileCreates a profile from a name, scenario, fingerprint template, proxy, notes, tags and location for sites; without presetId the default template of this computer fills what is not sent, and presetId none skips it. Profile notes are left out of the answer, the ones a template put there tooPOST /api/v1/profile/create
update_profileChanges only the fields you send, with the checks of the profile window, including fingerprint values set by hand, the site login and the 2FA key. Profile notes are left out of the answer, and so are the site password and the keyPOST /api/v1/profile/update
delete_profileMoves a profile to the recycle bin, restorable from the appPOST /api/v1/profile/delete
get_one_time_codeThe current code and the seconds leftGET /api/v1/profile/code
list_proxiesThe saved proxy library, passwords excludedGET /api/v1/proxy/list

What to tell the assistant

Everything you write to the assistant goes to its provider. Enter proxy passwords, site passwords and 2FA keys in the app, not in the chat.

The eight requests below are also in the app, on the For developers screen, with a Copy button. The ten tools of the MCP server carry out each of them.

  • Check that ARMANOS is reachable and tell me which profiles are open right now

  • Create 5 profiles named Shop-01 to Shop-05 in the group "Shops", Windows template

  • Open all profiles in the group "Shops" and tell me which did not open and why

  • Close all open profiles

  • Show the proxies from my library that failed their last check

  • How many profiles do I have in each group, and which of them are protected by a password

  • Give me the two-factor code for the profile "Etsy-2"

  • Move the profiles tagged "test" to the trash

The same profiles you see

There is no second store and no export. The assistant sees the same records you see on the Profiles screen, and a profile it creates shows up in the app immediately.

The assistant passes the same gate you pass when you press a button in the app. A locked licence refuses a launch, a create beyond your plan quota fails with the reason the app itself would give, and there is no relaxed mode on this path.

A launch comes back with the debugging endpoint when one exists. On ARMANOS Browser each profile gets its own endpoint, so a driving tool attaches to exactly that profile.

  • Identifiers

    Profile id, name and scenario. The id is what launch, stop, delete and the code tool take as their argument.

  • Group and fingerprint template

    Where the profile is filed and which of the five templates it wears.

  • Proxy summary

    Protocol, host and port. The login and password stay inside the app.

  • Tags and times

    Enough for the assistant to sort and choose without opening anything.

ARMANOS profiles screen listing profiles with their group, proxy and status
The assistant gets these same rows line for line, with the proxy reduced to protocol, host and port.

Connecting takes four steps

Everything you paste is generated for you. The app knows the script path inside the installation, the address the API is really listening on and your current token.

MCP status on the panel follows the API rather than a setting of its own. It reads Ready only while the local API is actually listening, so you never paste a config for a server that is not there.

  1. 1

    Turn on the local API

    Open For developers in ARMANOS and flip the switch.

  2. 2

    Install Node.js

    Your AI tool launches the server with the node command.

  3. 3

    Copy the client configuration

    One button copies the whole block, path, address and token already filled in.

  4. 4

    Paste it and restart the client

    Any MCP client reads a file of the same shape.

The ARMANOS For developers screen showing the local API address and the access token
The For developers screen: address, token, MCP status and the config block you copy.

What the config holds

There is no account to create and no key from us. For the installed app two environment variables are the entire configuration, and the server reads them once when your AI tool starts it. On every call it also looks in the app's data folder for the port the API really listens on, and uses that port when the token there matches its own.

The path in the arguments points inside the installed app. On Linux builds where that path changes from one start to the next, the app copies the script next to its own data, so the path you set once keeps working.

command
node
args[0]
…/Resources/mcp/armanos-mcp-server.js
env.ARMANOS_API_URL
http://127.0.0.1:50325
env.ARMANOS_API_TOKEN
the token shown on the For developers screen

The whole block sits under mcpServers.armanos, the shape most MCP clients read.

The token stays local

The API listens on loopback and nowhere else. It is off until you switch it on, and the first run writes a random 48-character token into a file inside your account's folder.

Loopback on its own would not be a boundary. The pages you visit run on this machine too, so the API refuses a request that looks like it came from a page before the status route, and such a page does not learn the version.

  • Bound to loopback

    Another computer cannot reach it, and neither can anything else on your network.

  • Token on every call

    Sent as a header. Only the status route is open, and only to a program on this machine.

  • Pages get a refusal

    The API refuses a request carrying the marks of a web page before the status route.

  • No credentials in answers

    The proxy listing drops passwords, and a profile carries protocol, host and port only.

  • Codes not keys

    The code tool returns the code and the seconds left. The 2FA secret itself never leaves the app.

The other end is your AI tool

One honest line about the other end. The server sends nothing to us and needs no internet, but whatever a tool returns lands in your assistant's context, and where that context is processed is a property of your AI tool.

That is why list_profiles, create_profile and update_profile leave out profile notes, where people keep logins and recovery codes, list_profiles does not search them, and the server has no cookie tools.

When a call fails

Neither a bad frame, an unreachable API nor a malformed reply will bring your assistant down. Instead of silence it gets a normal tool error and reads it out to you.

An API error reaches you in its own words rather than reworded. A refusal about a plan limit reaches you as a plan limit, not as a generic failure.

SituationWhat the assistant is told
App closed or local API offThat the local API is not reachable at the address it dialled, and what to do: open the app or switch the API on.
Token does not matchAn API error with a hint to compare the token in the config with the one on the panel.
Unknown profile idThe refusal the API itself produced, passed through unchanged.
Reply over five megabytesA message asking for a narrower request, instead of a call that never returns.
Launch runs past ninety secondsA timeout naming the API. The window may still finish opening, so check the app before retrying.

What this does not do

  • It does not click, type or navigate inside a page. It opens and closes windows; driving the page needs a debugging client attached to the endpoint a launch returned.
  • It does not run your saved automation flows. Those routes exist in the local API, but no MCP tool calls them today.
  • It does not set a profile password or cookies. update_profile turns those fields down by name, so they stay a job for the app.
  • It does not open a profile without a window just once. launch_profile has no such option, and update_profile with headless set to true makes the profile open without one every time.
  • It does not work across a network. The API answers loopback only, so your AI tool and ARMANOS have to sit on the same computer.

How to check

Every claim above has an address in the repository.

Ten tools, each bound to one local API route
apps/desktop/src/mcp/armanos-mcp-server.js
The token gate, and the refusal of anything that looks like a web page
apps/desktop/src/lib/local-api.js · apps/desktop/test/local-api-gate.js
The config block the app generates, path, address and token included
apps/desktop/src/manager/renderer.js · apps/desktop/src/main/main.js
The script path stays valid after a restart, AppImage included
apps/desktop/src/main/main.js · apps/desktop/test/путь-mcp-переживает-перезапуск.js
A random token, and the local API off until you turn it on
apps/desktop/src/lib/api-config.js
The server finds the port the API really listens on, and says whether the API is off or the app is closed
apps/desktop/src/mcp/armanos-mcp-server.js · apps/desktop/test/mcp-находит-сдвинутый-порт.js
list_profiles filters with the local API's own arguments and leaves notes out
apps/desktop/src/mcp/armanos-mcp-server.js · apps/desktop/test/api-список.js
The Filters window arguments in list_profiles and the local API give the same profiles as the window itself
apps/desktop/src/manager/отбор-списка.js · apps/desktop/test/api-отборы-окна-живьём.js
create_profile takes the default template of this computer, presetId none and another template; the template notes are not in the answer; a bad presetId is refused in words
apps/desktop/src/mcp/armanos-mcp-server.js · apps/desktop/test/заготовка-api-и-mcp-живьём.js

Questions

How long will the assistant wait for an answer?
A launch is allowed ninety seconds and every other call fifteen. Opening a window on ARMANOS Browser waits for the engine to publish its debugging port, which takes longer than reading a list.
Does the server batch or queue anything?
No. Each tool call is one request and one answer, so your client's tool log shows exactly what was asked and what came back.
What if the usual port is already taken?
ARMANOS binds a free port instead and says so on the panel. The block you copy then carries the port actually in use, not the one that failed. A block pasted earlier keeps the old address, and the server looks up the new port in the app's data folder by itself.
I regenerated the token and every call fails. Why?
The block you pasted still carries the old one, and the API rejects it at once. Copy the block again and restart your AI client.
Why does the assistant need my profile list first?
It does not know your ids, so it starts by listing and matches your words against names, groups and tags. Only then does it call a tool that takes a profile id.

Turn it on and connect your assistant

In ARMANOS, open For developers, copy the config block and paste it into your AI tool.