Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/mcp/cli/claude.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def update_claude_config(
args = ["run"]

# Collect all packages in a set to deduplicate
packages = {"fastmcp"}
packages = {"mcp"}
if with_packages:
packages.update(pkg for pkg in with_packages if pkg)

Expand All @@ -107,7 +107,7 @@ def update_claude_config(
file_spec = str(Path(file_spec).resolve())

# Add fastmcp run command
args.extend(["fastmcp", "run", file_spec])
args.extend(["mcp", "run", file_spec])

server_config = {
"command": "uv",
Expand Down
56 changes: 56 additions & 0 deletions tests/client/test_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import json
import subprocess
from pathlib import Path
from unittest.mock import patch

import pytest

from mcp.cli.claude import update_claude_config


@pytest.fixture
def temp_config_dir(tmp_path):
"""Create a temporary Claude config directory."""
config_dir = tmp_path / "Claude"
config_dir.mkdir()
return config_dir

@pytest.fixture
def mock_config_path(temp_config_dir):
"""Mock get_claude_config_path to return our temporary directory."""
with patch('mcp.cli.claude.get_claude_config_path', return_value=temp_config_dir):
yield temp_config_dir

def test_command_execution(mock_config_path):
"""Test that the generated command can actually be executed."""
# Setup
server_name = "test_server"
file_spec = "test_server.py:app"

# Update config
success = update_claude_config(
file_spec=file_spec,
server_name=server_name,
)
assert success

# Read the generated config
config_file = mock_config_path / "claude_desktop_config.json"
config = json.loads(config_file.read_text())

# Get the command and args
server_config = config["mcpServers"][server_name]
command = server_config["command"]
args = server_config["args"]

test_args = [command] + args + ["--help"]

result = subprocess.run(
test_args,
capture_output=True,
text=True,
timeout=5
)

assert result.returncode == 0
assert "usage" in result.stdout.lower()