Apitomy Data Models MCP
Official[](https://github.com/Apitomy/apitomy-data-models-mcp/actions/workflows/verify.yaml?query=branch%3Amain)
# Apitomy Data Models MCP
An MCP (Model Context Protocol) server that wraps the `@apitomy/data-models` library, making it
easy for AI coding agents to query, validate, and edit OpenAPI and AsyncAPI documents.
## Supported Specifications
- OpenAPI 2.0 (Swagger)
- OpenAPI 3.0.x
- OpenAPI 3.1.x
- AsyncAPI 2.x
- AsyncAPI 3.x
## Quick Start
### Install from npm
```bash
npm install -g @apitomy/data-models-mcp
```
### Configure in Claude Code
The easiest way is to use the `claude mcp add` command:
```bash
claude mcp add apitomy-data-models apitomy-data-models-mcp
```
## Tool Catalog
The server provides **102 tools** across 5 categories: session management (7), document
querying (16), document editing (76), validation (1), and transformation (2).
See the [full tools reference](docs/Tools.md) for detailed documentation on every tool and
its parameters.
## MCP Resources
| URI Pattern | Description |
|-------------|-------------|
| `api://{session}/info` | Document metadata |
| `api://{session}/paths` | List of paths/channels |
| `api://{session}/schemas` | List of schema definitions |
## Usage Examples
### Load and inspect an existing API
```
> Load /path/to/petstore.yaml into session "petstore"
> What paths does the petstore API have?
> Show me the GET /pets operation
> Validate the document
```
### Create a new API from scratch
```
> Create a new OpenAPI 3.0 document called "widgets"
> Set the title to "Widget API" and version to "1.0.0"
> Add a path /widgets with GET and POST operations
> Add a Widget schema with id, name, and color properties
> Save it to ./widget-api.yaml as YAML
```
### Transform a Swagger document
```
> Load my swagger.json as "legacy"
> Transform it to OpenAPI 3.0
> Validate the transformed document
> Save it to openapi3.json
```
## Development
```bash
npm install # Install dependencies
npm run build # Compile TypeScript
npm test # Run tests
npm run test:watch # Run tests in watch mode
npm run lint # Run linter
```
## Links
- [Documentation](https://www.apitomy.io/projects/data-models-mcp/docs/)
- [npm Package](https://www.npmjs.com/package/@apitomy/data-models-mcp)
- [GitHub Repository](https://github.com/Apitomy/apitomy-data-models-mcp)
- [Apitomy Website](https://www.apitomy.io)
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on how to contribute to this project.
## License
This project is licensed under the [Apache License 2.0](LICENSE).
TDQS
Scored across 102 tools
Most tools target distinct resources and actions, but the enormous number combined with overlapping verbs (add/set/update/remove/delete) creates real ambiguity. Generic tools like document_set_node and document_get_node blur boundaries with their specific counterparts, and delete/remove pairs like document_delete_license vs document_remove_tag are easy to conflate.
All tools share a consistent document_ prefix and snake_case format, which helps navigation. However, verb usage is inconsistent: delete vs remove, set vs update, and add vs create are used interchangeably for similar mutation operations, making the pattern less predictable than it could be.
With 102 tools, the server far exceeds the 'too many' threshold and imposes a heavy selection burden on agents. Even for a comprehensive OpenAPI/AsyncAPI editor, this surface should be consolidated into fewer, more parameterized operations.
The OpenAPI side is exceptionally complete, covering paths, operations, schemas, responses, parameters, security, extensions, and lifecycle operations. However, AsyncAPI support has notable gaps such as no remove_channel or update_channel tool, and individual security requirement removal is missing.