Token导航 LogoToken导航TokenDH.com
Mocking Bird logo
开发工具stdio官方级别未说明来源级核验

Mocking Bird

MCP Server

Mocking Bird 是一个支持7种主要API协议的全功能模拟服务器,用于开发、测试和作为多协议API工具的参考实现。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
开发工具Go多协议支持

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

emadomedher

提供方

emadomedher

最后核验

2026/5/17 20:21

运行时

Docker

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

docker run -p 9999:9999 -p 50051-50054:50051-50054 mockingbird

详细介绍

A fully-featured mock API server supporting 7 protocols out of the box

Quick Start • Protocols • CRUD Testing • Examples

______________________________________________________________________

什么是模仿鸟?

反舌鸟 是一个独立的模拟API服务器,它能说出所有主要的API协议。将其用于开发、测试,或作为多协议API工具的参考实现。

✨ 特性

  • 🎯 支持7种协议:OpenAPI、Swagger、SOAP/WSDL、GraphQL、OData、gRPC、JSON-RPC
  • 🔄 完整的CRUD操作:为所有类似REST的API创建、读取、更新、删除
  • 💾 内存持久性:数据在服务器运行时保持不变(不需要数据库)
  • 🔐 多种身份验证类型:承载令牌、基本身份验证、API密钥
  • 📝 综合规格:每个协议都包括用于自动发现的规范端点
  • 🧪 包含测试套件:对所有端点进行自动化CRUD测试

______________________________________________________________________

📦 支持的协议

协议资源描述身份验证端口/路径
OpenAPI 3.0宠物带CRUD操作的宠物店:9999/openapi
Swagger 2.0恐龙带CRUD的恐龙目录持有者: dino-token:9999/swagger
WSDL/SOAP植物带CRUD的植物数据库载体: mock-token:9999/wdsl/soap
图查询语言汽车带CRUD的汽车库存基本: graphql-user:graphql-pass:9999/graphql
OData V4电影支持查询的电影数据库:9999/odata
gRPC服装服装项目(4类):50051-50054
JSON-RPC计算器数学运算:9999/jsonrpc

______________________________________________________________________

🚀 快速开始

安装

git clone git@github.com:emadomedher/mocking-bird.git
cd mocking-bird
go build -o mockingbird .

./mockingbird

服务器启动于 http://localhost:9999 (端口上的gRPC 50051-50054)

测试

./test-crud.sh

对所有API运行自动CRUD测试,并验证内存中的持久性。

______________________________________________________________________

📚 API文档

OpenAPI(宠物)

规格: http://localhost:9999/openapi/openapi.json

端点:

GET    /openapi/pets           # List pets
POST   /openapi/pets           # Create pet
GET    /openapi/pets/{id}      # Get pet by ID
PUT    /openapi/pets/{id}      # Update pet
DELETE /openapi/pets/{id}      # Delete pet

示例:

curl -X POST http://localhost:9999/openapi/pets \
  -H "Content-Type: application/json" \
  -d '{"name":"Fluffy"}'

______________________________________________________________________

Swagger 2.0(恐龙)

规格: http://localhost:9999/swagger/swagger.json

端点:

GET    /swagger/dinosaurs           # List dinosaurs
POST   /swagger/dinosaurs           # Create dinosaur
GET    /swagger/dinosaurs/{id}      # Get dinosaur by ID
PUT    /swagger/dinosaurs/{id}      # Update dinosaur
DELETE /swagger/dinosaurs/{id}      # Delete dinosaur

认证: Authorization: Bearer dino-token

示例:

curl http://localhost:9999/swagger/dinosaurs \
  -H "Authorization: Bearer dino-token"

______________________________________________________________________

WSDL/SOAP(植物)

WSDL规范: http://localhost:9999/wdsl/wsdl

运营: ListPlants, GetPlant, CreatePlant, UpdatePlant, DeletePlant

认证: Authorization: Bearer mock-token

示例:

curl -X POST http://localhost:9999/wdsl/soap \
  -H "Authorization: Bearer mock-token" \
  -H "Content-Type: text/xml" \
  -d '

  
    

  
'

______________________________________________________________________

GraphQL(汽车)

模式(SDL): http://localhost:9999/graphql/schema

端点: POST http://localhost:9999/graphql

认证:基本身份验证(graphql-user:graphql-pass)

查询:

query {
  listCars(limit: 10) {
    id
    name
  }
}

query {
  getCar(id: "1") {
    id
    name
  }
}

突变:

mutation {
  createCar(name: "Tesla") {
    id
    name
  }
}

mutation {
  updateCar(id: "1", name: "Tesla Model S") {
    id
    name
  }
}

mutation {
  deleteCar(id: "1")
}

示例:

curl -X POST http://localhost:9999/graphql \
  -u graphql-user:graphql-pass \
  -H "Content-Type: application/json" \
  -d '{"query":"query{listCars(limit:5){id name}}"}'

______________________________________________________________________

OData v4(电影)

元数据: http://localhost:9999/odata/$metadata

端点:

GET    /odata/Movies              # List movies with query options
POST   /odata/Movies              # Create movie
GET    /odata/Movies(1)           # Get movie by ID
PUT    /odata/Movies(1)           # Update movie
DELETE /odata/Movies(1)           # Delete movie

查询选项: $filter, $orderby, $top, $skip, $select, $expand

示例:

# List movies with filtering
curl "http://localhost:9999/odata/Movies?\$filter=Year gt 2000&\$orderby=Rating desc"

# Create a movie
curl -X POST http://localhost:9999/odata/Movies \
  -H "Content-Type: application/json" \
  -d '{"title":"Inception","year":2010,"genre":"Sci-Fi","rating":8.8}'

______________________________________________________________________

gRPC(衣服)

原型文件: clothes.proto

服务: ClothesService

类别和港口:

  • 帽子 - localhost:50051
  • 鞋子 - localhost:50052
  • 裤子 - localhost:50053
  • 衬衫 - localhost:50054

方法: ListClothes(ListClothesRequest) returns (ListClothesResponse)

示例 (使用 grpcurl):

grpcurl -plaintext localhost:50051 list
grpcurl -plaintext localhost:50051 ClothesService/ListClothes

______________________________________________________________________

JSON-RPC(计算器)

OpenRPC规范: http://localhost:9999/jsonrpc/openrpc.json

方法: add, subtract, multiply, divide, rpc.discover

示例:

curl -X POST http://localhost:9999/jsonrpc \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"add","params":{"a":5,"b":3}}'

# Response: {"jsonrpc":"2.0","id":1,"result":8}

______________________________________________________________________

🧪 CRUD测试

运行综合测试套件以验证所有CRUD操作:

./test-crud.sh

它测试什么:

  • ✅ 为所有API创建操作
  • ✅ 读取操作(按ID列出和获取)
  • ✅ 使用数据验证更新操作
  • ✅ 通过适当的清理删除操作
  • ✅ 跨请求的内存持久性

示例输出:

🧪 Testing CRUD operations for all Mock APIs
==============================================

Testing Pets (OpenAPI)
✓ Created pet with ID: 4
✓ Read pet successfully
✓ Updated pet successfully
✓ Deleted pet successfully

Testing Cars (GraphQL)
✓ Created car with ID: 3
✓ Read car successfully
✓ Updated car successfully
✓ Deleted car successfully

✅ All CRUD tests completed!

______________________________________________________________________

🎯 用例

本地开发

在开发过程中用Mocking Bird替换外部API依赖项。无网络呼叫,即时响应。

集成测试

在不设置实际服务的情况下,根据所有支持的协议测试API客户端。

CI/CD管道

在Docker中运行Mocking Bird,以便在构建管道中进行自动化测试。

协议学习

用作参考实现,以了解不同的API协议是如何工作的。

多协议工具

在构建需要支持多种API格式的工具(如 天际线MCP).

______________________________________________________________________

🐳 码头工人

FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o mockingbird .

FROM alpine:latest
COPY --from=builder /app/mockingbird /usr/local/bin/
COPY --from=builder /app/clothes.proto /app/
EXPOSE 9999 50051 50052 50053 50054
CMD ["mockingbird"]

构建并运行:

docker build -t mockingbird .
docker run -p 9999:9999 -p 50051-50054:50051-50054 mockingbird

______________________________________________________________________

🛠️ 配置

环境变量:

# Dinosaur auth token
export DINOSAURS_SWAGGER2_TOKEN="custom-dino-token"

# GraphQL credentials
export GRAPHQL_USERNAME="admin"
export GRAPHQL_PASSWORD="secret"

# gRPC base port (default: 50051)
export GRPC_BASE_PORT=60051

______________________________________________________________________

📖 种子数据

每个API都预先提供了样本数据:

API种子数据
宠物15只宠物(Max、Whiskers、Rocky、Bella、Luna等)
恐龙15种恐龙(霸王龙、三角龙、迅猛龙等)
植物15种植物(孟翅目、蛇类植物、Fiddle Leaf Fig等)
汽车15辆车(特斯拉Model 3、丰田凯美瑞、福特F-150等)
电影20部电影(《黑客帝国》、《盗梦空间》、《教父》等)
服装每类3件,4类(共12件)

数据在服务器进程的生命周期内一直存在于内存中。

______________________________________________________________________

🤝 贡献

欢迎投稿!思想:

  • 添加更多协议(例如Thrift、Avro)
  • 添加持久性选项(Redis、PostgreSQL)
  • 添加WebSocket支持
  • 添加速率限制示例
  • 提高测试覆盖率

______________________________________________________________________

📄 许可证

MIT许可证-请参阅 许可证 详情

______________________________________________________________________

🔗 相关项目

  • 天际线MCP -将任何API转化为用于人工智能代理的MCP工具
  • 使用Mocking Bird作为多协议支持的测试夹具

______________________________________________________________________

Built with Go. Mock everything.

目录标签

目录标签

开发工具Go多协议支持API模拟本地部署测试工具CRUD测试

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP