Skip to main content
Glama
RoanokeControls

flutter-coder

Flutter Coder MCP Server

MCP server providing Flutter and Dart reference data, code generation, live API lookups, a verified advanced-sample corpus, and an opinionated knowledge base for Claude Code.

Tools (12)

Tool

Description

Source

flutter_find_sample

Search the advanced sample corpus by describing what you're building

Static (verified corpus)

flutter_get_sample

Full code + gotchas for a specific sample id

Static (verified corpus)

flutter_list_samples

Browse the corpus index by category

Static (verified corpus)

flutter_knowledge

Architecture/tooling guidance: structure, state management, theming, flavors/CI, package picks

Static (verified 2026-07)

flutter_docs

Search Flutter API docs for any class/widget/method

Live (api.flutter.dev)

dart_docs

Search Dart API docs for core library references

Live (api.dart.dev)

pub_package

Get pub.dev package details, versions, score, dependencies

Live (pub.dev API)

flutter_widget_lookup

Search curated widget catalog with properties and tips

Static (100+ widgets)

flutter_error_help

Diagnose common Flutter errors with solutions

Static (20+ patterns)

flutter_breaking_changes

Query breaking changes by version or keyword

Live (docs.flutter.dev)

dart_language_ref

Dart language feature reference through Dart 3.12

Static (21 features)

flutter_codegen

Generate widget/BLoC/Riverpod 3/test/freezed/repository boilerplate

Static (7 templates)

Related MCP server: Flutter MCP

Resources (6)

Resource

URI

Description

Samples Index

flutter://samples-index

The verified advanced sample corpus, grouped by category

Knowledge Base

flutter://knowledge-base

Index of current best-practice guidance entries

Widget Catalog

flutter://widget-catalog

100+ widgets with categories, properties, usage tips

Error Catalog

flutter://error-catalog

Common errors with root causes and solutions

Dart Features

flutter://dart-features

Dart language features through 3.12 (incl. the macros cancellation)

State Management

flutter://state-management

BLoC vs Riverpod 3 vs Provider comparison

The sample corpus

Every sample in src/data/samples/ is complete, self-contained Dart that passed flutter analyze with zero errors/warnings in a scratch app before landing here (test-category samples also pass flutter test). Categories: rendering, animation, architecture, async, platform, navigation, performance, testing, ui-patterns, and connectivity (BLE, MQTT, provisioning, serial, firmware↔app protocol, OTA — the device-companion layer for REC's embedded products).

Setup

git clone https://github.com/RoanokeControls/flutter-coder.git
cd flutter-coder
npm install
npm run build
npm test        # corpus integrity suite

Register in Claude Code

Add to ~/.claude.json under mcpServers:

{
  "flutter-coder": {
    "type": "stdio",
    "command": "node",
    "args": ["/path/to/flutter-coder/dist/index.js"]
  }
}

Or copy .mcp.json to your Flutter project root for project-level registration.

Staying current

npm run check-updates probes Flutter/Dart releases and the tracked pub.dev packages against the committed baseline in data/version-state.json, exiting 1 when static content may be stale. A scheduled cloud routine runs it on the 1st of every month and opens a GitHub issue with the findings. See CLAUDE.md for the maintenance playbook.

Architecture

src/
├── index.ts                  # MCP server entry, tool + resource registration
├── cache.ts                  # In-memory TTL cache (5 min API, 1 hour docs)
├── fetcher.ts                # HTTP fetch helpers with timeout and HTML parsing
├── tools/                    # Tool implementations (live fetchers + corpus search)
└── data/
    ├── samples/              # Verified advanced sample corpus (one file per area)
    ├── knowledge/            # Knowledge base entries (asOf-dated guidance)
    ├── widget-catalog.ts     # 100+ curated widget entries
    ├── error-catalog.ts      # 20+ error patterns with solutions
    ├── dart-features.ts      # Dart language features through 3.12
    └── patterns.ts           # State management patterns + codegen templates
scripts/check-updates.mjs     # Monthly freshness probe (exit 1 = actionable)
data/version-state.json       # Committed baseline the probe diffs against
test/corpus.test.mjs          # Integrity suite (ids, categories, deprecated-API bans)

Hybrid approach: live fetching from official APIs (pub.dev, api.flutter.dev, api.dart.dev, docs.flutter.dev) combined with curated, analyzer-verified static data for samples, error solutions, and guidance. All live fetches use an in-memory TTL cache.

License

MIT

Available Tools

14 tools
dart_docsB

Search Dart API docs for core library classes. Returns description, properties, methods, and constructors.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesClass name to look up (e.g., 'Future', 'Stream', 'List', 'Map')
libraryNoDart library (e.g., 'dart:core', 'dart:async', 'dart:collection', 'dart:io')

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It is a read/search operation which is implied by 'Search', but the description doesn't clarify whether this hits a network API, has rate limits, or what happens for partial matches or unknown class names. It does note the return shape (description, properties, methods, constructors) which adds moderate transparency value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is efficiently structured and front-loaded with the core action and resource. It includes the return content list which is useful. No wasted words, though it could be slightly more informative about usage context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only search tool with 100% schema coverage, the description is reasonably complete: it covers what it does and what it returns. However, there is no output schema, so the description's mention of returned fields (description, properties, methods, constructors) is the only return information available. It doesn't address edge cases like empty results or whether multiple classes can match a query, which for a search tool would be useful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters have descriptions in the schema itself. The schema documents 'query' as the class name to look up with helpful examples ('Future', 'Stream', 'List', 'Map') and 'library' with example values. The description adds marginal value beyond this, only indicating that results include description/properties/methods/constructors. The baseline of 3 is appropriate given the schema already handles parameter documentation well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Search Dart API docs') and enumerates the returned content (description, properties, methods, constructors). It is clear about what the tool does. However, it doesn't explicitly distinguish from its sibling tools like dart_language_ref or flutter_docs, though the focus on 'core library classes' partially differentiates it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for looking up Dart core library class documentation, which gives some usage context. However, it provides no explicit guidance on when to use this versus dart_language_ref (for language syntax) or flutter_docs, no exclusions, and no mention of when a different sibling would be more appropriate. There is no alternative tool named as a fallback.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dart_language_refB

Dart language feature reference with syntax, examples, and tips. Covers records, patterns, sealed classes, and more.

ParametersJSON Schema
NameRequiredDescriptionDefault
featureYesFeature name (e.g., 'records', 'patterns', 'sealed', 'extensions', 'null safety', 'isolates')

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral disclosure burden. The description reveals the tool is a read/reference tool covering records, patterns, sealed classes 'and more', which signals it's non-destructive. However, it doesn't clarify what 'and more' includes, whether output is structured or freeform, or how the response is formatted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that instantly conveys the tool's purpose and scope. It is front-loaded with the core purpose and then provides concrete examples of covered features. There is minimal waste, though it could potentially mention the response format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only reference tool with one well-documented parameter, the description is reasonably complete. It names the covers topics and clarifies it provides syntax, examples, and tips. However, it doesn't enumerate the full feature list ('and more' is vague), and there's no indication of how to handle unknown features or what the lookup behavior is for unsupported inputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'feature' parameter has a clear description listing example values. The description reinforces the parameter by naming the same features (records, patterns, sealed classes), which is consistent with the schema. Baseline 3 is appropriate since the schema already handles parameter documentation adequately, though the description adds some reinforcement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool provides Dart language feature reference with syntax, examples, and tips, and names specific features (records, patterns, sealed classes). This clearly distinguishes it from siblings like flutter_docs and dart_docs by focusing specifically on language features. However, it doesn't explicitly call out that it covers only language constructs as opposed to broader Dart/Flutter APIs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage is for looking up Dart language feature details (syntax, examples, tips). It lists covered features which gives some context, but it doesn't state when NOT to use it vs siblings like dart_docs (which could cover language features too) or flutter_docs. No explicit exclusions or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_breaking_changesB

Query Flutter breaking changes by version or keyword. Useful for migration planning.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoKeyword to search for in breaking changes (e.g., 'Material', 'Navigator', 'Theme')
versionNoFlutter version to filter by (e.g., '3.0', '3.22')

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It doesn't mention whether this is a read-only operation, whether both query and version can be combined or are mutually exclusive, what the result format looks like, or any limitations on the search behavior. This is a significant gap for a query tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficient at two sentences with zero wasted words. The key verb, resource, and usage hint are all front-loaded in the first sentence. It could arguably be more structured, but there's nothing extraneous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a relatively simple query tool with 2 optional parameters and no output schema. The description covers the core purpose and a use case. However, it doesn't clarify parameter interaction semantics (can query+version be combined?), which is important for an agent to invoke correctly. No output schema means the agent has no guidance on what results look like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, both parameters (query, version) are described in the schema with example values. The description adds the dimension framing (by version or keyword) that complements the schema, but doesn't clarify whether the two parameters can be used together or are alternatives. Baseline 3 is appropriate given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ("Query") and resource ("Flutter breaking changes"), and identifies two query dimensions (by version or keyword). It distinguishes from siblings like flutter_docs and flutter_widget_lookup, though it doesn't explicitly name them or contrast against them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions the tool is "Useful for migration planning," which provides some context for when to use it. However, it doesn't explicitly state when NOT to use it or name alternative tools, though the sibling list suggests there are more specific lookup tools available.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_codegenC

Generate Flutter/Dart boilerplate code. Supports StatelessWidget, StatefulWidget, BLoC, Riverpod, tests, freezed, and repository patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the generated class/widget (e.g., 'UserProfile', 'ShoppingCart')
propsNoOptional properties with types (e.g., ['String name', 'int age', 'bool isActive'])
templateYesTemplate type: stateless, stateful, bloc, riverpod, test, freezed, repository

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden of behavioral disclosure. It states it generates code but doesn't disclose whether it writes to files, returns code as a string, requires project context, has side effects, or how output is delivered. For a generation tool potentially writing files, this is a meaningful gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence listing capabilities plus a useful set of supported patterns. It's compact and front-loaded with the core purpose. Could arguably be split for readability, but there's no wasted content and every part adds information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a code-generation tool with no output schema, no annotations, and 3 parameters, the description should clarify what the generated output looks like or how results are returned (file writes vs string output). The supported-pattern list is helpful, but there's no guidance on output format, side effects, or error behavior, which matters for a generation tool. Incomplete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 3 parameters. The description adds the supported template values (widgets, BLoC, Riverpod, tests, freezed, repository patterns), which enriches the template parameter's meaning beyond the schema's plain list. This earns a baseline 3 with slight added value, though it doesn't clarify the props format beyond what's in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource ("Generate Flutter/Dart boilerplate code") and lists supported patterns. It's clear what the tool produces. However, with 14 sibling tools mostly about docs/reference/sample lookups, it doesn't explicitly distinguish itself as the only code-generation tool, though the intent is reasonably inferable from "Generate". It's clear but not maximally differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool vs alternatives. Given the many sibling tools (dart_language_ref, flutter_docs, flutter_get_sample, etc.), a note clarifying that this is for generating boilerplate rather than looking up documentation or samples would help. The context is implied by the action "Generate" but no when/when-not or alternative exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_docsC

Search Flutter API docs for any class, widget, method, or enum. Returns description, properties, methods, and constructors.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoType hint to narrow the search
queryYesClass or widget name to look up (e.g., 'Container', 'ThemeData', 'BoxDecoration')

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool is a read/search operation implicitly, but doesn't disclose specifics like whether it hits the network, whether results are cached, pagination/limit behavior, failure modes (no results found?), or what happens with ambiguous queries. For a search tool this is a moderate gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose and follows with return-content detail. It has zero wasted words. However, it under-specifies rather than being verbose, so it earns a 4 rather than 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description should explain the return shape more fully. It lists what's returned generically (description, properties, methods, constructors) but for a docs-search tool with 13 siblings, more specificity about result structure, ordering, or how the optional type enum affects search behavior would improve completeness. The tool has moderate complexity (entity types, optional narrowing) that calls for more detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters well (query examples and type enum). The description adds the return-content detail (description, properties, methods, constructors) which contextualizes what the query leads to, but baseline 3 applies when schema does the heavy lifting; the description adds only marginal semantic value beyond the schema examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Search') with a clear resource ('Flutter API docs') and lists the entity types covered (class, widget, method, enum). It also states what it returns (description, properties, methods, constructors). However, it doesn't clearly distinguish this from siblings like 'dart_docs' or 'flutter_widget_lookup', though its Flutter-specific and returns-content scope is reasonably clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states what the tool searches but gives no explicit guidance on when to use it vs alternatives. Given many siblings (flutter_knowledge, flutter_source_search, dart_docs, dart_language_ref), there is no when/when-not guidance or mention of alternatives. 'Type hint to narrow the search' hints at usage but doesn't clarify when to prefer one entity type or which sibling handles related queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_error_helpA

Diagnose common Flutter errors and get solutions with code examples. Paste the error message for diagnosis.

ParametersJSON Schema
NameRequiredDescriptionDefault
error_messageYesThe Flutter error message to diagnose (e.g., 'RenderFlex overflowed', 'setState after dispose')

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the transparency burden. It discloses the tool's behavior reasonably (returns solutions with code examples based on pasted error), but doesn't mention how comprehensive the error coverage is, whether it covers all Flutter errors or only 'common' ones, or what the output format looks like. The word 'common' hints at limited scope but is not elaborated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. Each sentence carries meaning: the first states the tool's function, the second gives the user an explicit action. Could arguably be trimmed slightly, but it is appropriately sized for a single-parameter diagnostic tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter diagnostic tool with no output schema, the description is reasonably complete. However, given the sibling context (many flutter_* tools), it could benefit from noting that it handles runtime/compile errors specifically, and clarifying the scope of 'common' errors versus exhaustive coverage. The single-parameter simplicity partially compensates for these gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% - the single required parameter (error_message) is fully documented in the schema with an example. The description reinforces this by telling the user to paste the error message. Baseline 3 applies since the schema already does the heavy lifting; the description adds minimal parameter context beyond confirming the paste action.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource combo: 'Diagnose common Flutter errors and get solutions with code examples.' It clearly distinguishes itself from siblings (flutter_docs, dart_docs, flutter_get_sample) by being about error diagnosis rather than reference lookup. The user action ('paste the error message') is explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by saying 'paste the error message for diagnosis,' which gives a clear when-to-use signal. However, it does not explicitly state when NOT to use this tool versus alternatives like flutter_docs or flutter_source_search, which might be more appropriate for general API questions rather than error troubleshooting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_find_sampleA

FIRST STOP when writing advanced Flutter code. Search the verified sample corpus (custom render objects, shaders, slivers, animation physics, isolates, platform channels, go_router, golden tests, performance patterns) by describing what you're building. Returns the best-match sample in full with gotchas.

ParametersJSON Schema
NameRequiredDescriptionDefault
needYesWhat you're building or trying to solve (e.g., 'animated chart with custom painter', 'background json parsing', 'deep link auth guard')

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the return behavior ('Returns the best-match sample in full with gotchas'), which is valuable and beyond what the schema conveys. It also notes the corpus is 'verified,' implying quality guarantees. Slightly under-discloses search-failure behavior or the exact meaning of 'best-match,' but the core behavioral contract is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact two-sentence description with strong front-loading ('FIRST STOP' immediately signals purpose). The topic enumeration is useful but slightly long, listing 9 areas. No wasted words, though the large parenthesis list edges toward over-specification for a first-line description. Efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single simple parameter, 100% schema coverage, and no output schema, this description is complete. It states the purpose, when to use it, what the input should contain, and what the return is. Nothing material is left unsaid for an agent to use this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of the single parameter with a clear example ('animated chart with custom painter', 'background json parsing'). The description adds consistent context that the 'need' parameter should describe what you're building, aligning with and reinforcing the schema example. Essentially no additional meaning beyond schema, but schemas already carry the full burden at 100% coverage, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is highly specific: 'FIRST STOP when writing advanced Flutter code' with explicit verb (search) and resource (verified sample corpus), and enumerates the covered topics (custom render objects, shaders, slivers, animation physics, isolates, platform channels, etc.). It clearly differentiates from siblings like flutter_get_sample and flutter_list_samples by positioning itself as the first-stop search tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames WHEN to use it ('FIRST STOP when writing advanced Flutter code') and HOW to invoke it ('by describing what you're building'). The enumerated topic list and 'verified sample corpus' signal specificity versus the broader flutter_docs or dart_docs siblings. The covered-technique list acts as implicit exclusions—if your need isn't in that list, a different tool is likely appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_get_sampleB

Get a specific sample from the advanced corpus by id, with complete compilable code and notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSample id from flutter_list_samples or flutter_find_sample (e.g., 'staggered-entrance-animation')

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It doesn't state whether this is read-only, whether it requires any prerequisites (like first calling flutter_list_samples/find_sample to get a valid id), or what happens if the id is invalid/not found. It also doesn't disclose output structure beyond 'complete compilable code and notes.'

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, zero waste, front-loaded with the core purpose. It's concise and to the point. Could include slightly more usage context, but as a one-sentence description it's efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with a documented schema and no output schema, this is reasonably complete for basic usage. However, it lacks guidance on prerequisite steps (calling list/find first), error handling for bad ids, and since there's no output schema, it would benefit from describing the expected return structure more explicitly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with the id parameter well-documented in the schema itself. The description adds little beyond the schema—it doesn't elaborate on id format outside what the schema's example provides. The schema already explains id sources, so the description adds marginal value here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it gets a specific sample by id from a corpus, with complete code and notes. The verb+resource is specific (get a sample by id) and the content scope is defined (complete compilable code and notes). It doesn't explicitly differentiate from siblings like flutter_list_samples, but the by-id retrieval is implied distinct from listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is used to fetch a specific sample by id, and the id parameter references sibling tools (flutter_list_samples, flutter_find_sample) as a source for ids. However, it doesn't explicitly state when to use this vs alternatives, nor does it mention that flutter_list_samples/find_sample should be called first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_knowledgeA

Opinionated, current best-practice guidance for Flutter projects: architecture, state management choice, project structure, theming, error handling, flavors/CI, package picks. Query by topic or entry id.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesTopic, question, or entry id (e.g., 'project structure', 'which state management', 'build flavors')

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full disclosure burden. It calls itself 'opinionated' (a helpful trait disclosure) and implies a read/knowledge-retrieval operation, but it doesn't state return format, scope limits, or whether answers reflect a specific framework version/state. The 'current best-practice' phrasing signals temporal relevance but the mechanism (how current, how opinionated) is undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose ('Opinionated, current best-practice guidance for Flutter projects'), then a topic list, then usage directive. Every sentence earns its place; the topic enumeration is not wasteful because it doubles as query guidance for the agent. Zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter knowledge-lookup tool with no output schema, the description covers topic scope, query format, and usage mode (topic or entry id). It doesn't explain what the response looks like (single answer, excerpts, links), but for a lightweight retrieval tool among many siblings, this is nearly complete. Minor gap: no note about response structure or whether multiple topics can be combined in one query.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the query parameter is well-documented ('Topic, question, or entry id') with concrete examples. The description complements this by listing valid topic areas and clarifying that the query can be either a topic or an entry id, adding meaning beyond the bare schema without redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific purpose: providing opinionated, current best-practice guidance for Flutter projects, enumerating concrete topics (architecture, state management, theming, error handling, flavors/CI, package picks). It clearly distinguishes itself from sibling tools like flutter_docs (reference docs) and flutter_source_search (source code lookup) by being opinionated guidance rather than raw reference material.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear guidance on how to query ('by topic or entry id') and enumates example queries. While it doesn't explicitly state when not to use versus alternatives, its positioning as opinionated best-practice guidance implicitly differentiates it from pure reference tools like dart_language_ref and flutter_docs. A brief note on when to prefer it over siblings would push to 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_list_samplesB

Browse the advanced sample corpus index, optionally filtered by category.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter by category

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes what the tool does (browse/filter) but says nothing about pagination, result volume, return format, or any limits. For a browsing tool that likely returns a large index, this is a meaningful disclosure gap, though the core behavior is adequately conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence that conveys purpose and the optional filtering capability with zero waste. It's appropriately brief for a simple one-parameter tool, though it could arguably include a touch more usage context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple browse/filter tool with one enum-constrained optional parameter and no output schema, the description is mostly adequate. However, it doesn't mention what the returned results look like (given no output schema exists) nor does it clarify the relationship to sample-fetching siblings, leaving the agent partially guessing about downstream behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the single 'category' parameter already documented in the schema including a full enum of valid values. The description adds the 'optional' qualifier, confirming the parameter isn't required, but adds little beyond what the schema provides. The baseline 3 applies since the schema does the heavy lifting adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Browse') with a clear resource ('advanced sample corpus index') and a scoping qualifier ('optionally filtered by category'). It clearly indicates this is a listing/browsing tool. However, it doesn't explicitly distinguish it from the sibling tools like flutter_find_sample or flutter_get_sample, which could be confused for related sample-access operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a browsing use case ('Browse... optionally filtered by category') but provides no explicit guidance on when to choose this over flutter_find_sample or flutter_get_sample. Since these siblings likely handle searching and retrieving specific samples, usage context is implied but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_source_readA

Read a file or directory from the vendored flutter_reactive_ble federation source. Call with no path for the package tree and version manifest; a directory path lists it; a file path returns numbered source (paged, 500 lines max per call).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath relative to the source root (e.g., 'flutter_reactive_ble/lib/src/reactive_ble.dart'). Omit for the overview.
end_lineNoLast line to return
start_lineNoFirst line to return (1-based)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return format (numbered source), pagination limit (500 lines max per call), and behavior for empty/directory/file paths. This is solid behavioral disclosure for a read-only file accessor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose, and zero wasted words. The path-behavior rules are compactly packed into one sentence. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only source-access tool with 0 required params and no output schema, the description covers behavior for all three usage modes (overview, directory, file), pagination, and relative path semantics. It doesn't describe error cases or return types in detail, but for this simple tool class the description is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaning to 'path' (relative to source root, omit for overview) and implies start_line/end_line usage through the numbering and pagination mention. It also explains the interaction between path and the line-range parameters. This adds some value but the schema already documents all parameters reasonably.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (read), resource (vendored flutter_reactive_ble federation source), and scope (file/directory/overview). It distinguishes itself from siblings like flutter_source_search (searching) and flutter_docs/dart_docs (documentation lookup) by being specifically about reading vendored source files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: no path returns package tree/version manifest, a directory path lists it, and a file path returns numbered source. It also mentions pagination (500 lines max per call). It doesn't explicitly name alternative tools or state when NOT to use it, but the behavioral rules are well-covered and clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flutter_widget_lookupB

Search the curated Flutter widget catalog. Returns widget properties, usage tips, and best practices.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesWidget name or search term (e.g., 'scroll', 'animation', 'input')
categoryNoFilter by category (e.g., 'Layout', 'Input', 'Navigation', 'Animation')

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations were provided, so the description carries the burden of behavioral disclosure. It describes the tool as read-only search/return behavior, which is apparent from the verb 'Search' and 'Returns'. It doesn't disclose what the return payload looks like, whether results are ranked, or whether the catalog is well-maintained, but for a simple read tool the behavior is adequately implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise single sentence that states purpose and output in compact form. No wasted words. Could arguably break out what's returned as a separate element, but the single sentence is efficient and front-loaded with the primary verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, no-output-schema tool, the description covers the basics: what it does and what it returns. However, given 14 sibling Dart/Flutter tools, some differentiation or usage guidance would improve completeness. The output shape (prop list, code snippets) is only vaguely referenced by 'properties, usage tips, and best practices'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters (query, category) are documented in the schema. The description adds modest value by framing the tool as returning 'properties, usage tips, and best practices' but doesn't describe how 'category' interacts with 'query' or whether category is optional/required filtering. The schema already handles parameter documentation, placing this at baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource: 'Search the curated Flutter widget catalog.' It states what it returns (widget properties, usage tips, best practices). It doesn't explicitly differentiate from siblings, but the 'widget catalog' focus is reasonably distinct from other Flutter tools like flutter_docs or flutter_knowledge.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or scenarios are given. Among 14 sibling Flutter tools (flutter_docs, flutter_knowledge, flutter_source_search, etc.), there is no guidance on when to prefer this tool over alternatives. The closest indicator is the word 'curated' suggesting it's for curated knowledge, but this is not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pub_packageA

Get pub.dev package details including version, score, dependencies, and installation instructions.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPackage name on pub.dev (e.g., 'riverpod', 'flutter_bloc', 'go_router')

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral disclosure burden. It states the tool fetches package details, implying a safe read-only operation, but doesn't describe network behavior, availability of metadata, error cases for invalid package names, or any rate limits. The description adds some value but doesn't fully disclose behavioral traits beyond the obvious read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It efficiently lists the tool's purpose and key outputs. It's appropriately concise without being under-specified. Could potentially front-load more specific detail but is otherwise well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a straightforward single-parameter lookup tool with 100% schema coverage and no output schema. The description lists what details are returned (version, score, dependencies, installation). For a simple lookup operation, the description is largely sufficient, though it doesn't mention error handling for nonexistent packages.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single 'name' parameter with an example. The description's mention of 'package details' adds marginal context about what's returned, but the schema fully covers parameter semantics. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and clearly identifies the resource ('pub.dev package details') along with the key types of data returned (version, score, dependencies, installation instructions). It's clear and distinct from siblings like flutter_docs and dart_docs, though it doesn't explicitly name a sibling for differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its purpose—retrieving pub.dev package metadata—which is inferable from the tool name and description. However, it doesn't state when to use this versus alternative tools like flutter_docs or dart_docs, or when it would be inappropriate. The usage context must be inferred rather than stated explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 14 tool updatesv2.3.0
    • First observeddart_docs
    • First observeddart_language_ref
    • First observedflutter_breaking_changes
    • First observedflutter_codegen
    • First observedflutter_docs
    • First observedflutter_error_help
    • First observedflutter_find_sample
    • First observedflutter_get_sample
    • First observedflutter_knowledge
    • First observedflutter_list_samples
    • First observedflutter_source_read
    • First observedflutter_source_search
    • First observedflutter_widget_lookup
    • First observedpub_package

TDQS

B3.4/5.0
Disambiguation4/5

Most tools are clearly distinct: docs lookups (dart_language_ref, flutter_docs, dart_docs, flutter_widget_lookup), sample retrieval (flutter_find_sample, flutter_get_sample, flutter_list_samples), source grep/read (flutter_source_search, flutter_source_read), and codegen. Minor potential confusion exists between flutter_docs and flutter_widget_lookup (both search Flutter API/widget info) and between flutter_find_sample vs flutter_get_sample vs flutter_list_samples, though the 'first stop' labeling and verbs help differentiate.

Naming Consistency4/5

Tools follow a consistent flutter/dart prefix plus verb_noun pattern: flutter_find_sample, flutter_get_sample, flutter_list_samples, flutter_source_search, flutter_source_read are well-formed. A few use noun-only names (flutter_docs, dart_docs, pub_package) lacking an explicit verb, but the convention is otherwise stable and predictable.

Tool Count4/5

14 tools is on the upper edge of the recommended range but justified for a flutter coding assistant that covers docs, samples, source, codegen, errors, and best practices. Each tool serves a clear reference/research purpose, though some (source_search/source_read) are highly specialized.

Completeness4/5

The surface is thorough for a coders' reference: language/API docs, widget lookup, package info, error diagnosis, breaking changes, verified samples, codegen, best practices, and vendored source access. Minor gaps include no build/run tool and no explicit write/edit capability, but for a reference and code-generation server the coverage is strong.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/RoanokeControls/flutter-coder'

If you have feedback or need assistance with the MCP directory API, please join our Discord server