Examples
mcp-assert ships with 44 suites for 38 MCP servers in 6 languages (Go, TypeScript, Python, Rust, Kotlin/Java, Swift), plus a trajectory suite that runs without a server. 3 transports: stdio, SSE, HTTP. 462 total assertions.
Summary
| Suite | Server | Language | Transport | Assertions |
|---|---|---|---|---|
examples/filesystem/ |
@modelcontextprotocol/server-filesystem |
TypeScript | stdio | 14 |
examples/memory/ |
@modelcontextprotocol/server-memory |
TypeScript | stdio | 9 |
examples/mcp-time/ |
mcp-server-time |
Python | stdio | 5 |
examples/mcp-fetch/ |
mcp-server-fetch |
Python | stdio | 3 |
examples/mcp-git/ |
mcp-server-git |
Python | stdio | 11 |
examples/sqlite/ |
mcp-server-sqlite |
Python | stdio | 9 |
examples/mcp-everything-ts/ |
@modelcontextprotocol/server-everything |
TypeScript | stdio | 13 |
examples/fastmcp-testing-demo/ |
PrefectHQ/fastmcp testing_demo | Python | stdio | 16 |
examples/fastmcp-testing-demo-sse/ |
PrefectHQ/fastmcp testing_demo | Python | SSE | 11 |
examples/agent-lsp-go/ |
agent-lsp + gopls | Go | stdio | 63 |
examples/mcp-go-everything/ |
mark3labs/mcp-go everything | Go | stdio | 9 |
examples/mcp-go-everything-http/ |
mark3labs/mcp-go everything | Go | HTTP | 5 |
examples/mcp-go-everything-prompts/ |
mark3labs/mcp-go everything | Go | stdio | 4 |
examples/mcp-go-everything-resources/ |
mark3labs/mcp-go everything | Go | stdio | 4 |
examples/mcp-go-typed-tools/ |
mark3labs/mcp-go typed_tools | Go | stdio | 3 |
examples/mcp-go-structured/ |
mark3labs/mcp-go structured | Go | stdio | 6 |
examples/mcp-go-roots/ |
mark3labs/mcp-go roots_server | Go | stdio | 1 |
examples/mcp-go-sampling/ |
mark3labs/mcp-go sampling_server | Go | stdio | 3 |
examples/mcp-go-elicitation/ |
mark3labs/mcp-go elicitation | Go | stdio | 4 |
examples/mcp-go-everything-completion/ |
mark3labs/mcp-go everything | Go | stdio | 3 |
examples/mcp-go-everything-logging/ |
mark3labs/mcp-go everything | Go | stdio | 2 |
examples/github-mcp/ |
github/github-mcp-server | Go | stdio | 20 |
examples/rmcp-counter/ |
4t145/rmcp counter | Rust | stdio | 14 |
examples/rust-filesystem/ |
rust-mcp-stack/rust-mcp-filesystem | Rust | stdio | 23 |
examples/excel-mcp/ |
haris-musa/excel-mcp-server | Python | stdio | 15 |
examples/antvis-chart/ |
antvis/mcp-server-chart | TypeScript | stdio | 25 |
examples/notion-mcp/ |
makenotion/notion-mcp-server | TypeScript | stdio | 22 |
examples/terraform-mcp/ |
hashicorp/terraform-mcp-server | Go | stdio | 5 |
examples/mongodb-mcp/ |
mongodb/mongodb-mcp-server | TypeScript | stdio | 4 |
examples/spring-mcp/ |
jamesward/hello-spring-mcp-server | Kotlin | HTTP | 3 |
examples/playwright-mcp/ |
microsoft/playwright-mcp | TypeScript | stdio | 14 |
examples/openai-deep-research/ |
openai/sample-deep-research-mcp | Python | stdio | 4 |
examples/google-storage-mcp/ |
@google-cloud/storage-mcp | TypeScript | stdio | 6 |
examples/grafana-mcp/ |
grafana/mcp-grafana | Go | stdio | 17 |
examples/arxiv-mcp/ |
blazickjp/arxiv-mcp-server | Python | stdio | 5 |
examples/aws-docs-mcp/ |
awslabs/aws-documentation-mcp-server | Python | stdio | 4 |
examples/exa-mcp/ |
exa-labs/exa-mcp-server | JavaScript | stdio | 2 |
examples/git-mcp-idosal/ |
onmyway133/git-mcp | TypeScript | stdio | 14 |
examples/perplexity-mcp/ |
perplexityai/mcp-server | TypeScript | stdio | 4 |
examples/engram/ |
Gentleman-Programming/engram | Go | stdio | 16 |
examples/codegraph-context/ |
nicobailey/codegraph-context-mcp | TypeScript | stdio | 16 |
examples/deep-research/ |
u14app/deep-research | JavaScript | HTTP | 5 |
examples/peekaboo/ |
steipete/Peekaboo | Swift | stdio | 6 |
examples/trajectory/ |
Inline trace (no server) | N/A | N/A | 20 |
Filesystem server. TypeScript
Directory: examples/filesystem/
Tests the official @modelcontextprotocol/server-filesystem. 14 assertions: read file, read multiple files, read text file, list directory, list directory with sizes, directory tree, get file info, search files, write file, edit file, create directory, move file, list allowed directories, and a negative test that verifies path traversal is rejected. 92% tool coverage (13/14 tools; read_media_file excluded due to upstream spec violation).
npm install -g @modelcontextprotocol/server-filesystem
mcp-assert run --suite examples/filesystem --fixture examples/filesystem/fixtures
Memory server. TypeScript
Directory: examples/memory/
Tests the official @modelcontextprotocol/server-memory. 9 assertions with stateful setup and 100% tool coverage (9/9 tools): create entities, add observations, create relations, search nodes, open nodes, delete entities, delete observations, delete relations, and verify empty search returns nothing.
npm install -g @modelcontextprotocol/server-memory
mcp-assert run --suite examples/memory
SQLite server. Python
Directory: examples/sqlite/
Tests the official mcp-server-sqlite (Python). 9 assertions with 100% tool coverage (6/6 tools): list tables, SELECT queries, COUNT, JOINs, describe table schema, CREATE TABLE, INSERT, write query, and error handling for invalid SQL. Fixture is a pre-built .db file.
uvx mcp-server-sqlite # or: pip install mcp-server-sqlite
mcp-assert run --suite examples/sqlite --fixture examples/sqlite/fixtures
fastmcp testing_demo. Python
Directory: examples/fastmcp-testing-demo/
Tests the testing_demo example server from PrefectHQ/fastmcp (25K stars), the most popular Python MCP framework. 16 assertions covering all three MCP feature categories:
- Tools (11):
add(sum, negative numbers, zero, missing argument error),greet(default greeting, custom greeting, empty name), andasync_multiply(product, zero, negative, fractional). 100% tool coverage. - Resources (3):
resources/list(verifiesdemo://infois exposed),resources/read demo://info(static server info),resources/read demo://greeting/Alice(parameterized template resource). - Prompts (2):
prompts/list(verifieshelloandexplainare exposed),prompts/get hellowithname: "Alice"argument.
The assertions reference the server at /tmp/fastmcp/examples/testing_demo/server.py. Clone the repo before running:
git clone --depth 1 https://github.com/PrefectHQ/fastmcp.git /tmp/fastmcp
mcp-assert run --suite examples/fastmcp-testing-demo
You can also use --server to override the path if you cloned to a different location.
agent-lsp. Go
Directory: examples/agent-lsp-go/
Tests agent-lsp with gopls. 63 assertions covering all 50 tools: navigation, refactoring, analysis, session lifecycle, workspace, and build. 100% tool coverage.
git clone --depth 1 https://github.com/blackwell-systems/agent-lsp.git /tmp/agent-lsp
mcp-assert run --suite examples/agent-lsp-go --fixture /tmp/agent-lsp/test/fixtures/go
mcp-go everything. Go (stdio)
Directory: examples/mcp-go-everything/
Tests the mark3labs/mcp-go SDK's examples/everything server over stdio. 9 assertions: echo, add, image content, resource link, notification, and long-running operation (skipped due to known stdio transport bug). 100% tool coverage for non-buggy tools.
# Build the everything server from the mcp-go repo
mcp-assert run --suite examples/mcp-go-everything
mcp-go everything. Go (HTTP)
Directory: examples/mcp-go-everything-http/
Same tools as the stdio suite, tested over streamable HTTP transport. 5 assertions. Demonstrates transport-agnostic testing: the same tool expectations work over both stdio and HTTP without changing the expect: blocks.
# Start the everything server with HTTP transport, then:
mcp-assert run --suite examples/mcp-go-everything-http
mcp-go everything prompts. Go
Directory: examples/mcp-go-everything-prompts/
Tests prompts/list and prompts/get on the mcp-go everything server. 4 assertions: list prompts, get static prompt, get template prompt with arguments, and a pagination pattern example using json_path on cursor values.
mcp-assert run --suite examples/mcp-go-everything-prompts
mcp-go everything resources. Go
Directory: examples/mcp-go-everything-resources/
Tests resources/list, resources/read, resources/subscribe, and resources/unsubscribe on the mcp-go everything server. 4 assertions: list resources (verifies test://static/resource is exposed), read a specific resource by URI, subscribe to a resource, and subscribe then unsubscribe.
mcp-assert run --suite examples/mcp-go-everything-resources
mcp-go typed_tools. Go
Directory: examples/mcp-go-typed-tools/
Tests the mark3labs/mcp-go typed_tools example server. 3 assertions: greeting with required parameters, greeting with optional parameters, and error handling for missing required input. 100% tool coverage.
mcp-assert run --suite examples/mcp-go-typed-tools
mcp-go structured. Go
Directory: examples/mcp-go-structured/
Tests the mark3labs/mcp-go structured_input_and_output example server. 6 assertions: weather data, user profile, image assets, and manual structured results. Demonstrates json_path assertions on structured response objects. 100% tool coverage.
mcp-assert run --suite examples/mcp-go-structured
mcp-go roots. Go
Directory: examples/mcp-go-roots/
Tests the mark3labs/mcp-go roots_server example. 1 assertion: the roots tool calls roots/list back to the client, and mcp-assert responds with the configured workspace roots via client_capabilities.roots. 100% tool coverage.
mcp-assert run --suite examples/mcp-go-roots --fixture examples/mcp-go-roots/fixtures
mcp-go sampling. Go
Directory: examples/mcp-go-sampling/
Tests the mark3labs/mcp-go sampling_server example. 3 assertions: ask_llm with a custom system prompt, ask_llm without a system prompt, and greet (verifying non-sampling tools work normally when client_capabilities.sampling is set). mcp-assert responds to sampling/createMessage requests with a mock LLM response. 100% tool coverage.
mcp-assert run --suite examples/mcp-go-sampling
mcp-go elicitation. Go
Directory: examples/mcp-go-elicitation/
Tests the mark3labs/mcp-go elicitation example server. 4 assertions: create_project, cancel_flow, decline_flow, and validation_constraints. Each triggers an elicitation/create request, and mcp-assert responds with preset field values via client_capabilities.elicitation.
mcp-assert run --suite examples/mcp-go-elicitation
mcp-go everything completion. Go
Directory: examples/mcp-go-everything-completion/
Tests completion/complete on the mcp-go everything server. 3 assertions: completion for a prompt argument, completion for a resource URI, and completion with an empty prefix.
mcp-assert run --suite examples/mcp-go-everything-completion
mcp-go everything logging. Go
Directory: examples/mcp-go-everything-logging/
Tests logging/setLevel on the mcp-go everything server. 2 assertions: setting the log level and capturing log messages after a tool call.
mcp-assert run --suite examples/mcp-go-everything-logging
GitHub MCP Server. Go
Directory: examples/github-mcp/
Tests github/github-mcp-server (28K+ stars), the most popular MCP server. 20 assertions targeting 17 read-only tools across 7 toolsets: context (get_me), repos (get_file_contents, search_repositories, search_code, list_branches, list_commits, list_tags, list_releases, get_latest_release, get_release_by_tag), git (get_repository_tree), issues (list_issues, search_issues), pull requests (list_pull_requests, search_pull_requests), users (search_users), gists (list_gists). Requires a GITHUB_PERSONAL_ACCESS_TOKEN environment variable.
The assertions reference github-mcp-server in PATH. Build and install the server before running:
git clone --depth 1 https://github.com/github/github-mcp-server.git /tmp/github-mcp-server
cd /tmp/github-mcp-server && go build -o github-mcp-server ./cmd/github-mcp-server
# Add to PATH or use --server to override:
mcp-assert run --suite examples/github-mcp --server "/tmp/github-mcp-server/github-mcp-server stdio"
Or if github-mcp-server is already in your PATH:
# Create a token at https://github.com/settings/tokens with repo + read:user scopes
GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_TOKEN mcp-assert run --suite examples/github-mcp
Anthropic time server. Python
Directory: examples/mcp-time/
Tests the official mcp-server-time. 5 assertions: UTC time, named timezone, time conversion, invalid timezone rejection, and named timezone validation. 100% tool coverage (2/2 tools).
mcp-assert run --suite examples/mcp-time
Anthropic fetch server. Python
Directory: examples/mcp-fetch/
Tests the official mcp-server-fetch. 3 assertions: URL fetch, invalid URL rejection, and unreachable host handling. 100% tool coverage (1/1 tool).
mcp-assert run --suite examples/mcp-fetch
Anthropic git server. Python
Directory: examples/mcp-git/
Tests the official mcp-server-git. 11 assertions: status, log, branch, diff, show, commit, add, reset, tag, invalid repo rejection, and invalid ref handling. 92% tool coverage (11/12 tools).
mcp-assert run --suite examples/mcp-git
Anthropic everything server. TypeScript
Directory: examples/mcp-everything-ts/
Tests the official @modelcontextprotocol/server-everything (Anthropic reference server). 13 assertions: echo, sum, image, resource links, structured content, annotations, env, gzip, long-running operation. 92% tool coverage (12/13 tools, 1 skipped).
mcp-assert run --suite examples/mcp-everything-ts
fastmcp testing_demo over SSE. Python
Directory: examples/fastmcp-testing-demo-sse/
Same server as the stdio fastmcp suite, tested over SSE transport. 11 assertions. First SSE transport coverage in the suite collection.
mcp-assert run --suite examples/fastmcp-testing-demo-sse
rmcp counter. Rust
Directory: examples/rmcp-counter/
Tests the 4t145/rmcp SDK's counter example server. 14 assertions: increment, decrement, get_value, sum, echo, say_hello, plus resources and prompts. 100% tool coverage (6/6 tools + resources + prompts). Bug found: get_value decrements counter instead of reading it (repo archived).
mcp-assert run --suite examples/rmcp-counter
rust-mcp-filesystem. Rust
Directory: examples/rust-filesystem/
Tests rust-mcp-stack/rust-mcp-filesystem (145 stars). 23 assertions: read, list, search, write, edit, zip/unzip, head, tail, line ranges, path traversal rejection, duplicate file detection, empty directory detection. 92% tool coverage (22/24 tools). Clean scan.
mcp-assert run --suite examples/rust-filesystem
excel-mcp-server. Python
Directory: examples/excel-mcp/
Tests haris-musa/excel-mcp-server (3,750 stars). 15 assertions: workbook creation, data round-trip, formulas, charts, pivot tables, formatting, merge cells, validation. 52% tool coverage (13/25 tools). Clean scan.
mcp-assert run --suite examples/excel-mcp
antvis chart server. TypeScript
Directory: examples/antvis-chart/
Tests antvis/mcp-server-chart (4K stars). 25 assertions covering 25 chart types. 9 bugs found: unhandled JavaScript exceptions on default/minimal input. Filed antvis/mcp-server-chart#291.
mcp-assert run --suite examples/antvis-chart
Notion MCP server. TypeScript
Directory: examples/notion-mcp/
Tests the official makenotion/notion-mcp-server (4.2K stars). 22 assertions, 100% tool coverage (22/22 tools). Clean scan.
mcp-assert run --suite examples/notion-mcp
Terraform MCP server. Go
Directory: examples/terraform-mcp/
Tests hashicorp/terraform-mcp-server (1.3K stars). 5 assertions: provider lookup, module search, policy search. 56% tool coverage (5/9 tools). Clean scan.
mcp-assert run --suite examples/terraform-mcp
MongoDB MCP server. TypeScript
Directory: examples/mongodb-mcp/
Tests the official mongodb/mongodb-mcp-server (1K stars). 4 assertions: knowledge search, error handling. Clean scan.
mcp-assert run --suite examples/mongodb-mcp
Spring AI MCP server. Kotlin
Directory: examples/spring-mcp/
Tests jamesward/hello-spring-mcp-server. 3 assertions, 100% tool coverage (2/2 tools). First JVM language in the suite collection. Uses HTTP transport. Clean scan.
mcp-assert run --suite examples/spring-mcp
Playwright MCP server. TypeScript
Directory: examples/playwright-mcp/
Tests microsoft/playwright-mcp (31K stars). 14 assertions: navigate, snapshot, screenshot, JS evaluate, console messages, network requests, resize, close, tabs, navigate back, press key, wait for element, invalid URL rejection, empty page handling. 67% tool coverage (14/21 tools). Clean scan.
mcp-assert run --suite examples/playwright-mcp
OpenAI deep research MCP. Python
Directory: examples/openai-deep-research/
Tests openai/sample-deep-research-mcp. 4 assertions: search and fetch against static JSON dataset. 100% tool coverage (2/2 tools). Clean scan.
mcp-assert run --suite examples/openai-deep-research
Google Cloud Storage MCP. TypeScript
Directory: examples/google-storage-mcp/
Tests @google-cloud/storage-mcp. 6 assertions: bucket metadata, object listing, IAM policy, input validation. 35% tool coverage (6/17 tools, no GCP credentials required). Clean scan.
mcp-assert run --suite examples/google-storage-mcp
Grafana MCP server. Go
Directory: examples/grafana-mcp/
Tests grafana/mcp-grafana. 17 assertions (14 no-credentials + 3 live-backend via skip_unless_env). 1 bug found: get_assertions returns internal error (-32603) instead of isError:true on invalid timestamps. Filed grafana/mcp-grafana#792.
mcp-assert run --suite examples/grafana-mcp
arxiv MCP server. Python
Directory: examples/arxiv-mcp/
Tests blazickjp/arxiv-mcp-server. 5 assertions. 1 bug found: get_abstract returns error content without isError flag. Filed blazickjp/arxiv-mcp-server#92.
mcp-assert run --suite examples/arxiv-mcp
AWS documentation MCP server. Python
Directory: examples/aws-docs-mcp/
Tests awslabs/aws-documentation-mcp-server. 4 assertions: search, recommend, no-results handling. 100% tool coverage (4/4 tools). Clean scan.
mcp-assert run --suite examples/aws-docs-mcp
Exa search MCP server. JavaScript
Directory: examples/exa-mcp/
Tests exa-labs/exa-mcp-server. 2 assertions: proper 401 with isError: true and API key guidance when credentials missing. 100% tool coverage (2/2 tools). Clean scan.
mcp-assert run --suite examples/exa-mcp
git-mcp. TypeScript
Directory: examples/git-mcp-idosal/
Tests onmyway133/git-mcp. 14 assertions: status, log, branches, diff, show, reflog, stash, tag, blame, grep, cherry-pick, remote, invalid repo rejection. 39% tool coverage (14/36 tools). Clean.
mcp-assert run --suite examples/git-mcp-idosal
Perplexity MCP server. TypeScript
Directory: examples/perplexity-mcp/
Tests perplexityai/mcp-server. 4 assertions, 100% tool coverage (4/4 tools). All tools return isError:true with 401 and API key guidance when credentials are invalid. Clean scan.
mcp-assert run --suite examples/perplexity-mcp
engram memory server. Go
Directory: examples/engram/
Tests Gentleman-Programming/engram. 16 assertions, 100% tool coverage (16/16 tools). Full coverage including writes (save, delete, update, merge, session lifecycle). SQLite state is self-contained. Clean scan.
mcp-assert run --suite examples/engram
CodeGraphContext MCP server. TypeScript
Directory: examples/codegraph-context/
Tests nicobailey/codegraph-context-mcp. 16 assertions. Code graph indexer with 21 tools. Clean scan.
mcp-assert run --suite examples/codegraph-context
u14app deep-research. JavaScript (HTTP)
Directory: examples/deep-research/
Tests u14app/deep-research via HTTP transport. 5 assertions. All tools return isError:true with "Unsupported Provider" when no LLM credentials configured. Clean scan.
mcp-assert run --suite examples/deep-research
Peekaboo. Swift
Directory: examples/peekaboo/
Tests steipete/Peekaboo. 6 assertions. First Swift MCP server in the suite collection. 1 bug found: image returns internal error (-32603) instead of isError:true when Screen Recording permission is not granted. Filed steipete/Peekaboo#108.
mcp-assert run --suite examples/peekaboo
Trajectory assertions (no server)
Directory: examples/trajectory/
20 trajectory assertions covering all 20 agent-lsp skill protocols. These assertions validate tool call sequences using inline traces (no live server required). Each assertion captures the required tool call sequence, safety gates, and absence checks for one skill:
| Skill | Key constraints |
|---|---|
/lsp-rename |
prepare_rename before rename_symbol; no apply_edit |
/lsp-safe-edit |
simulate_edit_atomic before apply_edit |
/lsp-refactor |
blast-radius check before any edit |
/lsp-impact |
get_references + call_hierarchy + type_hierarchy |
/lsp-simulate |
no apply_edit (simulate only) |
/lsp-verify |
diagnostics + build + tests |
| (and 14 more) | each skill has a dedicated trajectory_<skill>_protocol.yaml |
mcp-assert run --suite examples/trajectory
Trajectory assertions use the trace: field (inline YAML) instead of server:. To validate real agent behavior, replace trace: with audit_log: path/to/agent.jsonl pointing at an agent's recorded tool call log.
For the trajectory YAML format, see Writing Assertions.