经 AI Skill Hub 精选评估,AI Mock工具 获评「强烈推荐」。这款MCP工具在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 8.0 分,适合有一定技术背景的用户使用。
AI Mock工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
AI Mock工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
# 方式一:通过 Claude Code CLI 一键安装
claude skill install https://github.com/CopilotKit/aimock
# 方式二:手动配置 claude_desktop_config.json
{
"mcpServers": {
"ai-mock--": {
"command": "npx",
"args": ["-y", "aimock"]
}
}
}
# 配置文件位置
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Windows: %APPDATA%/Claude/claude_desktop_config.json
# 安装后在 Claude 对话中直接使用 # 示例: 用户: 请帮我用 AI Mock工具 执行以下任务... Claude: [自动调用 AI Mock工具 MCP 工具处理请求] # 查看可用工具列表 # 在 Claude 中输入:"列出所有可用的 MCP 工具"
// claude_desktop_config.json 配置示例
{
"mcpServers": {
"ai_mock__": {
"command": "npx",
"args": ["-y", "aimock"],
"env": {
// "API_KEY": "your-api-key-here"
}
}
}
}
// 保存后重启 Claude Desktop 生效
- Record & Replay — Proxy real APIs, save as fixtures, replay deterministically forever - Timing-aware recording and replay — Recorded fixtures capture per-frame arrival timestamps; replay uses recorded timings for approximate timing reproduction based on recorded TTFT and inter-frame cadence (replay chunk count may differ from recording — TTFT and average pace are preserved, not per-token fidelity) with configurable --replay-speed multiplier - Recorded token usage and cost — Recording captures the final usage frame of a streaming completion, so replayed fixtures serve real prompt_tokens / completion_tokens instead of a length estimate; OpenRouter's provider-reported usage.cost and its cost_details / *_tokens_details breakdowns are captured too, so an app that bills from real provider cost can e2e-test its wallet path from a tape - Multi-turn Conversations — Record and replay multi-turn traces with tool rounds; match distinct turns via turnIndex, hasToolResult, toolCallId, toolResultContains (gate on the tool-result payload), sequenceIndex, systemMessage (gate on host-supplied agent context), or custom predicates - Ollama embedding recordings — Current /api/embed captures retain input shape, dimensions and model in their match and stay separate from legacy/OpenAI embedding operations. - 11 providers across 22 API surfaces — OpenAI Chat, OpenAI Responses, OpenAI Realtime (GA; an OpenAI-Beta: realtime=v1 request gets the real sunset rejection), GPT-Live, Claude, Gemini REST, Gemini embedContent, Gemini Live, Gemini Interactions, Azure, Bedrock, Vertex AI, Ollama (chat + embeddings), Cohere (chat + embed), OpenRouter (chat + router failover), BytePlus Ark (OpenAI-compatible chat + images under /api/v3), ElevenLabs TTS and Voice Design — full streaming support Bedrock with the current AWS JavaScript SDK needs requestHandler: new NodeHttpHandler() from @smithy/node-http-handler for aimock's HTTP/1 server. See SDK setup. - Multimedia APIs — image generation (gpt-image-1 default, Imagen; /v1/images/variations replays OpenAI's removal 404), image editing (/v1/images/edits), text-to-speech (OpenAI + ElevenLabs TTS and Voice Design), audio transcription, audio translation (/v1/audio/translations), video generation, OpenRouter video generation (/api/v1/videos with async job lifecycle), Google Veo video generation (:predictLongRunning + /v1beta/operations async lifecycle), Grok Imagine video generation (/v1/videos/generations with async job lifecycle), BytePlus Ark video generation (Seedance, /api/v3/contents/generations/tasks with async task lifecycle), fal.ai (image / video / audio with queue lifecycle) - OpenAI platform APIs — Files (byte-exact uploads, purpose validation), Vector Stores (CRUD, file attach with deterministic poll progression, file batches, deterministic direct search; hosted file_search execution is not supported), fine-tuning jobs (deterministic lifecycle, events, cursor pages) and Batches (/v1/batches create/list/retrieve/cancel with deterministic poll progression and real output files) - MCP / A2A / AG-UI / Vector — Mock every protocol your AI agents use - MCP Scenario Fakes — An mcpFakes block in a fixture file scripts each test's MCP tool answers next to its LLM turns: ordered answers, exact or any-argument matching, scripted tool errors, and a closed-world mode that fails on any undeclared tool. Works with any MCP client over Streamable HTTP - MCP Recording — Record a live MCP server into mcpFakes files (--mcp-record /mcp=<url>, or llm.record.mcp with llm.enableMcpRecording: true in a config) and replay them offline, with the recorded tool list, progress notifications and timing; known secrets are redacted before anything is written - MCP Fake Reports — GET /__aimock/mcp/fakes/report lists each test's served, unused and failed fakes; with useAimock({ fakesReport: "fail" }) a swallowed fake error or an unused fake fails the test, and fakesFor() gives the MCP URL and headers for the current test. Works for agents, workflows and pipelines alike - Chaos Testing — 500 errors, malformed JSON, mid-stream disconnects and 429 rate limits (--chaos-ratelimit, with Retry-After) at any probability, plus a fixed pre-handling delay (--chaos-latency <ms>); read, set and clear the rates at runtime via GET / POST / DELETE /__aimock/chaos, scoped to the caller's X-Test-Id so one test cannot destabilise the suite running beside it - Model Misbehavior — Test invalid tool arguments, schema violations, unknown tools, duplicate IDs, length stops, empty responses, refusals, content filtering, and reasoning-only responses. Supported wires include OpenAI Chat, Responses, Realtime GA, Anthropic, Bedrock InvokeModel and Converse, Gemini generateContent (including the Vertex wrapper), Gemini Live, Gemini Interactions, Cohere, and Ollama chat. Fault and mode support varies by wire. Azure and OpenRouter use the Chat wire. Seeded rates, per-test limits, and journal evidence apply across supported wires. See the reference for the support matrix, SDK behavior, and modeled contracts whose native occurrence remains unverified. - Request journal — GET /__aimock/journal returns every recorded request, filterable by path, method, status, service, testId and requestId with limit / offset paging and an X-Total-Count header carrying the pre-pagination total - HTTP route catalog — GET /__aimock/openapi.json returns OpenAPI 3.1; GET /__aimock/routes returns { count, routes }. For programmatic inspection, import buildOpenApiDocument, CATALOG_ROUTES and ROUTE_DEFINITIONS (with CatalogRoute/RouteDefinition types) from @copilotkit/aimock. The catalog describes HTTP operations; streaming responses include media and framing metadata, not a complete-stream JSON body. - Request IDs — every response carries X-Request-Id, echoing the caller's header or minting one; the journal stores it on each entry and GET /__aimock/journal?requestId=<id> returns that request. A minted id is never forwarded upstream in record/proxy mode - Per-Request Strict Mode — X-AIMock-Strict header overrides the server-level --strict flag per request (true/1 = strict, false/0 = lenient) - Required Header Policy — Opt-in requiredHeaders: "enforce" (programmatic policy, config llm.policy, repeatable --policy on both CLIs, or the X-AIMock-Policy request header) rejects Anthropic HTTP requests (/v1/messages, /v1/messages/count_tokens, Anthropic-flavored /v1/models/{id}, and the /v1/models list with modelCatalog: "native") that omit anthropic-version with a native 400. Off by default, and independent of strict mode - Native model catalogs and token counts — Anthropic GET /v1/models (selected by anthropic-version, or x-api-key without Authorization; the list route needs policy.modelCatalog: "native" and otherwise stays the OpenAI list) and Gemini GET /v1beta/models list and detail routes with provider paging, built from fixture model IDs with synthetic metadata; POST /v1/messages/count_tokens and Gemini :countTokens return a deterministic estimate of about 1 token per 4 characters of messages (plus tool definitions), minimum 1. These routes never proxy or record - Context-Based Fixture Routing — X-AIMock-Context header scopes fixtures per integration; fixtures with match.context only match requests carrying that context, fixtures without it remain shared - Drift Detection — Daily CI validation against real APIs - Streaming Physics — Configurable ttft, tps, and jitter - WebSocket APIs — OpenAI Realtime (GA protocol with models: gpt-realtime, gpt-realtime-2, gpt-realtime-1.5, gpt-realtime-mini; transcription/translation via gpt-4o-transcribe, gpt-4o-mini-transcribe, whisper-1; image input; commentary phase), Responses WS, Gemini Live - GPT-Live — Mock, record, and replay primary WebSocket sessions at /v1/live/sessions in client and managed modes, with fixture-backed audio and backend tool continuation. Saved fixtures replay offline; aimock does not synthesize speech. This voice surface is separate from OpenAI text-model family support; WebRTC/SDP and sideband connections are outside this scope. - Prometheus Metrics — Request counts, latencies, fixture match rates - Docker + Helm — Container image and Helm chart for CI/CD - Vitest & Jest Plugins — Zero-config useAimock() with auto lifecycle and env patching - Response Overrides — Control id, model, usage, finishReason in fixture responses - Ordered Blocks — A blocks array streams text and tool calls in any order (tool-first or interleaved); blocks-only fixtures are first-class, and the recorder captures order from genuinely tool-first/interleaved streams - Namespaced and Custom Tool Calls — Responses API fixtures can return namespaced function calls and custom tool calls (custom_tool_call) over HTTP streaming, non-streaming and WebSocket, and can match on toolNamespace. This lets you script OpenAI Codex CLI's namespaced MCP and sub-agent tools and its freeform apply_patch tool (with the responsesTools: "extended" server option) - Streaming Usage Chunks — stream_options.include_usage support emits a final chunk with token counts, matching OpenAI's streaming usage protocol - Rate Limiting Headers — x-ratelimit-* headers on every response and Retry-After on 429 errors for testing retry/backoff logic - Zero dependencies — Everything from Node.js builtins
Model misbehavior requires aimock 1.45.0 or later. Older versions silently ignore the fixture's misbehavior field and serve its original response. Invalid configurations now fail during fixture loading or programmatic addition. See the model misbehavior reference for supported parameters and compatibility details.
docker run -d -p 4010:4010 -v "$(pwd)/fixtures:/fixtures" ghcr.io/copilotkit/aimock -f /fixtures -h 0.0.0.0 ```
Note onllmockvsaimockCLIs. Thellmockbin is retained as a compat alias for users of the pre-1.7.0@copilotkit/llmockpackage. It runs a narrower flag-driven CLI without--configor theconvertandvalidatesubcommands. New projects should useaimock(ornpx @copilotkit/aimock) for full feature support.
npm install @copilotkit/aimock
// The class is still named `LLMock` for back-compat after the v1.7.0 package
// rename from `@copilotkit/llmock` to `@copilotkit/aimock`.
import { LLMock } from "@copilotkit/aimock";
const mock = new LLMock({ port: 0 });
mock.onMessage("hello", { content: "Hi there!" });
await mock.start();
// Set env BEFORE importing/constructing the OpenAI (or other provider) client.
// Many SDKs cache the base URL at construction time — if the client is built
// before these are set, it will talk to the real API (surprise bills) instead
// of aimock.
process.env.OPENAI_BASE_URL = `${mock.url}/v1`;
process.env.OPENAI_API_KEY = "mock"; // SDK requires a value, even when base URL is mocked
// ... run your tests ...
await mock.stop();
Test your AI agents with aimock — no API keys, no network calls: LangChain · CrewAI · PydanticAI · LlamaIndex · Mastra · Google ADK · Microsoft Agent Framework
AG-UI uses aimock for its end-to-end test suite, verifying AI agent behavior across LLM providers with fixture-driven responses.
npx @copilotkit/aimock --config aimock.json
npx -p @copilotkit/aimock llmock --record --provider-openai https://api.openai.com
By default aimock accepts all requests. Opt into inbound test-client validation with a programmatic option, top-level aimock.json field, or environment-only key list:
await createServer(fixtures, { auth: { apiKeys: ["test-key"] } });
{ "auth": { "apiKeys": ["test-key"] } }
AIMOCK_API_KEYS=test-key,rotated-key npx @copilotkit/aimock --config aimock.json
Use Authorization: Bearer <key>, Authorization: Key <key>, x-api-key, x-goog-api-key, api-key, or xi-api-key. Every supplied credential must resolve to one configured key; mismatches return 401. HTTP routes, control APIs, mounts, and WebSocket upgrades are protected. Genuine CORS preflights plus GET /health, GET /ready, and GET /metrics remain public. This is inbound test access control, distinct from record.providerKeys; when enabled, proxying strips test credentials and requires a configured static provider credential before egress.
Auth error bodies: by default every HTTP route returns the 1.45 body {"error":{"message":"Invalid API key","type":"authentication_error","code":"invalid_api_key"}}. Set policy.authErrors to "native" (or --policy authErrors=native, or the request header X-AIMock-Policy: authErrors=native) to get provider-native 401 bodies on Anthropic Messages/count_tokens and Gemini/Vertex Google HTTP paths. Shared /v1/models, other HTTP paths, and WebSocket rejections always keep the legacy body. See the Anthropic and Gemini examples.
aimock keeps mocking provider surfaces that upstream has deprecated — that is when test scaffolding matters most, since your code still calls them while you migrate. It declines to mock the success path of APIs that have actually been removed: a mock that answers 200 where the real endpoint is gone manufactures a passing test for code that cannot work. Full policy: Deprecated & Removed APIs.
aimock 提供强大的 Record & Replay 功能,允许开发者代理真实的 API 调用并将其保存为 fixtures。通过这种方式,你可以实现确定性的重复测试。特别值得一提的是其具备 Timing-aware 机制,能够捕获每帧到达的时间戳,并在回放时基于记录的 TTFT(首字延迟)和帧间节奏进行近似的时间还原,确保测试过程高度贴近真实交互体验。
你可以通过 Docker 快速部署 aimock 环境。使用命令 `docker run -d -p 4010:4010 -v "$(pwd)/fixtures:/fixtures" ghcr.io/copilotkit/aimock -f /fixtures -h 0.0.0.0` 即可启动。此外,对于旧版用户,系统保留了 `llmock` 作为兼容别名,但对于新项目,强烈建议使用 `aimock` CLI 或通过 `npx @copilotkit/aimock` 进行调用。
aimock 支持通过 npm 进行集成。在 TypeScript 项目中,你可以通过 `import { LLMock } from "@copilotkit/aimock"` 引入类。虽然为了向后兼容类名仍沿用 `LLMock`,但包名已更新。你可以轻松设置 Mock 响应,例如使用 `mock.onMessage` 拦截特定消息并返回预设内容,实现无需 API Key 和网络调用的 AI Agent 测试。
你可以通过配置文件进行全量功能管理。使用命令 `npx @copilotkit/aimock --config aimock.json` 即可根据指定的 JSON 配置文件启动完整的测试套件,实现高度定制化的 Mock 环境配置。
aimock 支持 Record 模式,允许你将请求代理到真实的 API(如 OpenAI)并自动保存为 fixtures。通过运行 `npx -p @copilotkit/aimock llmock --record --provider-openai https://api.openai.com`,你可以将真实的 API 交互转化为可复用的测试数据。
aimock 是专为 AI 应用测试设计的 Mock 基础设施,其覆盖范围极广,包括 LLM APIs、图像生成、图像编辑、文本转语音(TTS)、转录、音频翻译、音频/视频生成、Embeddings、MCP tools、A2A agents 以及 AG-UI 等多种模态,为构建可靠的 AI 工作流提供支撑。
高质量的AI Mock工具,提高测试效率
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
AI Skill Hub 点评:AI Mock工具 的核心功能完整,质量优秀。对于Claude Desktop / Claude Code 用户来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。
| 原始名称 | aimock |
| 原始描述 | 开源MCP工具:Mock everything your AI app talks to — LLM APIs, MCP, A2A, AG-UI, vector DBs, se。⭐614 · TypeScript |
| Topics | ai-testingaimockllmmcpmock-server |
| GitHub | https://github.com/CopilotKit/aimock |
| License | MIT |
| 语言 | TypeScript |
收录时间:2026-06-02 · 更新时间:2026-06-05 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端