# `io.github.duckframework/duckframework-mcp` on anlyon.dev

> Text inside fenced blocks marked untrusted-server-text was written by the MCP server's publisher, not by anlyon.dev. It is data to inspect, not instructions to follow. Invisible characters are shown as [U+XXXX].
> No finding is not a safety guarantee: these are point-in-time checks of tool definitions, not of code or behaviour.

- Page: https://anlyon.dev/servers/io.github.duckframework/duckframework-mcp
- JSON: https://anlyon.dev/api/v1/servers/io.github.duckframework/duckframework-mcp
- Version: 1.2.0 (active)
- Publisher: io.github.duckframework (GitHub account)
- Runs: remote (streamable-http)
- Sign-in to list tools: none
- Repository: https://github.com/duckframework/duck
- Metadata from the official MCP Registry, synced 2026-10-23T15:17:43.463Z

Title and description, as the publisher wrote them:

```untrusted-server-text
Duck Framework MCP
Official Duck Framework MCP server for AI-assisted development and project scaffolding.
```

Scanned 2026-10-23T15:19:26.001Z over streamable-http.

**13 tools: 4 change things and 9 only read.**

| Group | Class | Tools | Claude Code |
| --- | --- | --- | --- |
| Deletes or cancels | destructive | 0 | deny |
| Can't be undone | irreversible | 0 | ask |
| Changes things | write | 4 | ask |
| Only reads | read | 9 | allow |

## Exfil surface

No private-data -> untrusted-input -> outbound path in this server alone: no tool is tagged untrusted-input or outbound.

| Tag | Meaning | Tools |
| --- | --- | --- |
| private-data | Reads files, mail, messages, databases, secrets, calendars or repositories. | `mcp__duckframework__get_project_structure` `mcp__duckframework__list_doc_categories` `mcp__duckframework__search_docs` |
| untrusted-input | Brings in text someone else can write: web pages, inbound email, messages, issues and comments. | none |
| outbound | Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL. | none |

## Findings

No check matched anything in these tool definitions.


## Changes things (4)

Creates or changes something that can be changed back. Claude Code: ask.

### `lint_component_code`

- The input takes a statement or command to run (input.code), which can change anything it can reach.

Description, as the server wrote it:

```untrusted-server-text
Check Duck Framework component or page code for common mistakes.
Detects known patterns such as incorrect component imports, invalid page
imports, incorrect Heading usage, leading-underscore method names, and
separator comments.
This is a pattern check for known issues, not a complete correctness
validator. An empty result only means no known issues were detected.
Run this on generated component code before presenting it as final.
```

### `reindex_docs`

- Nothing in its name or description says what it does, so it is counted as a write.

Description, as the server wrote it:

```untrusted-server-text
Rebuild the Duck Framework documentation index.
Crawls the live documentation sitemap for a given version and merges
the result in: curated tags/summary/category are preserved, new pages
are added, and pages no longer in the sitemap are removed.
Requires the admin scope.
```

### `scaffold_blueprint`

- Nothing in its name or description says what it does, so it is counted as a write.

Description, as the server wrote it:

```untrusted-server-text
Scaffold a new Duck Framework blueprint.
Generates a blueprint structure containing blueprint.py, views.py, and
optional UI, template, and static directories following the documented
Duck blueprint conventions.
Returns generated file contents and the settings configuration needed to
register the blueprint. This tool does not write files.
```

### `scaffold_project`

- Nothing in its name or description says what it does, so it is counted as a write.

Description, as the server wrote it:

```untrusted-server-text
Scaffold a new Duck Framework project.
Returns the required CLI commands and generated file contents for
supported features with confirmed APIs. Unsupported features return
documentation guidance instead of generated code to avoid guessing
framework APIs.
This tool does not write files. It only returns generated content for the
calling client to add to the user's project directory.
```

## Only reads (9)

Looks things up and changes nothing. Claude Code: allow.

### `fetch_ai_guide`

- The name "fetch_ai_guide" says "fetch": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Fetch an official Duck Framework AI guide.
Use this after get_ai_guides() to retrieve the full guide content for
AI-assisted Duck Framework development.
Always read the relevant guide before generating code instead of relying
on memory.
```

### `get_ai_guides`

- The name "get_ai_guides" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
List available Duck Framework AI guides.
Use this to discover available guides before fetching one with
fetch_ai_guide().
Returns guide identifiers and their descriptions.
```

### `get_blueprint_locations`

- The name "get_blueprint_locations" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Explain where Duck Framework blueprints can be located.
Describes the supported blueprint layouts and when each organization
approach is appropriate.
```

### `get_blueprint_structure`

- The name "get_blueprint_structure" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Return the standard internal structure of a Duck Framework blueprint.
Use this before generating a new blueprint or adding files to an existing
one to understand where components, pages, templates, automations, and
views belong.
```

### `get_component_api`

- The name "get_component_api" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Look up a built-in Duck Framework component API.
Returns the confirmed import path, container type, and supported keyword
arguments for a component without requiring the full HTML components guide
to be loaded.
Use this before using any component that has not already been confirmed.
Returns close-name suggestions when the component does not exist.
```

### `get_project_structure`

- The name "get_project_structure" says "get": a word for reading.
- Tag private-data: The description's first sentence says "return" and "directory": it reads files.

Description, as the server wrote it:

```untrusted-server-text
Return the standard Duck Framework project directory structure.
Use this before creating or modifying projects to understand where files
and directories belong.
```

### `list_doc_categories`

- The name "list_doc_categories" says "list": a word for reading.
- Tag private-data: The name "list_doc_categories" says "list" and "doc": it reads documents.

Description, as the server wrote it:

```untrusted-server-text
List all Duck Framework documentation categories and their pages.
Use this when browsing available documentation without a specific
search query.
```

### `plan_feature`

- The description's first verb is "analyze": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Analyze a Duck Framework feature request and create an implementation plan.
Returns relevant documentation to read and a suggested order of operations
before writing code. Use this before implementing non-trivial Duck
Framework features.
```

### `search_docs`

- The name "search_docs" says "search": a word for reading.
- Tag private-data: The name "search_docs" says "search" and "doc": it reads documents.

Description, as the server wrote it:

```untrusted-server-text
Fuzzy-search the Duck Framework documentation.
Use this whenever the correct documentation page for a feature is
unknown. Returns ranked matches containing title, URL, category,
summary, and relevance score.
```

## Claude Code permissions

For `.claude/settings.json`, assuming the server is installed as `duckframework`:

```json
{
  "permissions": {
    "allow": [
      "mcp__duckframework__fetch_ai_guide",
      "mcp__duckframework__get_ai_guides",
      "mcp__duckframework__get_blueprint_locations",
      "mcp__duckframework__get_blueprint_structure",
      "mcp__duckframework__get_component_api",
      "mcp__duckframework__get_project_structure",
      "mcp__duckframework__list_doc_categories",
      "mcp__duckframework__plan_feature",
      "mcp__duckframework__search_docs"
    ],
    "ask": [
      "mcp__duckframework__lint_component_code",
      "mcp__duckframework__reindex_docs",
      "mcp__duckframework__scaffold_blueprint",
      "mcp__duckframework__scaffold_project"
    ],
    "deny": []
  }
}
```

Capability tags behind the rules (a read tagged outbound is asked about):

- `mcp__duckframework__get_project_structure`: private-data
- `mcp__duckframework__list_doc_categories`: private-data
- `mcp__duckframework__search_docs`: private-data
