floci-mcp-unofficial unofficial catalog: loading whole cloud skills catalog guide docs github →

Floci
for agents.

An MCP server that lets an AI agent reach your local AWS, Azure, GCP and OCI, and the Docker recipes, through two to five tools (about 1K tokens) with reads and writes kept apart. The curated tools below are the named alternative. Recipes are the Docker stacks it can start for you.

Unofficial community project. Not affiliated with or endorsed by the Floci project. Floci does the emulation; this server only talks to it. Support floci-io/floci.

whole cloud

Five tools. Every cloud.

The generic toolset can address every operation in the boto3 service models (~18,000) and reaches Azure, GCP, OCI and the Docker recipes, with five tools. What answers is what Floci emulates: list_services(probe=true) shows which AWS services do. The code toolset does the same by running Python, so a task that chains calls or filters a big result costs one round trip.

search_operations("send a message to a queue")   # -> sqs.SendMessage (write)
describe_operation("aws", "sqs", "SendMessage")   # parameters, required ones marked
call_write("aws", "sqs", "SendMessage",
           {"QueueUrl": "...", "MessageBody": "hi"})

code_read("""
buckets = aws("s3", "ListBuckets")["Buckets"]
topics  = call("gcp", "pubsub", "ListTopics")
result  = {"s3": len(buckets), "gcp": topics["body"]}
""")
context

About 1K tokens.

armtools~tokens
curated, default909,300
curated, all13515,600
generic5940
code2580

Reads and writes are separate tools, so FLOCI_READ_ONLY=1 removes the writer. The rule is also enforced inside the gateway: code_read cannot write whatever the code says. Classification is default-deny and is tested against every operation of every service model. Secret values need FLOCI_ALLOW_SECRET_VALUES=1.

Recipes cost no context. ListRecipes marks the ones Floci already emulates natively (RDS for postgres, ElastiCache for redis...), checked against your running Floci. DeployRecipe waits for RUNNING and moves a taken default port to a free one.

The code sandbox is a guardrail, not isolation. Point it at local emulators only, never at a real cloud.

–tools
–recipes
–skills
4clouds
skills

Skills first.

The tools are the hands. Skills are the playbook: short instructions an agent loads on demand that say which tools to call, in what order, and when to stop and ask. Install them and the agent stops guessing.

install as a Claude Code plugin
/plugin marketplace add pmaojo/floci-mcp-unofficial
/plugin install floci@floci-mcp-unofficial
or just the skills
mkdir -p ~/.claude/skills
ln -s "$PWD"/skills/* ~/.claude/skills/      # or cp -R skills/* ~/.claude/skills/

A skill that needs a toolset which is not enabled by default says so. Ask for it with FLOCI_TOOLSETS and restart the server.

install

Three commands.

git clone https://github.com/pmaojo/floci-mcp-unofficial
cd floci-mcp-unofficial
uv sync && uv run python floci_mcp.py

Needs Python 3.10+, uv and a running Floci. Docker for recipes. By default it registers the default toolsets only; set FLOCI_TOOLSETS=all for everything, or FLOCI_READ_ONLY=1 to drop every tool that writes.

client config

Point your agent at it.

{
  "mcpServers": {
    "floci": {
      "command": "uv",
      "args": ["run", "--project", "/path/to/floci-mcp-unofficial",
               "python", "/path/to/floci-mcp-unofficial/floci_mcp.py"],
      "env": {
        "AWS_ENDPOINT_URL": "http://localhost:4566",
        "FLOCI_AZURE_ENDPOINT": "http://localhost:4577",
        "FLOCI_GCP_ENDPOINT": "http://localhost:4588",
        "FLOCI_OCI_ENDPOINT": "http://localhost:4599"
      }
    }
  }
}
cookbook

Ask it like this.

Things to say to the agent, and what it ends up calling. If a toolset is missing, the agent switches it on.

how it works

Thin on purpose.

agent (Claude, Cursor, Codex, ...)
        |  MCP over stdio
        v
floci_mcp.py  -- toolsets decide which tools are registered
        |
        |-- boto3 ----------------------------> Floci core  :4566  (AWS)
        |-- REST (per provider) --------------> Floci-AZ    :4577
        |                                       Floci-GCP   :4588
        |                                       Floci-OCI   :4599
        `-- in-process backend
              |-- aws CLI          run_local_aws_cmd, Glue catalog, Lambda deploy
              `-- docker compose   marketplace, pipeline  --> recipes/
troubleshooting

When it does not work.

These are the messages the server returns.

Only if you keep the curated toolsets

suggest_toolsets

142 tools in 10 toolsets. Which ones does this task need? The generic and code toolsets make the question unnecessary.

★★★★★ “I said messages are stuck and it said messaging, ops. Ten out of ten.” — a test fixture
FLOCI_DECIDER=openrouter-jev OPENROUTER_API_KEY=... uv run python floci_mcp.py

*Tested end to end against a very convincing fake, not yet against a live provider. Needs an API key. The probabilities are the model's, not ours. The OpenRouter path is alpha. Not a substitute for reading the tool list. May contain nouls (that is what the request calls a yes/no).

toolsets

Not all 142 at once.

A client sends every tool definition on every conversation, and models pick worse among many similar tools. Only the enabled toolsets are registered.

toolsettoolsdefault
FLOCI_TOOLSETS=core,storage    # only these
FLOCI_TOOLSETS=all             # everything
FLOCI_READ_ONLY=1              # drop every tool that writes
FLOCI_TOOLSETS_ALLOWED=ops     # optional cap; unset: the agent may enable any
clouds

Four runtimes, plus recipes.

cloudportcovers
AWS4566the full surface, through boto3
Azure4577data plane plus 15 ARM resource types that answer (storage, SQL, Redis, VMs, AKS...)
GCP458820 APIs, 2,283 operations from Google's discovery documents; 70 list reads verified
OCI4599all 8 services: list, get, create, delete
recipesDocker35 local stacks, reached as the cloud recipes

Start with list_clouds: it says which runtimes answer.

configuration

Environment.

variabledefault
AWS_ENDPOINT_URLhttp://localhost:4566
FLOCI_AZURE_ENDPOINThttp://localhost:4577
FLOCI_GCP_ENDPOINThttp://localhost:4588
FLOCI_OCI_ENDPOINThttp://localhost:4599
FLOCI_TOOLSETScore,storage,messaging,compute
FLOCI_TOOLSETS_ALLOWEDall toolsets
FLOCI_READ_ONLYoff
SIDECAR_STATE_DIR~/.floci-mcp
safety

It can change your machine.

  • 60 tools write. FLOCI_READ_ONLY=1 removes them; annotations let a client confirm first.
  • Cloud secret tools return names, never values. get_secret_value (AWS) does return the value.
  • run_local_aws_cmd is full aws CLI access: a command can pass its own --endpoint-url.
  • proxy_http_request requests any URL from the host.
  • Tool descriptions steer the model. list_toolsets returns a SHA-256 of every registered definition: pin it and compare after updates.
  • Hybrid tools can use real AWS credentials. They live in hybrid, off at the start, but an agent may enable it unless you cap it with FLOCI_TOOLSETS_ALLOWED.
  • The marketplace starts containers on your Docker. Teardown removes their volumes.