Skip to main content
Glama
phasetdev

Phaset Manifest Generator MCP

Official
by phasetdev
README.md
# Phaset Manifest Generator MCP

**AI-assisted Phaset manifest generation using Model Context Protocol.**

A minimal MCP server that leverages Claude's intelligence to generate `phaset.manifest.json` files by analyzing your repository.

_This may or may not work with other MCP-compatible tools, such as ChatGPT, but no testing has been done for anything other than Claude._

## Quick Start

### Prerequisites

You will need to have [Node.js](https://nodejs.org/en) installed.

### Configuration

#### Claude Desktop

**(macOS)**: Edit `~/Library/Application Support/Claude/claude_desktop_config.json`

**(Windows)**: Edit `%APPDATA%\Claude\claude_desktop_config.json`

Add:

```json
{
  "mcpServers": {
    "phaset": {
      "command": "npx",
      "args": ["-y", "phaset-mcp"]
    }
  }
}
```

Restart Claude Desktop completely.

#### Claude Code

Add the below to `.claude.json`:

```json
{
  "mcpServers": {
    "phaset": {
      "command": "npx",
      "args": ["-y", "phaset-mcp"]
    }
  }
}
```

#### CLI

Run:

```bash
claude mcp add phaset -- npx -y phaset-mcp
```

### Usage

In Claude Desktop:

```text
Generate a Phaset manifest for /path/to/your/project
```

Claude will:

1. Collect relevant files (package.json, README, Dockerfile, etc.)
2. Analyze your project structure
3. Generate a manifest with confidence annotations
4. Mark fields requiring manual input as TODO

## Key Features

- **100% Phaset Compliant**: Generated manifests strictly conform to the Phaset schema
- **Smart analysis**: Leverages Claude's native understanding of code and configs
- **Helpful notes**: Inference notes are presented as complementary text
- **Multiple depth levels**: Choose minimal, standard, or deep file analysis
- **Language agnostic**: Works with any language Claude understands

## Available Tools

### `get_phaset_schema`

Returns the Phaset integration API schema so Claude understands the manifest structure.

### `collect_repo_files`

Intelligently gathers relevant files from a repository based on depth:

- **minimal**: Package manifests and README only
- **standard**: Adds Dockerfiles, CI/CD configs, API specs
- **deep**: Includes infrastructure configs (Terraform, Kubernetes)

### `suggest_manifest`

Orchestrates the full workflow: retrieves schema, collects files, and generates a complete manifest draft.

## Architecture

```text
┌─────────────────┐
│   User's IDE    │
│   (Claude Code) │
└────────┬────────┘
         │
         ▼
┌──────────────────────────┐
│ Phaset MCP Server        │
│ • get_phaset_schema()    │
│ • collect_repo_files()   │
│ • suggest_manifest()     │
└────────┬─────────────────┘
         │
         ▼
┌──────────────────────────┐
│ Claude (via MCP)         │
│ • Analyzes files         │
│ • Generates manifest     │
│ • Provides confidence    │
└──────────────────────────┘
```

## What Gets Generated

### High Confidence Fields ✅

Claude can reliably infer:

- `name`, `description`, `version` (from package files)
- `kind` (api/service/library/component)
- `sourcingModel` (custom vs open source)
- `deploymentModel` (cloud/saas/on-premises)
- `tags` (detected languages and frameworks)
- `api` definitions (from OpenAPI/Swagger specs)
- External dependencies

### Requires Manual Input ⚠️

Fields marked as TODO:

- `repo` (your Phaset org/record format)
- `group`, `system`, `domain` (organizational IDs)
- `dataSensitivity`, `businessCriticality` (business decisions)
- `dependencies.target` (Phaset Record IDs)
- `slo`, `baseline`, `metadata`

## Example Output

The generated response includes two parts: a valid JSON manifest and separate inference notes.

### Manifest

```json
{
  "spec": {
    "repo": "TODO: YOUR_ORG/YOUR_RECORD_ID",
    "name": "user-api",
    "description": "RESTful API for user management",
    "kind": "api",
    "lifecycleStage": "production",
    "version": "2.3.1",
    "group": "TODO: 8-CHAR-ID",
    "dataSensitivity": "TODO: MANUAL",
    "sourcingModel": "custom",
    "deploymentModel": "public_cloud"
  },
  "tags": ["typescript", "express", "postgresql", "rest-api"],
  "api": [
    {
      "name": "User API",
      "schemaPath": "TODO: PUBLIC_URL_TO_SCHEMA"
    }
  ]
}
```

### Inference Notes (Presented as Text)

- **spec.name**: HIGH - Found in package.json
- **spec.description**: HIGH - Extracted from README.md
- **spec.kind**: HIGH - Identified as API based on OpenAPI spec and REST endpoints
- **spec.version**: HIGH - Found in package.json
- **spec.lifecycleStage**: MEDIUM - Inferred from production Docker configuration
- **spec.repo**: MANUAL - Organization/Record ID format required
- **spec.group**: MANUAL - Cannot determine organizational group ID
- **spec.dataSensitivity**: MANUAL - Requires business decision
- **spec.sourcingModel**: HIGH - Custom development evident from repository structure
- **spec.deploymentModel**: MEDIUM - Inferred from Kubernetes configurations
- **tags**: HIGH - Detected from package.json dependencies and file types
- **api.name**: HIGH - From OpenAPI spec title
- **api.schemaPath**: MANUAL - Needs public URL for hosted schema

## Tips for Best Results

1. **Keep READMEs updated** - Claude extracts descriptions from documentation
2. **Use standard files** - package.json, Dockerfile, etc. are automatically detected
3. **Document APIs** - Include OpenAPI/Swagger specs for API detection
4. **Provide CODEOWNERS** - Helps identify contacts
5. **More files = better inference** - Use "deep" analysis for comprehensive results

## Resources and links

- [Connect to local MCP servers](https://modelcontextprotocol.io/docs/develop/connect-local-servers)
- [Connect Claude Code to tools via MCP](https://code.claude.com/docs/en/mcp)
- [MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector)

## License

MIT. See the `LICENSE` file.

TDQS

A4.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: collecting files, retrieving schema, and generating manifest suggestions. There is no overlap or ambiguity.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (collect_repo_files, get_phaset_schema, suggest_manifest), making them predictable and easy to understand.

Tool Count5/5

Three tools is appropriate for a focused manifest generation server; each tool serves a necessary step in the workflow without excess or deficiency.

Completeness5/5

The tool set covers the full manifest generation process: data collection, schema retrieval, and suggestion generation. No obvious gaps for the stated purpose.