Sandbox
@portofcontext/pctx

Framework for agent tool calls and MCP servers

pctx gives agents a single execution layer for tool calls and upstream MCP servers. It exposes Code Mode, where agents write code that runs in an isolated sandbox instead of making one tool call at a time. It also handles auth, session aggregation, and config for shared use across agents and SDKs.

274 stars34 forksRustUpdated 7d ago
Who it's for

Builders who want Claude Code, Codex, Cursor, or any agent SDK to use tools through a secure execution layer.

What it delivers

You can run agent tool calls in code instead of passing every result through the context window, with auth and sandboxing handled for you.

What it does

Code mode interface

Exposes tools as code functions so agents can do multi-step work in one sandboxed execution.

Upstream MCP aggregation

Connects multiple MCP servers through one interface and keeps sessions across execute calls.

Unified MCP server

Runs as a stateless HTTP server or as a stdio MCP server for registered upstream servers.

Secure sandbox execution

Runs generated code in Deno with only the network hosts allowed in config, and without filesystem or environment access.

Config and auth handling

Uses pctx.json and supports env vars, system keychain, and external commands for secrets.

Python client SDK

Provides a pctx-client package for building agents in Python and wiring in custom tools or MCP servers.

How to get it

  1. 1Run
    # Homebrew
    brew install portofcontext/tap/pctx
    
    # cURL
    curl --proto '=https' --tlsv1.2 -LsSf https://raw.githubusercontent.com/portofcontext/pctx/main/install.sh | sh
    
    # npm
    npm i -g @portofcontext/pctx

README

PCTX Logo

pctx

Made by

NPM Version Rust Python

The open source framework to connect AI agents to tools and mcp with Code Mode


—   T R U S T E D   B Y   —

BlockBlock      SentientSentient

Install

# Homebrew
brew install portofcontext/tap/pctx

# cURL
curl --proto '=https' --tlsv1.2 -LsSf https://raw.githubusercontent.com/portofcontext/pctx/main/install.sh | sh

# npm
npm i -g @portofcontext/pctx

Core Functionality

pctx can be run as a stateless HTTP server for Code Mode sessions or as a unified MCP server that exposes Code Mode functionality for registered upstream MCP servers.

# Start Code Mode for Python SDK
pctx start

# Start Code Mode as a unified MCP server
pctx mcp init
pctx mcp dev

Python SDK

Use the Python SDK if building agents in Python and want to run Code Mode with custom tools and/or MCP servers. The Python SDK is an HTTP client to the pctx server.

pip install pctx-client
from pctx_client import Pctx, tool
from agents import Agent # Use any Agent SDK
from agents.run import Runner # This example is OpenAI Agents SDK

@tool
def get_weather(city: str) -> str:
    """Get weather information for a given city."""
    return f"It's always sunny in {city}!"

pctx = Pctx(tools=[get_weather]) # or with mcp: servers=[your_mcp]

tools = pctx.openai_agents_tools() # Run Code Mode with any Agent SDK
agent = Agent(
    name="GreatCoder",
    model="litellm/openrouter/openai/gpt-oss-120b",
    instructions="You run code to complete complex tasks.",
    tools=tools,
)

Links

Node SDK

Coming soon

Unified MCP

Use the unified MCP to run Code Mode with MCP servers and want to persist the authentication connections and you do not need to use agent tools (non-mcp tools).

# Initialize config for upstream mcp connections
pctx mcp init

# Add HTTP or stdio MCP servers
pctx mcp add stripe https://mcp.stripe.com
pctx mcp add memory --command "npx -y @modelcontextprotocol/server-memory"

# Start as HTTP server (dev mode with UI)
pctx mcp dev

# Or start as stdio MCP server
pctx mcp start --stdio

For complete CLI documentation, see CLI.md. For configuration options, see Configuration Guide.

Screenshot 2025-11-21 at 11 03 20 AM

What is pctx?

pctx sits between AI agents and MCP servers. It aggregates multiple upstream MCP servers, handles authentication, and exposes tools through a unified Code Mode interface. Instead of agents managing connections to individual MCP servers, they connect once to pctx.

What is Code Mode?

Code mode replaces sequential tool calling with code execution. Rather than an agent calling tools one at a time and passing results through its context window, it writes code that executes in a sandbox. Read Anthropic's overview here.

Traditional MCP flow:

  1. Agent calls getSheet(id)
  2. Server returns 1000 rows → agent's context
  3. Agent calls filterRows(criteria)
  4. Server returns 50 rows → agent's context

With Code Mode:

const sheet = await gdrive.getSheet({ sheetId: "abc" });
const orders = sheet.filter((row) => row.status === "pending");
console.log(`Found ${orders.length} orders`);

Result: 98.7% reduction in tokens (150k → 2k) for this multi-step operation.

Features

  • Code Mode interface: Tools exposed as code functions for efficient agent interaction. See Code Mode Guide.
  • Upstream MCP server aggregation: Connect to multiple MCP servers through a single interface, with persistent upstream sessions across execute_typescript calls. See Upstream MCP Servers Guide.
  • Simple config with CLI: Create the pctx.json config with a simple CLI. pctx.json manages auth, upstream MCPs, logging, and more. See Config Guide.
  • Secure authentication: Source secrets from environment variables, system keychain, and external commands. See Authentication Section in the CLI configuration docs for more details.

Security

  • LLM generated code runs in an isolated Deno sandbox that can only access the network hosts specified in the configuration file.
  • No filesystem, environment, network (beyond allowed hosts), or system access.
  • MCP clients are authenticated in pctx. LLMs can never see your auth.

Update

Depending on the installation method (Homebrew/npm/cURL) the update method is different. Run which pctx if you are unsure what you used to install it.

# Homebrew update
brew upgrade pctx

# cURL update
pctx-update

# npm update
npm upgrade -g @portofcontext/pctx

Develop

  • For core dev: install rust and jump into crates/
  • Client SDK dev: find the README in the SDK

Learn More

Files in the repo

Repository payload23 top-level entries
  • .cargo
  • .github
  • assets
  • crates
  • docs
  • examples
  • pctx-py
  • plans
  • scripts
  • .gitignore
  • .readthedocs.yaml
  • Cargo.lock
  • Cargo.toml
  • CHANGELOG.md
  • CONTRIBUTING.md
  • dist-workspace.toml
  • install.sh
  • LICENSE
  • Makefile
  • README.md
  • RELEASING.md
  • rust-toolchain.toml
  • rustfmt.toml

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More frameworks & sdks

HKUDS/nanobotFrameworks & SDKs

Ultra-lightweight, open-source, self-hosted personal AI agent framework in Python with WebUI, tools, memory, MCP, multi-agent workflows, automation, and chat apps

48k
microsoft/
SkillOpt
microsoft/SkillOptFrameworks & SDKs

SkillOpt is a text-space optimizer that trains reusable natural-language skills for frozen LLM agents through trajectory-driven edits, validation-gated updates, and deployable best_skill.md artifacts.

17k
omnigent-ai/omnigentFrameworks & SDKs

Omnigent is an open-source AI agent framework and meta-harness: orchestrate Claude Code, Codex, Cursor, Pi, and custom agents — swap harnesses without rewriting, enforce policies and sandboxing, and collaborate in real time from any device.

9.8k
kyegomez/
OpenMythos
kyegomez/OpenMythosFrameworks & SDKs

A theoretical reconstruction of the Claude Mythos architecture, built from first principles using the available research literature.

15k
D4Vinci/ScraplingFrameworks & SDKs

🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!

80k