ForgeMCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FORGEMCP_WORKSPACE | Yes | Must name an existing workspace directory. |
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
} |
| completions | {} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| workspace_listA | Show a directory tree; null depth expands every directory. File paths are errors. include_hidden controls dot directories; dot files remain visible and links are listed without traversal. |
| workspace_find_filesA | Find file paths recursively by case-sensitive glob, skipping dot directories and links. Patterns without / match basenames; patterns with / match paths relative to the search directory. |
| workspace_file_infoA | Read creation/modification times, byte size, and owner of one file. |
| workspace_read_fileA | Read UTF-8 text, optionally selecting an inclusive range of one-based lines. |
| workspace_text_searchA | Search lines by literal text or regex; report skipped binary/non-UTF-8 files. extensions accepts suffixes with or without a leading dot; null selects all files, while an empty list selects none. max_matches limits returned matching lines, not scanning. Counts are exact; skipped-file paths are available through the linked immutable resource. |
| workspace_write_fileA | Create or fully overwrite a UTF-8 file; its parent directory must exist. Return removed/added line counts and linked change resources. |
| workspace_edit_fileA | Replace one exact text occurrence, or all with replace_all=true. old_text must be nonempty. Missing or ambiguous matches leave the file unchanged. Text and line endings outside replacements are preserved. |
| workspace_moveA | Move a file or directory within project/ or within storage/. The destination must not exist, and its parent directory must exist. |
| workspace_deleteA | Delete a file or empty directory; protected paths and roots cannot be deleted. |
| workspace_mkdirA | Create a directory and missing parents, or report that it already exists. |
| processes_overviewB | Show current and completed external processes managed by ForgeMCP. |
| process_getA | Read a log slice: time, then lines, then UTF-8 text bytes. With neither selector, return the last 100 lines. Line ranges are inclusive; time ranges are [start, end) seconds from process start. Last seconds end at now for running processes, at completion otherwise. Returned line numbers remain absolute; a byte limit can cut a line. |
| toolsets_listA | List all discovered toolsets and the tools available in each. |
| toolset_getC | Read tool paths and kinds, querying available versions for this request. |
| cmake_profilesA | List effective profiles with their toolsets, build settings, and preset selections. |
| cmake_configureA | Configure selected profiles; return build/database paths and per-execution errors. Changing a manual profile's generator removes and recreates its build directory. |
| cmake_buildB | Build selected profiles and their build presets after configuration. Omitted targets use CMake or preset defaults; a nonempty targets list selects explicit build targets. |
| cmake_testB | Run CTest for selected profiles and test presets after building; return test cases. names selects exact test names, not regex patterns; omit it to use CTest or preset defaults. |
| cmake_run_testA | Run one project/storage test executable directly with literal command-line arguments. Inherits the server environment; cwd defaults to project/. Zero exit means success. No profiles, CTest properties, or case reports are used. Read output through process_get with the returned process_id. |
| clangd_configurationsB | List CMake contexts with an existing compilation database and clangd. |
| clangd_diagnosticsC | Get fresh file diagnostics in selected configurations. Omitted or empty configurations select all available contexts. |
| clangd_hoverC | Describe the symbol at a one-based line and zero-based code-point position. Omitted or empty configurations select all available contexts. |
| clangd_definitionB | Find definitions of the symbol at the supplied position. External locations use root/. Empty configurations select all. |
| clangd_referencesB | Find references to the symbol in selected configurations. Omitted or empty configurations select all available contexts. |
| clangd_document_symbolsB | List file symbols in selected configurations. Omitted or empty configurations select all available contexts. |
| clangd_workspace_symbolsC | Find workspace symbols in selected configurations. Omitted or empty configurations select all available contexts. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| processes_list | Read the current retained process list as Markdown. |
| toolsets | Read a markdown summary of all discovered toolsets. |
| ui://forgemcp/workspace-tree.html | |
| ui://forgemcp/workspace-file.html | |
| ui://forgemcp/workspace-search.html | |
| ui://forgemcp/workspace-result.html | |
| ui://forgemcp/process-overview.html | |
| ui://forgemcp/process-details.html | |
| ui://forgemcp/toolsets.html | |
| ui://forgemcp/cmake-profiles.html | |
| ui://forgemcp/cmake-configure.html | |
| ui://forgemcp/cmake-build.html | |
| ui://forgemcp/cmake-test.html | |
| ui://forgemcp/cmake-run-test.html | |
| ui://forgemcp/clangd-result.html |
TDQS
Scored across 26 tools
Most tools target clearly distinct operations: the clangd_* LSP queries (hover/definition/references/symbols) and workspace_* file operations are well-separated. The one real overlap is cmake_test vs cmake_run_test, which both run tests, but the descriptions distinguish CTest presets from a direct single-executable run.
Names follow a clean domain-prefix convention (cmake_*, clangd_*, workspace_*, process_*, toolset(s)_*) with predictable verb_noun or noun forms. Minor inconsistencies: singular/plural mismatch between processes_overview vs process_get and toolsets_list vs toolset_get.
26 tools sits at the upper bound, but they span five genuinely distinct domains (CMake build/test, clangd LSP, filesystem, process logs, toolsets), and each tool earns its place within its domain. It is slightly heavy but reasonable for a multi-domain build/dev server.
Coverage is strong: CMake has profiles/configure/build/test/run_test, workspace has read/write/edit/move/delete/mkdir/search, and clangd covers navigation and diagnostics. Minor gaps remain (no clangd completion/rename/code-action, no workspace copy), but the core workflows are complete.