Edison delegates work to specialized sub-agents using the Pal MCP Server. This document covers setup, configuration, and troubleshooting.
The Pal MCP Server enables Edison to:
- Delegate tasks to specialized AI agents
- Maintain conversation context across delegations
- Execute tasks in isolated environments
- Coordinate complex multi-agent workflows
- Python 3.10+
- uvx (comes with uv):
pip install uv - Edison installed:
pip install edisonorpip install -e .for development
The easiest way to set up Pal integration is during project initialization:
edison init my-projectThis automatically:
- Creates
.edison/directory structure - Checks for uvx/pal-mcp-server availability
- Configures
.mcp.jsonwith Pal server entry - Verifies the setup
If you need to set up Pal manually or add it to an existing project:
# 1. Verify uvx is installed
pip install uv
# 2. Run Edison pal setup
edison mcp setup
# 3. Configure your project
edison mcp configure .
# 4. Verify the setup
edison mcp setup --checkThe edison mcp configure command creates a .mcp.json file in your project root:
{
"mcpServers": {
"edison-pal": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/BeehiveInnovations/pal-mcp-server.git",
"pal-mcp-server"
],
"env": {
"PAL_WORKING_DIR": "/path/to/your/project"
}
}
}
}Pal runs as the MCP server, but it often delegates execution to child CLIs (e.g. codex, claude, gemini) using generated configs under .pal/conf/cli_clients/*.json.
Some child CLIs (notably Codex CLI) do not read the project’s .mcp.json. Edison supports per-role MCP injection so only the specific agent/validator that needs an MCP server gets it.
How it works
- MCP servers are defined in
mcp.yaml(core + packs + project overrides). - A role declares required servers:
- Validators:
validation.validators.<id>.mcp_servers: ["playwright", ...] - Agents: agent prompt frontmatter
mcp_servers: ["playwright", ...](also supportsmcp: { servers: [...] })
- Validators:
- When Pal invokes a child CLI for a role, Edison injects CLI-specific args into that role’s
role_args.- For Codex, this uses
-c mcp_servers.<name>.*=...overrides so no global~/.codex/config.tomledits are required.
- For Codex, this uses
Configuration
- Enable/choose injection style per child CLI in
pal.yaml:pal.cli_clients.clients.codex.mcp_override_style: codex_config
See what will be written without making changes:
edison mcp configure --dry-runConfigure a project in a different directory:
edison mcp configure /path/to/projectWrite to a custom location:
edison mcp configure --config-file /custom/path/.mcp.jsonStart the server in the current terminal (useful for debugging):
edison mcp start-serverStart the server in the background:
edison mcp start-server --backgroundVerify that Pal is properly configured:
edison mcp setup --checkThis will check:
- ✅ uvx is installed and available
- ✅ pal-mcp-server can be accessed via uvx
- ✅ Configuration is valid
After setup, test that delegation works:
# Initialize a project
edison init test-project
cd test-project
# Create a test task
edison task new "Test delegation" --description "Verify Pal MCP integration"
# The task system should be able to delegate to PalProblem: Error message uvx not found
Solution:
# Install uv (includes uvx)
pip install uv
# Verify installation
uvx --versionProblem: uvx fails to install pal-mcp-server from GitHub
Solution:
- Check your internet connection
- Verify Git is installed:
git --version - Try installing manually:
uvx --from git+https://github.com/BeehiveInnovations/pal-mcp-server.git pal-mcp-server --version
Problem: Edison can't find .mcp.json configuration
Solution:
# Run configure again
edison mcp configure .
# Or specify the path explicitly
edison mcp configure --config-file ./.mcp.jsonProblem: Permission errors when creating .mcp.json
Solution:
# Check directory permissions
ls -la .
# Ensure you have write access to the project directory
# Or use --config-file to write to a different location
edison mcp configure --config-file ~/.mcp.jsonProblem: edison mcp start-server fails
Solutions:
-
Check uvx installation:
uvx --version
-
Verify pal-mcp-server is accessible:
uvx --from git+https://github.com/BeehiveInnovations/pal-mcp-server.git pal-mcp-server --version
-
Check for port conflicts: Pal may use specific ports that are already in use
-
Review error messages: Look for specific error details in the output
Problem: .mcp.json gets overwritten unexpectedly
Solution:
- The
edison mcp configurecommand overwrites existing configuration by default - Use
--dry-runfirst to preview changes - Back up your
.mcp.jsonbefore running configure:cp .mcp.json .mcp.json.backup edison mcp configure --dry-run # Preview first edison mcp configure # Then apply
Problem: PAL_WORKING_DIR not set correctly
Solution:
The PAL_WORKING_DIR environment variable in .mcp.json should point to your project root. If it's incorrect:
-
Edit
.mcp.jsonmanually:{ "mcpServers": { "edison-pal": { "env": { "PAL_WORKING_DIR": "/correct/path/to/project" } } } } -
Or regenerate the configuration:
cd /correct/path/to/project edison mcp configure .
If you're developing a custom version of pal-mcp-server:
-
Clone the repository:
git clone https://github.com/BeehiveInnovations/pal-mcp-server.git cd pal-mcp-server -
Install in development mode:
pip install -e . -
Update
.mcp.jsonto use the local installation:{ "mcpServers": { "edison-pal": { "command": "pal-mcp-server", "args": [], "env": { "PAL_WORKING_DIR": "/path/to/project" } } } }
You can configure Pal for multiple projects:
# Configure project A
cd /path/to/project-a
edison mcp configure .
# Configure project B
cd /path/to/project-b
edison mcp configure .Each project gets its own .mcp.json with project-specific paths.
For automated environments:
# Example GitHub Actions workflow
steps:
- name: Install uv
run: pip install uv
- name: Setup Edison Pal
run: |
edison mcp setup
edison mcp configure .
edison mcp setup --check# General pal help
edison mcp --help
# Specific command help
edison mcp setup --help
edison mcp configure --help
edison mcp start-server --help- GitHub Issues: https://github.com/BeehiveInnovations/pal-mcp-server/issues
- Edison Issues: Report Edison-specific issues to the Edison repository
Enable verbose output for debugging:
# Check setup with detailed output
edison mcp setup --check -v
# View configuration
edison mcp configure --dry-run- Always verify setup: Run
edison mcp setup --checkafter configuration - Use relative paths: Avoid hardcoded absolute paths in
.mcp.json - Version control: Commit
.mcp.jsonto your repository (it's project-specific) - Document custom changes: If you modify
.mcp.jsonmanually, document why - Test after updates: Re-run verification after updating Edison or Pal MCP Server
After successful setup:
- Initialize a project:
edison init my-project - Create tasks:
edison task new "Description" - Test delegation: Verify tasks can be delegated to sub-agents
- Explore Edison: Check out the main Edison documentation
edison init- Initialize a new Edison project (includes Pal setup)edison mcp setup- Setup pal-mcp-serveredison mcp configure- Configure .mcp.jsonedison mcp start-server- Start the Pal MCP server
.mcp.json- MCP server configuration (project-specific).edison/- Edison project configuration directory
Note: Adapters are unified under src/edison/core/adapters/ (components/ + platforms/pal/). See docs/TEMPLATING.md for the composition pipeline feeding adapter outputs.