MCE — MCP Code Execution
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCE_HOST | No | HTTP server bind host | 0.0.0.0 |
| MCE_PORT | No | HTTP server port | 8000 |
| MCE_DEBUG | No | Enable debug mode | false |
| MCE_LLM_MODEL | No | LiteLLM model string | gemini/gemini-2.0-flash |
| MCE_LOG_LEVEL | No | Log verbosity | INFO |
| MCE_DOCKER_HOST | No | Docker host socket (e.g. unix:///var/run/docker.sock) | |
| MCE_LLM_API_KEY | No | API key for the LLM provider | |
| MCE_LLM_ENHANCE | No | Enable LLM docstring enhancement at compile time | false |
| MCE_DOCKER_IMAGE | No | Sandbox image name | mce-sandbox:latest |
| MCE_LINT_ENABLED | No | Enable ruff lint validation before sandbox execution | false |
| MCE_NETWORK_MODE | No | Docker network for sandbox containers | mce_network |
| MCE_SANDBOX_MODE | No | Execution mode: warm (persistent container pool) or cold (new container per request) | warm |
| MCE_CACHE_DB_PATH | No | SQLite cache database path | ./data/cache.db |
| MCE_CACHE_ENABLED | No | Enable code caching | true |
| MCE_WARM_POOL_SIZE | No | Number of persistent containers to pre-create in warm mode | 2 |
| MCE_ALLOWED_DOMAINS | No | Comma-separated API domain allowlist (empty = allow all) | |
| MCE_CACHE_MAX_ENTRIES | No | Maximum cached entries before LRU eviction | 500 |
| MCE_CACHE_TTL_SECONDS | No | Cache entry lifetime | 3600 |
| MCE_COMPILE_ON_STARTUP | No | Auto-compile swagger sources at startup | true |
| MCE_COMPILED_OUTPUT_DIR | No | Compiled functions directory | ./compiled |
| MCE_MAX_CODE_SIZE_BYTES | No | Maximum allowed code size (64 KB) | 65536 |
| MCE_SWAGGER_CONFIG_FILE | No | Swagger source definitions | ./config/swaggers.yaml |
| MCE_MAX_OUTPUT_SIZE_BYTES | No | Max sandbox stdout size (1 MB) | 1048576 |
| MCE_ENABLE_ADDITIONAL_TOOLS | No | Enable optional list_skills and get_server_skills tools | false |
| MCE_EXECUTION_TIMEOUT_SECONDS | No | Max code execution time | 30 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_serversA | Discover servers with function names and descriptions. All summaries are included when they fit. Follow next_cursor and next_function_cursor together as cursor and function_cursor; a nonzero function cursor continues the same server. Truncated descriptions are marked. cursor defaults to 0; limit defaults to 10 (1–100 servers, capped by discovery_limit). Results include the registry fingerprint; restart pagination if it changes. Use search_functions to search and get_functions for full schemas. |
| search_functionsA | Search the compiled registry before requesting full function schemas. |
| get_functionsA | Inspect real parameter, request-body, and response metadata for 1–5 functions. |
| execute_codeB | Run restricted Python with inputs, result, and await call_tool("server.function", args). |
| run_cached_codeB | Reuse unchanged cached code with a new structured inputs object. |
| submit_codeB | Submit execution and return a persistent receipt, not an MCP Tasks promise. |
| get_runA | Read a persistent run receipt owned by the authenticated caller. |
| cancel_runA | Request cooperative cancellation; completed external effects cannot be undone. |
| list_recipesA | Find reusable recipes in the authenticated caller's namespace. |
| read_artifactA | Read a bounded chunk of an execution artifact in the caller's namespace. |
| transform_artifactA | Reduce stored JSON offline, without refetching or reading chunks. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| reusable_code_guide | Explain the reusable restricted-Python contract on demand. Returns: A concise prompt using structured inputs and broker-mediated calls. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Each tool targets a distinct operation: search/get/list for discovery, execute/submit/cached for running code, and dedicated tools for run management and artifact access. Even execute_code and submit_code are clearly differentiated by synchronous execution vs. persistent receipt submission.
All 11 tool names follow the snake_case verb_noun pattern, such as search_functions, cancel_run, and transform_artifact. The pattern is consistent across discovery, execution, and artifact operations, with no mixing of conventions.
With 11 tools, the server is well-scoped for its purpose: it covers function discovery, code execution variants, run lifecycle, and artifact handling without excess. The count is within the ideal range and each tool serves a clear role.
The surface covers the main workflow well: discovering functions, executing code, managing runs, and reading/transforming artifacts. A minor gap is the lack of a list_runs tool to enumerate persistent runs; callers must know a receipt ID upfront, which is a small workaround.