mcp-chaos-rig

mcp-chaos-rig

A local MCP server that breaks on demand, allowing you to test your client against auth failures, disappearing tools, flaky responses, and token expiry from a web UI.

Category
访问服务器

README

<p align="center"> <img src="src/ui/favicon.svg" alt="MCP Chaos Rig" width="80" height="80"> </p>

<h1 align="center">MCP Chaos Rig</h1>

<p align="center">A local MCP server that breaks on demand. Test your client against auth failures, disappearing tools, flaky responses, and token expiry, all from a web UI.</p>

<p align="center"> <a href="https://www.npmjs.com/package/mcp-chaos-rig"><img src="https://img.shields.io/npm/v/mcp-chaos-rig.svg" alt="npm version"></a> <a href="https://github.com/Typewise/mcp-chaos-rig/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/mcp-chaos-rig.svg" alt="license"></a> <a href="https://www.npmjs.com/package/mcp-chaos-rig"><img src="https://img.shields.io/npm/dm/mcp-chaos-rig.svg" alt="downloads"></a> </p>


The problem

You're building an MCP client. You need to test OAuth flows, token refresh, tool discovery, error handling, and session lifecycle. Production servers don't fail on command. You need a server that does.

What Chaos Rig does

Run a local MCP server where you control everything:

  • Break authentication: force 401s and 500s mid-session, expire tokens on demand, reject refresh tokens
  • Break tools: disable tools to trigger tools/changed, switch schema versions live
  • Break reliability: add random latency, make tool calls fail at configurable rates
  • See everything: live request log shows inbound JSON-RPC calls and outbound SSE responses, with click-to-expand bodies

Server tab

Test scenarios

Scenario How to test it
OAuth 2.1 consent flow Use the interactive consent page: approve, decline, invalid code, tampered state
Fixed header auth Switch to Headers mode, configure key-value pairs, verify client sends them
Missing/wrong headers Send requests with missing or mismatched headers — 401 with details
Token rejection mid-session Toggle "Reject OAuth" to 401 or 500 while client is connected
Token expiry and refresh Set access token TTL to a short value, watch the client refresh
Reject refresh tokens Toggle "Reject refresh tokens" to force re-authentication
Wrong client refreshing Enable "Enforce refresh token ownership" — catches clients that lose credentials and re-register
Scope discovery conflict Set different scopes in metadata vs WWW-Authenticate header, test which the client trusts
Tool disappearing Disable a tool in the Tools tab. Clients receive tools/changed
Tool schema changing Switch echo or add between v1 and v2 schemas
Flaky tool calls Set failure rate 0-100%. Failed calls return isError: true
Slow responses Enable slow mode with configurable latency range
PKCE code exchange OAuth consent page offers "Wrong Code" and "Wrong State" options
Database-backed tools CRUD operations on a real SQLite contact database

Quick start

npx mcp-chaos-rig

Control panel at localhost:4100/ui, MCP endpoint at http://localhost:4100/mcp. Requires Node 20+.

If you prefer a global install:

npm install -g mcp-chaos-rig
mcp-chaos-rig

Or run from source:

git clone https://github.com/Typewise/mcp-chaos-rig.git
cd mcp-chaos-rig
npm install
npm run dev

Remote access

If your production environment needs to reach Chaos Rig, expose it via a tunnel (ngrok, Cloudflare Tunnel, etc.) and set BASE_URL so OAuth redirects resolve correctly:

BASE_URL=https://your-tunnel.example.dev npx mcp-chaos-rig

Auth state

All state is in-memory and resets on restart. Bearer starts with token test-token-123 (valid until changed). OAuth tokens expire per TTL. Refresh tokens track ownership per client when enabled. After restart, do one refresh with ownership off to re-seed, then turn it on.


Control panel tabs

Server

Configure auth mode, slow mode (random latency), and flaky tools (% failure rate).

Auth mode Behavior
None All requests pass through
Bearer Requires Authorization: Bearer test-token-123
OAuth 2.1 Full authorization flow with interactive consent page

Bearer and OAuth modes support fault injection: force 401 or 500 responses to test error handling.

OAuth mode adds controls for access token TTL, refresh token rejection, and refresh token ownership enforcement. OAuth endpoints are listed in a collapsible section.

Tools

Tools tab

Toggle tools on/off. Disabling sends tools/changed to connected clients. Some tools (echo, add) support version switching.

Available tools:

  • echo: returns your message (v2 adds format options)
  • add: sums two numbers (v2 accepts an array)
  • get-time: current server time as ISO 8601
  • random-number: random integer in a range
  • reverse: reverses a string
  • list-contacts, search-contacts, create-contact, update-contact, delete-contact: SQLite CRUD

Contacts

Contacts tab

View and reset the SQLite database backing the contact tools. Starts with three seed records.

Log

Log tab

Live request log showing inbound requests and outbound SSE responses. Displays timestamp, source (mcp/auth/sse), method, status, JSON-RPC method, tool name, and arguments. Click any truncated body or args line to expand it. Keeps last 200 entries.


OAuth consent page

OAuth consent page

When auth mode is OAuth, the authorization endpoint shows an interactive consent page:

Button Result
Approve Redirects with valid authorization code
Decline Redirects with error=access_denied
Wrong Code Redirects with invalid code (token exchange fails)
Wrong State Redirects with tampered state parameter

Links

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选