Skip to main content
Glama
landicefu

MCP Client Configuration Server

by landicefu

MCP Client Configuration Server

This MCP server helps manage configurations for different MCP clients. It provides tools to retrieve, list, add, and remove server configurations from client configuration files. The server automatically detects the appropriate configuration file path based on the operating system (Windows or macOS) and the specified client.

Installation

# Install from npm
npm install -g @landicefu/mcp-client-configuration-server

# Or use npx to run without installing
npx @landicefu/mcp-client-configuration-server

Related MCP server: MCP Configuration Editor

Configuration

To use this MCP server in your AI assistant, add it to your MCP settings configuration:

{
  "mcpServers": {
    "mcp-client-configuration": {
      "command": "npx",
      "args": ["-y", "@landicefu/mcp-client-configuration-server"],
      "env": {},
      "disabled": false,
      "alwaysAllow": []
    }
  }
}

Supported Clients

  • Cline: Claude-powered coding assistant

  • Roo Code: Code editor with AI capabilities

  • WindSurf: AI-powered browser

  • Claude app: Desktop application for Claude AI

Note: Cursor is no longer supported as it doesn't use a standard configuration file for MCP settings. Cursor appears to store its MCP configuration in a way we can't easily modify, making it incompatible with this configuration server's file-based approach.

Usage

This server is particularly useful for:

  1. Managing MCP servers across multiple clients: Configure a server once and deploy it to multiple clients

  2. Automating configuration: Scripts can use this server to programmatically manage MCP configurations

  3. Troubleshooting: Easily check which servers are configured and their settings

Example: Copying a server configuration from Roo Code to Claude app

Here's a simple prompt you can use with an AI assistant to copy an MCP server configuration from Roo Code to the Claude desktop app:

Please copy the "brave-search" MCP server configuration from Roo Code to my Claude desktop app.

The AI assistant would execute these steps behind the scenes:

  1. Get the server configuration from Roo Code:

// First, get the server configuration from Roo Code
{
  "client": "roo_code",
  "server_name": "brave-search"
}
  1. Then add the same configuration to Claude:

// Then add it to Claude with the same settings
{
  "client": "claude",
  "server_name": "brave-search",
  "json_config": {
    // Configuration retrieved from previous step
  },
  "allow_override": true
}

This allows you to easily synchronize your MCP server configurations across different AI assistants.

Tools

get_configuration_path

Retrieves the path to the configuration file for a specified client.

Parameters:

  • client (required): The client name (cline, roo_code, windsurf, claude)

Returns:

  • The absolute path to the configuration file

get_configuration

Retrieves the entire configuration for a specified client.

Parameters:

  • client (required): The client name (cline, roo_code, windsurf, claude)

Returns:

  • The complete JSON configuration from the client's configuration file

list_servers

Lists all server names configured in a specified client's configuration.

Parameters:

  • client (required): The client name (cline, roo_code, windsurf, claude)

Returns:

  • An array of server names

get_server_configuration

Retrieves the configuration for a specific server from a client's configuration.

Parameters:

  • client (required): The client name (cline, roo_code, windsurf, claude)

  • server_name (required): The name of the server to retrieve

Returns:

  • The JSON configuration for the specified server

add_server_configuration

Adds or updates a server configuration in a client's configuration file.

Parameters:

  • client (required): The client name (cline, roo_code, windsurf, claude)

  • server_name (required): The name of the server to add or update

  • json_config (required): The server configuration in JSON format

Example:

{
  "command": "npx",
  "args": ["-y", "@landicefu/android-adb-mcp-server"],
  "env": {},
  "disabled": false,
  "alwaysAllow": []
}

Returns:

  • A success message with the updated configuration

remove_server_configuration

Removes a server configuration from a client's configuration file.

Parameters:

  • client (required): The client name (cline, roo_code, windsurf, claude)

  • server_name (required): The name of the server to remove

Returns:

  • The removed configuration or a message that the server was not found

Implementation Details

  • The server detects the appropriate configuration file path based on the operating system (Windows or macOS) and the specified client.

  • All configuration files are maintained in a beautified JSON format after modifications.

  • Error handling is provided for cases where configuration files don't exist or cannot be accessed.

  • The server automatically creates configuration files and directories if they don't exist.

  • Configuration paths for each client:

    • Windows:

      • Cline: %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json

      • Roo Code: %APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json

      • WindSurf: %APPDATA%\WindSurf\mcp_settings.json

      • Claude: %APPDATA%\Claude\claude_desktop_config.json

    • macOS:

      • Cline: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

      • Roo Code: ~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json

      • WindSurf: ~/.codeium/windsurf/mcp_config.json

      • Claude: ~/Library/Application Support/Claude/claude_desktop_config.json

Troubleshooting

Common Issues

  1. Configuration file not found

    • When adding a new server, the configuration file will be created automatically if it doesn't exist.

    • For other operations, you'll receive an error message if the configuration file doesn't exist.

  2. Server already exists

    • When adding a server that already exists, you'll need to set allow_override to true to update it.

    • Example:

      {
        "client": "cline",
        "server_name": "existing-server",
        "json_config": { /* new config */ },
        "allow_override": true
      }
  3. Unsupported platform

    • Currently, only Windows and macOS are supported.

    • Linux support may be added in future versions.

Best Practices

  • Always check if a server exists before attempting to update or remove it.

  • Use consistent server names across clients to make management easier.

  • Consider using environment variables for sensitive information in server configurations.

Available Tools

6 tools
add_server_configurationC

Add or update a server configuration in a client configuration

ParametersJSON Schema
NameRequiredDescriptionDefault
clientYesClient name (cline, roo_code, windsurf, claude)
server_nameYesName of the server to add or update
json_configYesServer configuration in JSON format
allow_overrideNoWhether to allow overriding an existing server configuration with the same name (default: false)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'Add or update' which implies mutation, but fails to describe critical behaviors such as permissions required, idempotency, error handling, or what happens on conflicts (beyond the 'allow_override' parameter). This leaves significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It is front-loaded and appropriately sized, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a mutation tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits, error conditions, return values, and how it interacts with sibling tools. This makes it incomplete for safe and effective use by an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the input schema already documents all parameters thoroughly. The description does not add any additional meaning or context beyond what the schema provides, such as examples or usage notes for 'json_config' or 'client'. Thus, it meets the baseline but does not enhance understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add or update') and the target resource ('a server configuration in a client configuration'), making the purpose understandable. However, it does not explicitly differentiate from sibling tools like 'remove_server_configuration' or 'get_server_configuration', which would be needed for a score of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'remove_server_configuration' or 'get_server_configuration', nor does it mention prerequisites or context for usage. It merely restates the tool's function without offering operational context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_configurationC

Get the entire configuration for a specific client

ParametersJSON Schema
NameRequiredDescriptionDefault
clientYesClient name (cline, roo_code, windsurf, claude)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a 'Get' operation, implying read-only behavior, but doesn't clarify permissions, rate limits, error handling, or what 'entire configuration' entails (e.g., format, size). This leaves significant gaps for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what the 'entire configuration' returns (e.g., structure, data types) or address potential complexities like authentication needs or error cases, which are critical for a configuration retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the input schema fully documents the 'client' parameter. The description adds no additional meaning beyond implying the parameter selects a client, which is already clear from the schema. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('entire configuration for a specific client'), making the purpose understandable. It doesn't explicitly differentiate from sibling tools like 'get_configuration_path' or 'get_server_configuration', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'get_configuration_path' or 'get_server_configuration'. The description implies usage for client configurations but doesn't specify exclusions or prerequisites, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_configuration_pathC

Get the path to the configuration file for a specific client

ParametersJSON Schema
NameRequiredDescriptionDefault
clientYesClient name (cline, roo_code, windsurf, claude)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states a read operation ('Get'), implying it's likely safe and non-destructive, but doesn't specify whether it requires authentication, returns absolute/relative paths, handles errors for invalid clients, or has any rate limits. This leaves significant behavioral gaps for the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently conveys the core functionality without unnecessary words. It's front-loaded with the main action and resource, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete for effective tool use. It doesn't explain what the returned path looks like (e.g., string format, filesystem type), error conditions, or how it differs from sibling tools. For a tool with one parameter but no structured output info, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the single parameter 'client' fully documented in the schema. The description adds minimal value beyond the schema by implying the client name is used to locate a configuration file, but doesn't provide additional context like file format or location constraints. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('path to the configuration file'), making it immediately understandable. However, it doesn't explicitly distinguish this tool from its sibling 'get_configuration' (which likely retrieves configuration content rather than just the file path), missing full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_configuration' or 'get_server_configuration'. It mentions a 'specific client' but doesn't clarify if this is for client-side versus server-side configurations or when path retrieval is preferred over content retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_server_configurationB

Get the configuration for a specific server from a client configuration

ParametersJSON Schema
NameRequiredDescriptionDefault
clientYesClient name (cline, roo_code, windsurf, claude)
server_nameYesName of the server to retrieve

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Get' implies a read operation, the description doesn't specify whether this requires authentication, has rate limits, returns structured data, or what happens if the server doesn't exist. For a tool with zero annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently communicates the core purpose without unnecessary words. It's appropriately sized for a simple retrieval tool and front-loads the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation with no output schema and no annotations, the description provides the basic purpose but lacks important context. It doesn't explain what format the configuration returns, whether it's JSON/YAML/text, or what happens on errors. With siblings suggesting a configuration management system, more behavioral context would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description doesn't add any parameter information beyond what's already in the schema, which has 100% coverage with clear descriptions for both 'client' and 'server_name'. The baseline score of 3 reflects that the schema adequately documents parameters, though the description could have provided additional context about parameter relationships or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('configuration for a specific server from a client configuration'), making the purpose understandable. However, it doesn't explicitly differentiate this from sibling tools like 'get_configuration' or 'get_configuration_path', which likely retrieve different types of configuration data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_configuration' and 'get_configuration_path' that might retrieve different scopes of configuration data, there's no indication of when this specific server-focused retrieval is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_serversC

List all server names configured in a specific client

ParametersJSON Schema
NameRequiredDescriptionDefault
clientYesClient name (cline, roo_code, windsurf, claude)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it 'lists' server names, implying a read-only operation, but doesn't clarify whether this requires authentication, has rate limits, returns paginated results, or what format the output takes (e.g., list of strings, structured data). For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently conveys the core purpose without unnecessary words. It's appropriately sized and front-loaded with the essential information, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete for a tool that likely returns a list of server names. It doesn't explain the return format, error conditions, or behavioral traits like whether it's safe to call repeatedly. For a read operation with structured siblings, more context is needed to guide proper usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the single parameter 'client' fully documented in the schema. The description adds no additional parameter semantics beyond implying the tool operates within a client context, which is already covered by the schema's description. This meets the baseline of 3 when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List all server names') and resource ('configured in a specific client'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'get_server_configuration' or 'get_configuration', which might also retrieve server-related information but with different scope or detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_server_configuration' or 'get_configuration'. It mentions 'in a specific client' which implies a context, but doesn't state exclusions, prerequisites, or when-not-to-use scenarios relative to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_server_configurationC

Remove a server configuration from a client configuration

ParametersJSON Schema
NameRequiredDescriptionDefault
clientYesClient name (cline, roo_code, windsurf, claude)
server_nameYesName of the server to remove

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Remove' implies a destructive mutation, the description does not specify whether this action is reversible, what permissions are required, or the impact on the client configuration (e.g., if it affects functionality). It also omits details like error handling or response format, leaving significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and efficiently conveys the core action, making it easy to understand at a glance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that this is a destructive mutation tool with no annotations and no output schema, the description is incomplete. It fails to address critical aspects such as the consequences of removal, required permissions, error scenarios, or what the tool returns. For a tool that modifies configurations, more context is needed to ensure safe and correct usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with clear documentation for both parameters ('client' and 'server_name'). The description does not add any semantic details beyond what the schema provides, such as examples or constraints on parameter values. However, with high schema coverage, the baseline score of 3 is appropriate as the schema handles the parameter documentation adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove') and the target ('a server configuration from a client configuration'), which is specific and actionable. However, it does not explicitly distinguish this tool from its siblings like 'remove_server_configuration' vs 'add_server_configuration' or 'get_server_configuration', which would require mentioning the destructive nature or contrasting with read operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It lacks context such as prerequisites (e.g., the server must exist in the configuration), when not to use it (e.g., if the server is critical), or references to sibling tools like 'add_server_configuration' or 'get_server_configuration' for comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updates
    • First observedadd_server_configuration
    • First observedget_configuration
    • First observedget_configuration_path
    • First observedget_server_configuration
    • First observedlist_servers
    • First observedremove_server_configuration

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity: adding/updating, getting full config, getting config path, getting server-specific config, listing servers, and removing server config. The descriptions clearly differentiate between operations on the entire configuration versus specific servers.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using snake_case throughout. The naming convention is perfectly uniform with clear action prefixes (add, get, list, remove) followed by specific objects (server_configuration, configuration, configuration_path, etc.).

Tool Count5/5

Six tools is well-scoped for a client configuration management server. Each tool earns its place by covering essential CRUD operations for server configurations within client configs, plus utility functions for listing and path retrieval. The count is neither too sparse nor bloated.

Completeness5/5

The tool set provides complete lifecycle coverage for managing server configurations within client configurations: create/update (add_server_configuration), read (get_configuration, get_server_configuration, list_servers), delete (remove_server_configuration), plus utility (get_configuration_path). No obvious gaps exist for the stated domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    An MCP server that provides easy setup and configuration for multiple AI development environments including Claude Desktop, VS Code, and Windsurf. Offers automated installation scripts and manual configuration options for seamless integration across different MCP-compatible clients.
    1
    8
    -
  • F
    license
    A
    quality
    C
    maintenance
    A robust MCP server with tools to search, install, configure, repair, and uninstall MCP servers, automating setup and maintenance across multiple AI and developer tools.
    4
    17
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Automatically synchronizes and deduplicates MCP configurations from Claude Code, Codex CLI, Cursor Agent, and custom sources, providing a centralized view and management interface.
    564
    1
    MIT