Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
COPILOT_MCP_WORKSPACEYesThe path to the open workspace; relative paths resolve against it and `..` or symlink escapes are rejected. Normally set to ${workspaceFolder}.

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
workspace_infoA

Show the workspace root this server is confined to and whether confinement is active.

read_fileA

Read a text file. Lines are 1-based and inclusive; end_line=-1 reads to EOF.

create_fileC

Create a file (and parent dirs) with the given content.

edit_fileA

Replace old_string with new_string in a file. Fails unless it matches exactly once (or replace_all is true). dry_run=true returns a unified diff without writing.

edit_file_multiA

Apply several edits atomically. Each edit is {"old_string": ..., "new_string": ..., optional "replace_all": "true"}. Edits apply in order; if any fails nothing is written.

replace_linesB

Replace lines start_line..end_line (1-based, inclusive) with new_text. Use end_line=start_line-1 to insert before start_line.

list_dirB

List directory entries; directories end with '/'.

delete_fileC

Delete a file or directory (recursively).

grepA

Regex search file contents. Returns path:line: text matches. Skips git-ignored files (and .git, node_modules, .venv) unless respect_gitignore=false. Use offset to page.

globA

Find files by glob pattern (e.g. '**/*.py'), relative to path. Skips git-ignored files unless respect_gitignore=false. Use offset to page.

run_commandA

Run a shell command and return exit code, stdout and stderr. The working directory must be inside the workspace (default: the workspace root). The command itself is NOT confined: a shell can still reach any path the server's user can.

git_statusC

Show short git status.

git_diffB

Show git diff (optionally staged and/or for one path).

git_logC

Show recent commits.

git_addC

Stage files.

git_commitC

Commit staged changes.

git_initA

Initialise a new git repository (non-destructive; existing repos are left intact).

git_branch_createB

Create a new branch (and optionally switch to it). Never overwrites an existing branch.

git_switchB

Switch to an existing branch. Git refuses if it would overwrite local changes.

git_tag_createB

Create a tag (annotated if message given). Never moves or replaces an existing tag.

git_pushB

Push a branch (default: current) to a remote. Force pushes and ref deletion are not supported. tags=true pushes tags instead of a branch.

git_blameA

Show who last changed each line of a file (read-only). Optionally limit to a line range.

git_showB

Show a commit's message and diff (read-only). stat_only=true gives only the file summary.

git_branch_listA

List branches with their last commit and upstream (read-only). all_branches includes remotes.

git_stash_listC

List stashes (read-only).

git_remote_infoA

List configured remotes and their URLs (read-only). Credentials in URLs are masked.

git_diff_statC

Summarise changes per file (read-only), compact for large diffs. base compares with a revision.

run_testsC

Run pytest on a path with optional extra args (e.g. '-k name -x').

lintC

Lint Python code with ruff (optionally auto-fix).

format_codeB

Format Python code with ruff; check_only=True only reports.

web_fetchA

Download a web page (after explicit user confirmation), sanitise it and save it as a local markdown file. Returns the file path only; read the file to consume it. Executable/archive/ document extensions and non-text content types are rejected; scripts, forms, iframes, event handlers and unsafe links are stripped. Private/loopback addresses are blocked.

convert_dataA

Convert between json, yaml, toml, csv, xml and psd1 (PowerShell data files). Provide either path or text. from_format is inferred from the file extension when omitted. With output_path the result is written there; otherwise it is returned. Reading psd1 needs pwsh (restricted language mode, no code execution); XML uses @attr / #text conventions.

query_dataA

Extract values from a json/yaml/toml/csv/xml/psd1 file with a path expression such as 'servers[0].name', 'users[].email' or '.port'. Returns JSON (a list of matches).

script_to_markdownB

Convert a script into literate markdown: column-0 comment blocks (and PowerShell <# #> blocks) become prose, everything else becomes fenced code. Heuristic and meant for documentation; markdown_to_script reverses it.

markdown_to_scriptB

Extract code from a markdown file. Only fenced blocks tagged with language are kept unless extract_all_blocks is true. Prose becomes comments when include_prose is true.

pandoc_convertB

Convert documents with pandoc (docx, html, md, rst, pdf output needs a LaTeX engine...). Runs in --sandbox mode so the document cannot read other files or run filters.

http_requestA

Send an HTTP request (localhost and private addresses allowed) and report status, timing, redacted headers and a truncated body. Optional assertions: expect_status, expect_json ({"data.items[0].id": 5} path->value), expect_contains (substring of body), max_latency_ms. Result begins with PASS/FAIL when assertions are given.

api_load_testA

Tiny load probe: send requests requests (max 200) with concurrency workers (max 20) and report status counts, errors and latency percentiles. Use only against systems you own.

system_infoB

OS, kernel, uptime, CPU, load, memory, swap and disk usage for this machine.

list_processesB

List processes (pid, name, user, cpu%, memory) sorted by 'memory' or 'cpu' or 'pid'.

list_portsB

List TCP/UDP sockets with owning process. May need elevated rights to see other users' PIDs.

network_interfacesA

NIC configuration: addresses, netmask, MAC, MTU, speed and up/down state, plus I/O counters.

dns_lookupB

Resolve a hostname to its addresses using the system resolver.

check_tcp_portB

Test whether a TCP connection to host:port succeeds, with connect time.

list_servicesA

List services (systemd on Linux, Get-Service on Windows, launchctl on macOS). state: e.g. running / stopped (Windows) or running / failed / active (systemd).

service_statusC

Detailed status of one service.

read_event_logsB

Recent system events. Linux: journalctl (source = unit name, level = minimum severity). Windows: Get-WinEvent (source = log name, default 'System'; level = exact level). macOS: log show. level: critical|error|warning|info|verbose.

cim_queryA

Query CIM/WMI classes via Get-CimInstance (Windows only), e.g. Win32_OperatingSystem, Win32_LogicalDisk, Win32_NetworkAdapterConfiguration, Win32_Service. filter is a WQL WHERE clause such as "DriveType=3". Read-only.

environment_variablesB

Environment variables of the server process. Values of secret-looking names are redacted.

todo_listA

List the workspace todo scratchpad. Optional status filter: pending, in_progress, done.

todo_addA

Add a todo (status pending) to the workspace scratchpad and return the updated list.

todo_updateA

Change a todo's status (pending, in_progress, done) and/or text; returns the updated list.

todo_removeA

Remove one todo from the scratchpad by id; returns the updated list.

policy_infoA

Show the active policy file path and contents, and where the audit log is written.

audit_tailB

Return the most recent audit log entries (JSON lines), if auditing is enabled.

get_tool_docsA

Return usage docs and examples for a tool group (filesystem, search, shell, git, python, web-fetch, data-conversion, api-testing, diagnostics) or 'index'. Call this after a tool error.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
tools_indexIndex of tool groups and rules that apply to every tool.

TDQS

B3.1/5.0

Scored across 56 tools

Disambiguation4/5

Most tools target clearly different resources or actions, and the domain grouping helps agents choose correctly. There is some overlap among file-editing tools (edit_file, edit_file_multi, replace_lines) and between run_command and specialized tools like run_tests/lint/format_code, but descriptions make the intended boundaries reasonably clear.

Naming Consistency3/5

All names use snake_case and several domain prefixes (git_, todo_) provide useful grouping. However, the naming pattern mixes verb_noun (read_file, list_dir), noun_verb/prefix_noun_verb (git_branch_create, todo_add), and bare nouns (grep, glob, lint), so it is readable but not fully predictable.

Tool Count2/5

56 tools is far above the typical well-scoped range and is likely to burden tool selection and context use. The tools are grouped sensibly by domain, but the overall surface is too large for a single MCP server.

Completeness4/5

The server covers a very broad coding-assistant surface: filesystem operations, git workflows, Python lint/test/format, web/API testing, diagnostics, data conversion, todos, and policy/audit helpers. Some lifecycle operations are missing or indirect, such as git pull/fetch/merge/clone and file move/copy, but run_command provides a fallback for many gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues