Understanding And Using The `ftk Config` Command For MCP Server Management
Hey guys! Today, we're diving deep into the ftk config
command, a crucial tool for managing your MCP (Model Context Protocol) servers. This command is designed to make your life easier after the initial setup, allowing you to view, install, and uninstall supported MCP servers. So, let's break it down and see how it works!
What is the ftk config
Command?
The ftk config
command is essentially a post-initialization management interface for MCP servers. Think of it as your central hub for handling everything related to your servers after you've run ftk init
. It allows you to:
- See which MCP servers are currently installed: Get a clear overview of your existing server setup.
- Add new servers from the registry: Expand your capabilities by installing additional servers.
- Remove servers you no longer need: Keep your system clean and efficient by uninstalling unused servers.
- Update server configurations: Ensure your servers are running smoothly with the latest settings.
Why is this important?
After the initial setup with ftk init
, your needs might evolve. You might want to add new functionalities or remove servers that are no longer necessary. The ftk config
command provides a streamlined way to manage these changes without having to dig into configuration files manually. This not only saves time but also reduces the risk of errors.
Use Cases for ftk config
To illustrate the importance, let's consider some common scenarios where ftk config
comes in handy:
- Expanding Functionality: Imagine you've started with a basic setup but now need to integrate a new MCP server for handling specific tasks. With
ftk config
, you can easily install the new server and configure it to work with your existing setup. - Streamlining Resources: On the flip side, you might find that you no longer need a particular server. Using
ftk config
, you can uninstall it, freeing up resources and reducing clutter. - Updating Configurations: Servers often require updates to their configurations, whether it's for security patches, new features, or changes in your workflow.
ftk config
allows you to manage these updates in a consistent and reliable way.
Core Functionality of ftk config
The ftk config
command is packed with features to help you manage your MCP servers effectively. Let's take a closer look at the core functionalities:
1. Listing Current Configuration
One of the primary uses of ftk config
is to display the current MCP server configuration. This involves:
- Using
claude mcp list
to get all installed MCP servers: This command provides a comprehensive list of all servers currently installed on your system. - Using
claude mcp get <server-name>
to retrieve detailed configuration for each server: For a deeper dive, this command allows you to fetch specific details about each server's configuration. - Cross-referencing with the fluent-toolkit registry: This step is crucial for identifying the status of each server. The registry helps categorize servers as:
- Supported servers that are installed: These are the servers that are fully managed by
ftk config
. - Unsupported/custom servers: These servers are displayed, but
ftk config
does not manage them directly. - Supported servers that are not installed: These are servers available in the registry but not currently installed on your system.
- Supported servers that are installed: These are the servers that are fully managed by
2. Displaying Status
The command presents a clear and concise status display, making it easy to understand the current configuration. Here’s an example of what the output might look like:
$ ftk config
MCP Servers Configuration:
Core Servers:
âś“ sequential @modelcontextprotocol/server-sequential-thinking
âś“ basic-memory @modelcontextprotocol/server-memory
Optional Servers:
âś“ notion @notionhq/notion-mcp-server (authenticated)
â—‹ [other-server] (not installed)
Custom Servers:
âš my-custom-server /path/to/custom/server (not managed by ftk)
Actions:
[i] Install new server
[u] Uninstall server
[c] Configure server
[q] Quit
In this display, you can quickly see:
- Core Servers: Essential servers that are part of the core functionality.
- Optional Servers: Additional servers that can be installed to extend capabilities.
- Custom Servers: Servers that are not managed by
ftk config
.
The symbols used provide a quick visual cue:
- âś“ (Green checkmark): Indicates an installed and working server.
- â—‹ (White circle): Indicates a server that is not installed.
- âš (Yellow warning sign): Indicates a custom server that is not managed by
ftk
.
3. Installing a Server
The installation flow is designed to be user-friendly and straightforward:
- Present a list of uninstalled servers from the registry: You'll see a clear list of available servers that you can install.
- User selects a server to install: Simply choose the server you want to add to your system.
- Run the server's
configure()
lifecycle method if authentication is needed: This step ensures that the server is properly configured, especially if it requires authentication. - Generate and append the configuration to
.mcp.json
: The configuration details are automatically added to the.mcp.json
file, which stores the server settings. - Update
CLAUDE.md
with server-specific instructions: TheCLAUDE.md
file is updated with any specific instructions or information related to the newly installed server. - Verify the installation with
claude mcp get <server-name>
: A final check to ensure that the server is correctly installed and configured.
4. Uninstalling a Server
Removing a server is just as easy as installing one:
- Present a list of installed servers (ftk-managed only): You'll see a list of servers that
ftk config
can manage. - User selects a server to remove: Choose the server you want to uninstall.
- Confirm the removal: A confirmation step to prevent accidental uninstalls.
- Remove the server configuration from
.mcp.json
: The server's configuration is removed from the.mcp.json
file. - Remove server-specific sections from
CLAUDE.md
: Any sections in theCLAUDE.md
file related to the server are removed to keep the documentation clean. - Verify the removal with
claude mcp list
: A final check to ensure that the server has been successfully uninstalled.
5. Configuring/Reconfiguring a Server
Sometimes, you might need to update a server's configuration, whether it's to refresh authentication tokens or adjust settings. ftk config
makes this process simple:
- Allow updating server configuration: You can modify the settings of an installed server.
- Re-run the server's
configure()
lifecycle method: This ensures that the server is properly reconfigured with the new settings. - Update
.mcp.json
and.env.mcp.secrets
as needed: The configuration files are updated to reflect the changes.
Implementation Details
To understand how ftk config
works under the hood, let's explore some implementation details.
Using Claude CLI Commands
The ftk config
command leverages the Claude CLI (Command Line Interface) to interact with MCP servers. Here are some key commands:
- List all servers:
claude mcp list
- Get server details:
claude mcp get <server-name>
Example Parsing Strategy
Here’s an example of how you might parse the output from the Claude CLI using TypeScript:
async function getInstalledServers() {
const listResult = await Deno.Command("claude", {
args: ["mcp", "list"],
}).output();
const installedServers = parseClaudeOutput(listResult);
// For each server, get detailed config
const serverDetails = await Promise.all(
installedServers.map(async (name) => {
const getResult = await Deno.Command("claude", {
args: ["mcp", "get", name],
}).output();
return parseServerConfig(getResult);
})
);
return serverDetails;
}
This code snippet demonstrates how to use Deno.Command
to execute Claude CLI commands and parse their output.
Registry Integration
Registry integration is a crucial aspect of ftk config
. It involves:
- Loading the server registry (
registry/index.ts
): The registry contains information about available MCP servers. - Matching installed servers against the registry: This step helps identify the status of each server.
- Identifying servers as:
- ftk-managed: Servers that are in the registry and installed.
- available: Servers that are in the registry but not installed.
- custom: Servers that are installed but not in the registry.
Configuration Updates
When installing or uninstalling servers, ftk config
follows a specific process to ensure data integrity:
- Read the current
.mcp.json
. - Modify the server configuration as needed.
- Write the updated
.mcp.json
. - Update
CLAUDE.md
fragments. - Verify changes with
claude mcp list
.
CLAUDE.md Management
Maintaining the CLAUDE.md
file is essential for documentation. ftk config
handles this by:
- Appending the server's
claude.md
fragment when installing a server. - Removing the server's specific section when uninstalling a server.
- Maintaining a clean separation between server documentation.
User Interface
The user interface of ftk config
is designed to be intuitive and user-friendly.
Interactive Menu
The command uses an interactive menu, often powered by libraries like @cliffy/prompt
, to guide users through the process. Here’s an example:
import { Select, Confirm } from "@cliffy/prompt";
const action = await Select.prompt({
message: "What would you like to do?",
options: [
{ name: "Install new server", value: "install" },
{ name: "Uninstall server", value: "uninstall" },
{ name: "Configure server", value: "configure" },
{ name: "Exit", value: "exit" },
],
});
This code snippet shows how to create a menu with options for installing, uninstalling, and configuring servers.
Status Display
Color coding is used to provide a quick visual representation of server status:
- âś… Green: Installed and working.
- ⚠️ Yellow: Custom/unmanaged servers.
- ❌ Red: Available but not installed.
- ℹ️ Blue: Authentication status.
Handling Edge Cases
Like any robust tool, ftk config
is designed to handle various edge cases gracefully.
Claude CLI Not Available
If the Claude CLI is not available, ftk config
will:
- Detect if the
claude
command exists. - Provide a clear error message with installation instructions.
- Fallback to reading
.mcp.json
directly (read-only mode).
Configuration Conflicts
To prevent configuration conflicts, ftk config
will:
- Detect if a server already exists with a different configuration.
- Prompt the user to choose: overwrite, merge, or cancel.
- Backup the existing configuration before making changes.
Partial Installations
In cases of partial installations, ftk config
will:
- Handle servers that are in
.mcp.json
but not recognized by the Claude CLI. - Offer to repair or remove broken configurations.
Command Variants
ftk config
offers several command variants to suit different use cases:
# Interactive mode (default)
ftk config
# List servers only (non-interactive)
ftk config list
# Install specific server
ftk config install notion
# Uninstall specific server
ftk config uninstall notion
# Show status of specific server
ftk config status notion
These variants provide flexibility in how you interact with the command.
Acceptance Criteria
To ensure ftk config
is working correctly, it should meet the following acceptance criteria:
ftk config
displays the current MCP server status.- Users can install new servers from the registry.
- Users can uninstall existing ftk-managed servers.
- Users can reconfigure/update server settings.
- The command uses
claude mcp list
andclaude mcp get
for state detection. - Custom (non-ftk) servers are visible but not manageable.
- Changes are reflected in
.mcp.json
andCLAUDE.md
. - Verification confirms successful install/uninstall operations.
- It works gracefully when the Claude CLI is not available.
Future Enhancements
There are several potential enhancements for ftk config
in the future, including:
ftk config update
- Update all servers to the latest versions.ftk config validate
- Verify that all configurations are working.ftk config export
- Export the configuration for sharing.ftk config import
- Import the configuration from a file.
Related Issues
ftk config
is related to several other issues and features, such as:
- #1 - Claude Code installation checks (should be done before
ftk config
). - #2 - Notion MCP support (will be managed via
ftk config
).
Conclusion
The ftk config
command is a powerful tool for managing MCP servers, providing a user-friendly interface for installing, uninstalling, and configuring servers. By understanding its core functionalities, implementation details, and edge-case handling, you can leverage ftk config
to streamline your MCP server management tasks. Whether you're expanding your system with new servers or keeping your configuration up-to-date, ftk config
has you covered. So go ahead and try it out! You'll find it's an indispensable part of your toolkit. And, as always, stay curious and keep exploring the possibilities!