workspace-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WORKSPACE_MCP_CONFIG | No | Path to YAML/JSON configuration file | |
| WORKSPACE_MCP_WORKSPACE_ROOT | No | Base sandboxed directory for all operations (default: ./workspace) | |
| WORKSPACE_MCP_MAX_FILE_SIZE_BYTES | No | File size write limit (default: 10485760) | |
| WORKSPACE_MCP_REQUIRE_OVERWRITE_CONFIRMATION | No | Enforces confirmation on file overwrite/delete (default: true) |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_projectA | Create a new project inside the workspace with a conventional folder structure (frontend/backend/database/docker/scripts/tests/ docs/assets/config by default) plus .gitignore, Dockerfile, docker-compose.yml, README.md, CLOUD.md and PROJECT_TREE.md. Args: name: Project (top-level directory) name. Letters, numbers, spaces, '.', '-', '_' only. structure: Optional custom list of subfolder names, replacing the default 9-folder scaffold. description: One-paragraph description used in README/CLOUD.md. include_docker: Whether to generate Dockerfile + docker-compose.yml. |
| delete_projectA | Permanently delete an entire project directory and everything in it. Args: name: Project name to delete. confirm: Must be explicitly set to True; this is irreversible. |
| rename_projectA | Rename (move) a project directory within the workspace. Args: old_name: Current project name. new_name: New project name. overwrite: If True, replace an existing project at new_name. |
| create_directoryA | Create a directory (and any missing parents) inside the workspace. Args: path: Path relative to the workspace root, e.g. "MyApp/backend/api". exist_ok: If False, error when the directory already exists. |
| delete_directoryA | Delete a directory inside the workspace. Args: path: Path relative to the workspace root. confirm: Must be explicitly True; this is irreversible. recursive: If True (default), delete all contents too. If False, only succeeds when the directory is empty. |
| list_directoryA | List the immediate contents of a directory inside the workspace. Args: path: Path relative to the workspace root (default: workspace root). include_hidden: If True, include dotfiles/dotfolders. |
| create_fileA | Create a new file with the given content inside the workspace. Fails with DUPLICATE_FILE if the file already exists unless overwrite=True is passed. Args: path: Path relative to the workspace root, e.g. "MyApp/backend/main.py". content: Full text content of the file. overwrite: If True, replace an existing file at this path. |
| read_fileA | Read the full text content of a file inside the workspace. Args: path: Path relative to the workspace root. |
| write_fileA | Overwrite a file's entire content (creating it if it doesn't exist). If the file already exists, confirm=True is required (unless the server's require_overwrite_confirmation setting is disabled). Args: path: Path relative to the workspace root. content: New full text content of the file. confirm: Must be True to overwrite an existing file. |
| append_fileA | Append text to the end of an existing file. Args: path: Path relative to the workspace root. The file must already exist. content: Text to append. |
| update_fileA | Update part or all of an existing file. Use EITHER (find, replace) for a literal text substitution, OR new_content for a full rewrite -- do not pass both. Args:
path: Path relative to the workspace root. Must already exist.
find: Literal text to search for (mutually exclusive with new_content).
replace: Replacement text for every match of |
| move_fileA | Move (or move+rename) a file to a new location within the workspace. Args: source_path: Current path, relative to the workspace root. destination_path: New path, relative to the workspace root. overwrite: If True, replace an existing file at the destination. |
| rename_fileA | Rename a file in place (keeping it in the same directory). Args: path: Current path, relative to the workspace root. new_name: New filename (not a full path) -- e.g. "app.py". overwrite: If True, replace an existing file with that name. |
| delete_fileA | Permanently delete a file inside the workspace. Args: path: Path relative to the workspace root. confirm: Must be explicitly True; this is irreversible. |
| search_filesA | Find files by glob pattern (e.g. ".py", "**/.test.ts"). Args:
pattern: Glob pattern, evaluated relative to |
| find_textA | Search file contents for a literal text string (grep-like). Args: query: Literal text to search for. root: Directory to search under, relative to the workspace root. extensions: Optional list like [".py", ".ts"] to restrict the search. case_sensitive: Whether the match is case sensitive. max_results: Cap on number of matching lines returned. |
| project_treeA | Render a visual ASCII tree of a directory's contents (not saved to disk). Args: path: Directory to render, relative to the workspace root. |
| generate_readmeB | (Re)generate README.md for a project with the standard sections: description, features, folder structure, installation, usage, dependencies, configuration, tech stack, future improvements, license. Args: project_path: Path to the project directory, relative to the workspace root. |
| generate_cloud_logA | (Re)generate CLOUD.md -- the AI work log explaining exactly what was generated in this project and why: goal, architecture decisions, files created/updated, implementation notes, known limitations, and future work. Args: project_path: Path to the project directory, relative to the workspace root. |
| generate_project_treeA | (Re)generate PROJECT_TREE.md, a saved visual ASCII tree of the project. Args: project_path: Path to the project directory, relative to the workspace root. |
| validate_workspaceA | Report the current workspace configuration and health: root directory, whether it exists/is writable, size limits, and allowed extensions. |
| validate_pathA | Check whether a given relative path is valid and safe (no traversal, stays within the workspace, no symlink escape) without performing any read/write operation. Args: path: Path to validate, relative to the workspace root. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/shanmukhdatta/workspace-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server