Skip to content

MCP with type HTTP spikes CPU 100% #134

@sfavorite

Description

@sfavorite

When running a formation that has a MCP server and type is HTTP the runtime hits 100% and stays there even after letting it run 10 minutes. Running with type: command work as expected.

Command that starts 100% cpu

muxi up

muxi down <-- cpu goes to normal

Output from top

top - 09:35:05 up  4:58,  2 users,  load average: 1.45, 1.18, 1.06
Tasks: 653 total,   2 running, 650 sleeping,   0 stopped,   1 zombie
%Cpu(s):  6.4 us,  0.9 sy,  0.0 ni, 92.3 id,  0.1 wa,  0.2 hi,  0.1 si,  0.0 st 
MiB Mem :  61082.9 total,  25221.6 free,  13585.6 used,  22364.2 buff/cache     
MiB Swap:   8192.0 total,   8192.0 free,      0.0 used.  47497.4 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                               
 **120176 scot      20   0 4002652   1.2g 176776 R  99.4   2.0   6:33.02 python**    

formation.afs

schema: "1.0.0"

id: "testmcp"
name: "Testmcp"
description: "A new MUXI formation"
version: "1.0.0"

server:
  host: "0.0.0.0"
  port: 8271
  api_keys:
    admin_key: "${{ secrets.FORMATION_ADMIN_API_KEY }}"
    client_key: "${{ secrets.FORMATION_CLIENT_API_KEY }}"

overlord: {}

llm:
  api_keys:
    ollama: "local"
  models:
    - text: "ollama/gpt-oss:20b@macbook:11434"
      base_url: "http://macbook:11434/v1"

scheduler:
  timezone: "UTC"

mcp:
  servers:
    - simplemcp

## mcps 
schema: "1.0.0"

id: simplemcp
description: Greeting and add two number

type: http
endpoint: "http://localhost:8000/mcp"

retry_attempts: 3
timeout_seconds: 30

muxi cli version

muxi --version                                                                                                                                                                                                                                         43s Py base
muxi version 0.20260324.0

muxi server version

9:27AM INF MUXI Server (v0.20260323.0): Starting...
9:27AM INF Installation: User-level

muxi runtime version

9:28AM INF Resolved 'latest' to actual version version=0.20260326.3

Output of Proc

cat /proc/120176/cmdline | tr '\0' ' '; echo                                                                                                                                                                                                               
tr '\0' '\n' < /proc/120176/environ | sed 's/^/ENV: /'
/usr/local/bin/python -m muxi.runtime.utils.run_formation /formation --port 8002 --host 127.0.0.1 
ENV: APPTAINER_APPNAME=
ENV: APPTAINER_BIND=/formation,/tmp,/opt/muxi-tools/bin/node,/opt/muxi-tools/bin/npm,/opt/muxi-tools/bin/npx,/opt/muxi-tools/bin/uv,/opt/muxi-tools/bin/uvx,/opt/muxi-tools/bin/git,/opt/muxi-tools/bin/curl,/opt/muxi-tools/bin/wget,/opt/muxi-tools/bin/jq,/opt/muxi-tools/bin/tar,/opt/muxi-tools/bin/gzip,/opt/muxi-tools/bin/unzip,/opt/muxi-tools/bin/ssh,/opt/muxi-tools/bin/sqlite3,/opt/muxi-tools/bin/python3,/opt/muxi-tools/bin/ffmpeg,/opt/muxi-tools/bin/ffprobe,/opt/muxi-tools/bin/pdftotext,/opt/muxi-tools/bin/pdfinfo,/opt/muxi-tools/bin/dot,/opt/muxi-tools/bin/make,/opt/muxi-tools/bin/gcc,/opt/muxi-tools/bin/g++,/opt/muxi-tools/bin/cc,/opt/muxi-tools/lib/lib,/opt/muxi-tools/lib/lib64,/opt/muxi-tools/lib/lib,/opt/muxi-tools/lib/lib64,/opt/muxi-tools/lib/node_modules,/opt/muxi-tools/share/fonts,/opt/muxi-tools/share/certs/ca-certificates.crt
ENV: APPTAINER_COMMAND=exec
ENV: APPTAINER_CONTAINER=/home/scot/.muxi/server/runtimes/muxi-runtime-0.20260326.3-linux-amd64.sif
ENV: APPTAINER_ENVIRONMENT=/.singularity.d/env/91-environment.sh
ENV: APPTAINER_NAME=muxi-runtime-0.20260326.3-linux-amd64.sif
ENV: COLORTERM=truecolor
ENV: CONDA_DEFAULT_ENV=base
ENV: CONDA_EXE=/home/scot/miniforge3/bin/conda
ENV: CONDA_PREFIX=/home/scot/miniforge3
ENV: CONDA_PROMPT_MODIFIER=(base) 
ENV: CONDA_PYTHON_EXE=/home/scot/miniforge3/bin/python
ENV: CONDA_SHLVL=1
ENV: DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
ENV: DEBUGINFOD_IMA_CERT_PATH=/etc/keys/ima:
ENV: DEBUGINFOD_URLS=ima:enforcing https://debuginfod.fedoraproject.org/ ima:ignore 
ENV: DESKTOP_SESSION=gnome
ENV: DISPLAY=:0
ENV: EDITOR=/usr/bin/nano
ENV: FIRECRAWL_API_KEY=fc-bee863a9781142d3ba9bcef6400c835f
ENV: FLATPAK_TTY_PROGRESS=1
ENV: FONTCONFIG_PATH=/opt/muxi-tools/share/fonts
ENV: FORMATION_ID=testmcp
ENV: GDMSESSION=gnome
ENV: GDM_LANG=en_US.UTF-8
ENV: GIO_LAUNCHED_DESKTOP_FILE_PID=16536
ENV: GNOME_SETUP_DISPLAY=:1
ENV: GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D
ENV: GPG_TTY=/dev/pts/15
ENV: HF_HOME=/opt/hf-cache
ENV: HISTCONTROL=ignoredups
ENV: HISTSIZE=50000
ENV: HOME=/home/scot
ENV: HOST=127.0.0.1
ENV: HOSTNAME=ryzen
ENV: INVOCATION_ID=b799d67ed6fa4f37ac1928820f0086bf
ENV: JOURNAL_STREAM=9:45231
ENV: KDEDIRS=/usr
ENV: LANG=C.UTF-8
ENV: LC_ALL=C.UTF-8
ENV: LD_LIBRARY_PATH=/.singularity.d/libs
ENV: LESS=-R
ENV: LESSOPEN=||/usr/bin/lesspipe.sh %s
ENV: LOGNAME=scot
ENV: LSCOLORS=Gxfxcxdxbxegedabagacad
ENV: LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;37;41:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.7z=01;31:*.ace=01;31:*.alz=01;31:*.apk=01;31:*.arc=01;31:*.arj=01;31:*.bz=01;31:*.bz2=01;31:*.cab=01;31:*.cpio=01;31:*.crate=01;31:*.deb=01;31:*.drpm=01;31:*.dwm=01;31:*.dz=01;31:*.ear=01;31:*.egg=01;31:*.esd=01;31:*.gz=01;31:*.jar=01;31:*.lha=01;31:*.lrz=01;31:*.lz=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.lzo=01;31:*.pyz=01;31:*.rar=01;31:*.rpm=01;31:*.rz=01;31:*.sar=01;31:*.swm=01;31:*.t7z=01;31:*.tar=01;31:*.taz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tgz=01;31:*.tlz=01;31:*.txz=01;31:*.tz=01;31:*.tzo=01;31:*.tzst=01;31:*.udeb=01;31:*.war=01;31:*.whl=01;31:*.wim=01;31:*.xz=01;31:*.z=01;31:*.zip=01;31:*.zoo=01;31:*.zst=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.jxl=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.m4a=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.oga=01;36:*.opus=01;36:*.spx=01;36:*.xspf=01;36:*~=00;90:*#=00;90:*.bak=00;90:*.crdownload=00;90:*.dpkg-dist=00;90:*.dpkg-new=00;90:*.dpkg-old=00;90:*.dpkg-tmp=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:*.swp=00;90:*.tmp=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:
ENV: MAIL=/var/spool/mail/scot
ENV: MAMBA_EXE=/home/scot/miniforge3/bin/mamba
ENV: MAMBA_ROOT_PREFIX=/home/scot/miniforge3
ENV: MANAGERPID=1495
ENV: MANAGERPIDFDID=1496
ENV: MEMORY_PRESSURE_WATCH=/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/session.slice/org.gnome.SettingsDaemon.MediaKeys.service/memory.pressure
ENV: MEMORY_PRESSURE_WRITE=c29tZSAyMDAwMDAgMjAwMDAwMAA=
ENV: MOZ_GMP_PATH=/usr/lib64/mozilla/plugins/gmp-gmpopenh264/system-installed
ENV: MUXI_ENV=production
ENV: MUXI_RCE_TOKEN=rce_fb1757c031f145b84f7e163c950c76273eca0ccbcb959ced6e32e10350171945
ENV: MUXI_RCE_URL=http://127.0.0.1:7891
ENV: MUXI_SERVER_URL=http://localhost:7890
ENV: NODE_PATH=/opt/muxi-tools/lib/node_modules
ENV: NVM_BIN=/home/scot/.nvm/versions/node/v22.14.0/bin
ENV: NVM_CD_FLAGS=-q
ENV: NVM_DIR=/home/scot/.nvm
ENV: NVM_INC=/home/scot/.nvm/versions/node/v22.14.0/include/node
ENV: OLDPWD=/home/scot/.muxi/server
ENV: P9K_SSH=0
ENV: P9K_TTY=old
ENV: PAGER=less
ENV: PATH=/opt/muxi-tools/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV: PNPM_HOME=/home/scot/.local/share/pnpm
ENV: PORT=8002
ENV: PROMPT_COMMAND=PS1="Apptainer> "; unset PROMPT_COMMAND
ENV: PS1=Apptainer> 
ENV: PTYXIS_PROFILE=6cd45ad8ba1cb1cfb37270df6772fc2d
ENV: PTYXIS_VERSION=49.3
ENV: PWD=/home/scot/muxi_agents/testmcp
ENV: PYTHONDONTWRITEBYTECODE=1
ENV: PYTHONPATH=/app/src:/app
ENV: PYTHONUNBUFFERED=1
ENV: PYTHON_SHA256=de6517421601e39a9a3bc3e1bc4c7b2f239297423ee05e282598c83ec0647505
ENV: PYTHON_VERSION=3.10.20
ENV: QT_IM_MODULE=ibus
ENV: QT_IM_MODULES=wayland;ibus
ENV: SHELL=/usr/bin/zsh
ENV: SHLVL=1
ENV: SINGULARITY_BIND=/formation,/tmp,/opt/muxi-tools/bin/node,/opt/muxi-tools/bin/npm,/opt/muxi-tools/bin/npx,/opt/muxi-tools/bin/uv,/opt/muxi-tools/bin/uvx,/opt/muxi-tools/bin/git,/opt/muxi-tools/bin/curl,/opt/muxi-tools/bin/wget,/opt/muxi-tools/bin/jq,/opt/muxi-tools/bin/tar,/opt/muxi-tools/bin/gzip,/opt/muxi-tools/bin/unzip,/opt/muxi-tools/bin/ssh,/opt/muxi-tools/bin/sqlite3,/opt/muxi-tools/bin/python3,/opt/muxi-tools/bin/ffmpeg,/opt/muxi-tools/bin/ffprobe,/opt/muxi-tools/bin/pdftotext,/opt/muxi-tools/bin/pdfinfo,/opt/muxi-tools/bin/dot,/opt/muxi-tools/bin/make,/opt/muxi-tools/bin/gcc,/opt/muxi-tools/bin/g++,/opt/muxi-tools/bin/cc,/opt/muxi-tools/lib/lib,/opt/muxi-tools/lib/lib64,/opt/muxi-tools/lib/lib,/opt/muxi-tools/lib/lib64,/opt/muxi-tools/lib/node_modules,/opt/muxi-tools/share/fonts,/opt/muxi-tools/share/certs/ca-certificates.crt
ENV: SINGULARITY_CONTAINER=/home/scot/.muxi/server/runtimes/muxi-runtime-0.20260326.3-linux-amd64.sif
ENV: SINGULARITY_ENVIRONMENT=/.singularity.d/env/91-environment.sh
ENV: SINGULARITY_NAME=muxi-runtime-0.20260326.3-linux-amd64.sif
ENV: SSH_ASKPASS=/usr/bin/ksshaskpass
ENV: SSH_AUTH_SOCK=/run/user/1000/gcr/ssh
ENV: SSL_CERT_FILE=/opt/muxi-tools/share/certs/ca-certificates.crt
ENV: SYSTEMD_EXEC_PID=4327
ENV: TERM=xterm-256color
ENV: USER=scot
ENV: USERNAME=scot
ENV: USER_PATH=/home/scot/.local/share/pnpm:/home/scot/.nvm/versions/node/v22.14.0/bin:/home/scot/miniforge3/bin:/home/scot/miniforge3/condabin:/home/scot/bin:/home/scot/.local/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/home/scot/.lmstudio/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
ENV: VTE_VERSION=8203
ENV: WAYLAND_DISPLAY=wayland-0
ENV: XAUTHORITY=/run/user/1000/.mutter-Xwaylandauth.A555M3
ENV: XDG_CURRENT_DESKTOP=GNOME
ENV: XDG_DATA_DIRS=/home/scot/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/
ENV: XDG_MENU_PREFIX=gnome-
ENV: XDG_RUNTIME_DIR=/run/user/1000
ENV: XDG_SESSION_CLASS=user
ENV: XDG_SESSION_DESKTOP=gnome
ENV: XDG_SESSION_TYPE=wayland
ENV: XML_CATALOG_FILES=file:///home/scot/miniforge3/etc/xml/catalog file:///etc/xml/catalog
ENV: XMODIFIERS=@im=ibus
ENV: ZSH=/home/scot/.oh-my-zsh
ENV: _=/home/scot/.local/bin/muxi-server
ENV: _CE_CONDA=
ENV: _CE_M=
ENV: _P9K_SSH_TTY=/dev/pts/15
ENV: _P9K_TTY=/dev/pts/15
ENV: _bind_host=127.0.0.1
ENV: _port=8002

FastMCP code

from fastmcp import FastMCP

mcp = FastMCP("My MCP Server")


@mcp.tool
async def greet(name: str) -> str:
    """ Greet the user by name. """
    return f"Hellos, {name}!"

@mcp.tool()
async def get_users() -> str:
    """ Get a list of Techo Corp users. """
    print("Looking up users...")
    return "Cindy Rella"

@mcp.tool
async def add_numbers(a: int, b: int) -> int:
    """Add two numbers together."""
    return a + b

@mcp.tool(description="Get the current weather for a city.")
async def get_weather(city: str) -> str:
    """Get the current weather for a city."""
    # This would normally call a weather API
    return f"The weather in {city} is sunny and 72°F"


# Run the server
if __name__ == "__main__":
    #mcp.run(transport="streamable-http", stateless_http=True)
    mcp.run(transport="streamable-http")

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions