Test corpus
A curated list of MCP servers to sanity-check mcpal against on every release. Each row stresses a different edge of the protocol or the mcpal surface.
stdio + required env
io.github.codeurali/dataverse — Microsoft Dataverse
mcpal server install io.github.codeurali/dataverse
# Prompts for DATAVERSE_ENV_URL on TTY; bails with E0017 otherwise.
mcpal tool list dataverse
Stresses: env-var prompt path (v0.4.1); registry semver-max (v0.4.0).
awslabs.aws-api-mcp-server — AWS API via uvx
mcpal server add aws-api \
--env AWS_PROFILE=default --env AWS_REGION=us-east-1 \
-- uvx awslabs.aws-api-mcp-server@latest
mcpal tool list aws-api
Stresses: long cold start (~30s); uvx; --env propagation.
@modelcontextprotocol/server-postgres
mcpal server add pg \
--env DATABASE_URL=postgres://localhost/test \
-- npx -y @modelcontextprotocol/server-postgres
Stresses: DATABASE_URL; SQL injection in tool args; resource subscriptions.
Broken on init
mcp-dataverse@0.1.0
mcpal server add bd --force -- npx -y mcp-dataverse@0.1.0
mcpal tool list bd
# error[E0006]: ... (child stderr: ENOENT package.json)
Stresses: child stderr surfacing (v0.4.0). Without the v0.4.0 fix the failure is opaque.
HTTP + OAuth (PKCE + DCR)
Notion
mcpal server add notion --http https://mcp.notion.com/v1 --oauth
mcpal tool list notion
mcpal auth refresh notion
Stresses: browser handshake; refresh-token storage; loopback listener.
HTTP + static bearer
GitHub Copilot MCP
mcpal server add gh \
--http https://api.githubcopilot.com/mcp/ \
--bearer "$GH_TOKEN"
mcpal tool list gh
Stresses: --bearer keyring write; promote-from-import.
Pagination + notifications + resources
@modelcontextprotocol/server-everything
mcpal server add ev -- npx -y @modelcontextprotocol/server-everything
mcpal tool list ev | wc -l # 100+ tools
mcpal watch ev # streams progress + log + list-changed
mcpal resource subscribe ev demo://resource/dynamic/0
mcpal tool call ev sample --message hi # exercises sampling
mcpal tool call ev eliciting --message x # exercises elicitation
Stresses: pagination; notification stream; resource subscribe; sampling / elicitation handlers.
mcp-ui / OpenAI Apps payloads
(Pending: a stable demo server. For now use the unit tests in
crates/mcpal/src/commands/ui.rs and add fixture servers when they
become available.)
Multi-source same-name
chrome-devtools is typically registered in both opencode and
claude-code configs. Verify:
mcpal server discover --source opencode | grep chrome-devtools
mcpal server discover --source claude-code | grep chrome-devtools
mcpal tool list opencode:chrome-devtools
mcpal tool list claude-code:chrome-devtools
mcpal tool list chrome-devtools # ambiguous — fails with hint
Stresses: bare-name disambiguation.
fastmcp banner
(Pending: a local FastMCP demo. Stresses: controlling-terminal detach via setsid; TUI alt-screen integrity.)
Known gaps (currently UNTESTED)
- HTTP servers behind a private CA / self-signed cert.
- Windows Store install of Claude Desktop (
%LOCALAPPDATA%\Packages\...). - Servers that emit JSON on stdout outside the MCP framing (protocol violation; mcpal's behaviour is undefined).
Every release ritual runs at least the stdio + HTTP + everything-server smoke before tagging.