Add host-specific MCP onramps for major chat clients
Ship first-class MCP setup examples for Claude Code, Codex, and OpenCode so new users can copy one exact command or config instead of translating the generic MCP template by hand. Reposition the docs to surface those host-specific examples before the generic config fallback, keep workspace-core as the recommended profile everywhere user-facing, and retain Claude Desktop/Cursor as secondary fallback examples. Bump the package and catalog to 3.11.0, mark the roadmap milestone done, and add docs-alignment coverage that pins the new examples to the canonical workspace-core server command and the expected OpenCode config shape. Validation: - uv lock - ./.venv/bin/pytest --no-cov tests/test_cli.py - UV_CACHE_DIR=.uv-cache make check - UV_CACHE_DIR=.uv-cache make dist-check
This commit is contained in:
parent
79a7d71d3b
commit
68d8e875e0
15 changed files with 211 additions and 28 deletions
|
|
@ -2807,21 +2807,73 @@ def test_cli_workspace_shell_open_prints_id_only(
|
|||
def test_chat_host_docs_and_examples_recommend_workspace_core() -> None:
|
||||
readme = Path("README.md").read_text(encoding="utf-8")
|
||||
install = Path("docs/install.md").read_text(encoding="utf-8")
|
||||
first_run = Path("docs/first-run.md").read_text(encoding="utf-8")
|
||||
integrations = Path("docs/integrations.md").read_text(encoding="utf-8")
|
||||
mcp_config = Path("examples/mcp_client_config.md").read_text(encoding="utf-8")
|
||||
claude_code = Path("examples/claude_code_mcp.md").read_text(encoding="utf-8")
|
||||
codex = Path("examples/codex_mcp.md").read_text(encoding="utf-8")
|
||||
opencode = json.loads(Path("examples/opencode_mcp_config.json").read_text(encoding="utf-8"))
|
||||
claude_cmd = (
|
||||
"claude mcp add pyro -- uvx --from pyro-mcp pyro mcp serve --profile workspace-core"
|
||||
)
|
||||
codex_cmd = (
|
||||
"codex mcp add pyro -- uvx --from pyro-mcp pyro mcp serve --profile workspace-core"
|
||||
)
|
||||
|
||||
assert "## Chat Host Quickstart" in readme
|
||||
assert "pyro mcp serve --profile workspace-core" in readme
|
||||
assert claude_cmd in readme
|
||||
assert codex_cmd in readme
|
||||
assert "examples/opencode_mcp_config.json" in readme
|
||||
assert "recommended first profile for normal persistent chat editing" in readme
|
||||
|
||||
assert "## Chat Host Quickstart" in install
|
||||
assert "pyro mcp serve --profile workspace-core" in install
|
||||
assert claude_cmd in install
|
||||
assert codex_cmd in install
|
||||
assert "advanced 3.x compatibility surface" in install
|
||||
|
||||
assert claude_cmd in first_run
|
||||
assert codex_cmd in first_run
|
||||
|
||||
assert "Start most chat hosts with `workspace-core`." in integrations
|
||||
assert "examples/claude_code_mcp.md" in integrations
|
||||
assert "examples/codex_mcp.md" in integrations
|
||||
assert "examples/opencode_mcp_config.json" in integrations
|
||||
assert '`Pyro.create_server(profile="workspace-core")` for most chat hosts' in integrations
|
||||
|
||||
assert "Recommended default for most chat hosts: `workspace-core`." in mcp_config
|
||||
assert "Use the host-specific examples first when they apply:" in mcp_config
|
||||
assert "claude_code_mcp.md" in mcp_config
|
||||
assert "codex_mcp.md" in mcp_config
|
||||
assert "opencode_mcp_config.json" in mcp_config
|
||||
|
||||
assert claude_cmd in claude_code
|
||||
assert "claude mcp list" in claude_code
|
||||
assert "workspace-full" in claude_code
|
||||
|
||||
assert codex_cmd in codex
|
||||
assert "codex mcp list" in codex
|
||||
assert "workspace-full" in codex
|
||||
|
||||
assert opencode == {
|
||||
"mcp": {
|
||||
"pyro": {
|
||||
"type": "local",
|
||||
"enabled": True,
|
||||
"command": [
|
||||
"uvx",
|
||||
"--from",
|
||||
"pyro-mcp",
|
||||
"pyro",
|
||||
"mcp",
|
||||
"serve",
|
||||
"--profile",
|
||||
"workspace-core",
|
||||
],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def test_content_only_read_docs_are_aligned() -> None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue