Merge pull request #118 from samefarrar/mcp-instead-of-fastmcp-install
Use mcp instead of fastmcp CLI as command in "mcp install"
This commit is contained in:
commit
21ac4043d5
2 changed files with 58 additions and 2 deletions
|
|
@ -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)
|
||||
|
||||
|
|
@ -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",
|
||||
|
|
|
|||
56
tests/client/test_config.py
Normal file
56
tests/client/test_config.py
Normal file
|
|
@ -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()
|
||||
Loading…
Reference in a new issue