Skip to content

Latest commit

 

History

History
115 lines (81 loc) · 3.31 KB

File metadata and controls

115 lines (81 loc) · 3.31 KB

MCP Server Deployments

This repository is organized for both custom MCP server source code and reusable deployment definitions.

Directory layout

deployments/
  github-mcp/
    .env.example
    mcp-client.json
    test-stdio.ps1
  playwright-mcp/
    mcp-client.json
    test-stdio.ps1
scripts/
  demo_load_mcp_servers.py
  list_github_mcp_tools.py
  test_github_mcp_stdio.py
  test_playwright_mcp_stdio.py

Use deployments/<server-name>/ for MCP server deployment notes, client config templates, and local smoke tests. Keep custom MCP server source code in a normal package directory, then add its deployment files under deployments/<server-name>/.

Local multi-server loader

Use deployments/mcp.local.yaml for the local personal-assistant MCP stack. The shape is intentionally small and mirrors common Codex/OpenCode stdio configuration patterns:

mcpServers:
  name:
    type: stdio
    command: "program"
    args: ["arg1", "arg2"]
    env_files: [".env"]
    env:
      KEY: "value"
    required_env: ["KEY"]

Run the local demo:

.venv\Scripts\python.exe scripts\demo_load_mcp_servers.py

The script starts every enabled server in the YAML file, sends MCP initialize, lists tools with tools/list, then calls one sample tool for FRED and one sample tool for GitHub.

GitHub MCP server

Use the existing local image directly:

docker.xuanyuan.run/mcp/github:latest

Create a local environment file:

Copy-Item deployments/github-mcp/.env.example deployments/github-mcp/.env

Set GITHUB_PERSONAL_ACCESS_TOKEN in deployments/github-mcp/.env.

For a fine-grained GitHub personal access token, grant access only to the repositories this MCP server should operate on. For reading repository files, grant repository Contents read permission. Add issue, pull request, or contents write permissions only if you need the corresponding write tools.

The GitHub MCP server runs over stdio, so it is normally launched by an MCP client instead of being kept as a long-running HTTP service. Use deployments/github-mcp/mcp-client.json as a client configuration template.

Smoke test:

python scripts/test_github_mcp_stdio.py

The Python smoke test starts the Docker container, sends initialize and tools/list over stdin, then prints the JSON-RPC responses from stdout.

List all GitHub MCP tools and input parameters:

python scripts/list_github_mcp_tools.py

Test reading a repository file:

python scripts/test_github_mcp_stdio.py --owner modelcontextprotocol --repo servers --path README.md

Playwright MCP server

Use the existing local image directly:

docker.xuanyuan.run/mcp/playwright:latest

The Playwright MCP server runs over stdio and launches a browser from the container. Use deployments/playwright-mcp/mcp-client.json as a client configuration template.

Smoke test:

python scripts/test_playwright_mcp_stdio.py --summary

The Python smoke test starts the Docker container, sends initialize and tools/list, then calls browser_navigate and browser_evaluate to open a Google search page and read back the page title, URL, and a short text excerpt.

Test a different Google query:

python scripts/test_playwright_mcp_stdio.py --query "fastmcp github" --summary