Uniprof

io.github.indragiekPublished by GitHub account indragiekv0.3.4Updated Oct 24, 2026

Universal CPU profiler designed for humans and AI agents

VerifiedSTDIODesktop onlyDeveloper ToolsData & Analytics

Overview

AI-generated overview

Uniprof is a local CPU profiler MCP server that lets an assistant profile applications across many language runtimes and analyze hotspots.

What you can do
Profile applications in Python, Node.js, Ruby, PHP, JVM, .NET, BEAM and native code without code changes or added dependencies, with the profiler chosen automatically from the command being run. Record profiles to a file for later use. Analyze recorded profile data to identify hotspots. Visualize results as a flamegraph in the browser. Check the environment and set up the MCP server for supported clients.
When to use it
Useful when you want an assistant to investigate why an application is slow, find CPU hotspots, or capture and compare profiles of scripts and services across different language runtimes.
Requirements
Runs as a local process via npm (npx uniprof mcp run) on macOS or Linux; Windows is not supported except through WSL2. Docker is recommended and used by default for containerized profiling; host mode needs the individual profilers installed. Native profiling needs debug information and frame pointers in the build.
Before you install
Profiling tools can require elevated privileges, and container mode mounts your workspace into a Docker container and executes the program there. It runs the target application under a profiler, so only profile code you trust. No credentials or API keys are declared.

Installation

In SourceWeft

  1. Open Uniprof in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

uniprof

uniprof simplifies CPU profiling for humans and AI agents. Profile any application without code changes or added dependencies.

bash
# Profile and analyze any app in one stepnpx uniprof python script.py

Table of Contents

Supported Platforms

uniprof implements a common interface over multiple profilers that specialize in different platforms and runtimes. It automatically detects which profiler to use based on the command being executed, runs the profiler, transforms the varying output formats into a single format, and runs statistical analysis on the data to identify hotspots.

PlatformProfilerContainerHostMin Version
Pythonpy-spy✅✅Python 3.7+
Node.js0x✅✅Node 14+
Rubyrbspy✅✅Ruby 2.5+
PHPExcimer✅✅PHP 7.2+
JVMasync-profiler✅✅Java 8+
.NETdotnet-trace✅✅.NET 5+
BEAMperf✅✅*OTP 24+
Native (macOS)Instruments❌✅Xcode 14.3+
Native (Linux)perf✅✅Linux 2.6.31+

* Linux only for host mode

System Requirements

tl;dr: macOS or Linux with Docker installed

uniprof is designed to run on macOS and Linux but has primarily been developed & tested on macOS. If you find any bugs when running on Linux, please report them. Running on a Windows host is currenly not supported, but you can run on Linux installed on Windows via WSL2. Note that when using uniprof via WSL2, profiling native Windows executables is not supported, but you can still use the profilers for the higher level language runtimes like Python and Node.js.

Profiling tools are often non-trivial to set up correctly and can require elevated privileges. To simplify set up and provide better isolation for the profiled code, uniprof defaults to using Docker containers for each runtime that are pre-configured to run specific profiling tools. uniprof mounts your workspace in the container and executes the program with the profiler attached. uniprof also supports profiling outside the container if the host system has the profiling tools installed by running with the --mode host flag. The only case where containerized execution is not supported is when profiling a native Mach-O binary on macOS, since Apple Instruments cannot run inside a container.

Installation

bash
npm install -g uniprof

MCP Server

bash
# Install uniprof MCP server automaticallyuniprof mcp install claudecodeuniprof mcp install cursoruniprof mcp install vscode

Supported clients for auto-installation: amp, claudecode, codex, cursor, gemini, vscode, zed

If auto-installation is not supported for your client, add an MCP server using the stdio transport with the command npx -y uniprof mcp run.

For detailed MCP documentation see docs/mcp.md.

Quick Start

Profile and analyze in one step:

bash
# Profile most languages and get immediate analysisuniprof python app.pyuniprof node server.jsuniprof ruby script.rbuniprof java -jar myapp.jaruniprof dotnet MyApp.dlluniprof ./my-native-app
# Profile and visualize flamegraph in browseruniprof --visualize python app.py

Save profiles to analyze and visualize later:

bash
# 1. Check environment (optional)uniprof bootstrap
# 2. Record a profileuniprof record -o profile.json -- python app.pyuniprof record -o profile.json -- node server.jsuniprof record -o profile.json -- ruby script.rbuniprof record -o profile.json -- php script.phpuniprof record -o profile.json -- java -jar myapp.jaruniprof record -o profile.json -- ./gradlew rununiprof record -o profile.json -- ./mvnw spring-boot:rununiprof record -o profile.json -- dotnet MyApp.dlluniprof record -o profile.json -- elixir script.exsuniprof record -o profile.json -- mix rununiprof record -o profile.json -- ./my-native-appuniprof record -o profile.json -- /Applications/MyApp.app
# 3. Analyze profile data to find hotspotsuniprof analyze profile.json
# 4. Visualize flamegraph in the browseruniprof visualize profile.json

For detailed command line options documentation see docs/cli.md.

Host vs. Container Modes

Use the --mode option to control how profiling runs:

  • auto (default): Prefer container mode when Docker is available; otherwise use host.
    • Language runtimes (Python/Node.js/Ruby/PHP/BEAM/JVM/.NET) default to container for zero-setup.
    • Native on macOS with Mach-O binaries uses host (Instruments). ELF binaries on macOS are supported in container mode.
    • Native on Linux defaults to container; host can be used if you prefer your local perf setup.
  • host: Force host-installed profilers.
  • container: Force Docker containers (not supported for macOS Instruments/Mach-O binaries).
bash
# Auto mode (default)uniprof record -o profile.json -- python script.py
# Force host profilersuniprof record --mode host -o profile.json -- python script.py
# Force container modeuniprof record --mode container -o profile.json -- ./my-linux-app

Compiling with Debug Information

Native profiling requires debug information for meaningful results. Debug symbols enable the profiler to map memory addresses to function names, providing readable output instead of just hexadecimal addresses. Additionally, frame pointers improve call stack accuracy, especially for optimized code.

CompilerDWARF Debug InfoFrame PointersNotes
gccgcc -g -o myapp main.cgcc -fno-omit-frame-pointer -o myapp main.cUse -g3 for maximum debug info, -ggdb for GDB-specific extensions
clangclang -g -o myapp main.cppclang -fno-omit-frame-pointer -o myapp main.cppUse -gfull on macOS for complete debug info
swiftswiftc -g main.swiftswiftc -Xcc -fno-omit-frame-pointer main.swiftDebug builds include symbols by default with swift build
cargocargo build (debug mode)
cargo build --release + [profile.release]
debug = true
RUSTFLAGS="-C force-frame-pointers=yes" cargo buildDebug builds include DWARF by default; for release builds, add debug = true to Cargo.toml
gogo build -gcflags=all="-N -l"Built-in, always enabledGo includes debug info by default; -gcflags disables optimizations for better debugging
zigzig build-exe -O Debug main.zigzig build-exe -fno-omit-frame-pointer main.zigUse -O ReleaseSafe with debug info for optimized builds with symbols
ghcghc -g -rtsopts main.hsghc -fno-omit-frame-pointer main.hsUse -prof for profiling builds; -rtsopts enables runtime profiling options

Documentation

Credits

License

All uniprof source code in this repository is licensed under the MIT License. See LICENSE.

uniprof downloads and runs Docker images that bundle third-party software. The Dockerfiles used to build these images can be found in containers/. These images and their contents are not covered by the MIT license and are governed by their own licenses. uniprof does not grant rights to those components and does not relicense them.

Source: README.md at commit e088547

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.3.4LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts