flutter-stripe-mcp
This MCP server helps diagnose and troubleshoot Flutter + Stripe (flutter_stripe) project setup issues, and provides tools to search GitHub for known issues and fixes.
diagnose_setup: Analyzes a Flutter project at a given path and checks for common configuration problems:Kotlin version (must be >= 1.9.0)
Gradle wrapper version (must be >= 8.0)
Android theme styles (must derive from AppCompat, MaterialComponents, or Material3 themes)
MainActivitybase class (must extendFlutterFragmentActivity)ProGuard rules (must contain all required Stripe rules)
iOS deployment target (must be >= 13.0)
iOS camera permission (
NSCameraUsageDescriptioninInfo.plistfor card scanning)
Returns a structured result listing passing checks and actionable fix instructions for any issues found. Platform checks are skipped if the relevant
android/orios/directory is not present.search_flutter_stripe_issues: Searches theflutter_stripeGitHub repository for known issues by keywords, returning titles, states, and short excerpts.get_flutter_stripe_issue: Fetches the full body and all comments of a specific GitHub issue by number, to find actual fixes.
The server can be integrated with Claude Desktop or Claude Code, allowing Claude to automatically use these diagnostic and search tools.
Provides diagnostic checks for Flutter projects integrating Stripe, ensuring correct Android and iOS configurations.
Provides diagnostic checks for Stripe integration in Flutter projects, verifying setup requirements such as Kotlin version, Gradle wrapper, Android themes, MainActivity, ProGuard rules, iOS deployment target, and camera permission.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@flutter-stripe-mcpDiagnose flutter_stripe setup in /path/to/myapp"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
flutter-stripe-mcp
An MCP server that diagnoses Flutter + Stripe (flutter_stripe) setup issues — so Claude can check your project automatically.
What it does
Three tools: one diagnoses your local project setup, and two search GitHub for known issues and their fixes.
diagnose_setup takes the path to your Flutter project root and runs every check:
Check | Requirement |
| Kotlin version >= 1.9.0 (read from |
| Gradle wrapper >= 8.0 |
| Theme styles derive from |
|
|
|
|
| iOS deployment target >= 13.0 (from |
|
|
The result lists passing checks by name and returns a fix instruction for each problem found. Platforms without an android/ or ios/ directory are skipped.
Checking for known issues
Two more tools let Claude check whether a problem is already a documented issue in the flutter_stripe GitHub repo, and read the fix straight from the discussion:
Tool | Purpose |
| Search issues by keywords (e.g. an error message); returns titles, state, and short excerpts. |
| Fetch one issue's full body and all comments, to find the actual fix. |
These use GitHub's public search API, which is limited to 60 requests/hour unauthenticated. If you hit the rate limit, the tool returns a clear error instead of failing silently. Optionally, set a GITHUB_TOKEN (or GH_TOKEN) environment variable to raise this to 5,000 requests/hour — no other configuration needed.
Related MCP server: reforge-mcp
Install
pip install flutter-stripe-mcpOr with uv:
uv tool install flutter-stripe-mcpAdd to Claude Desktop
Open ~/Library/Application Support/Claude/claude_desktop_config.json and add:
{
"mcpServers": {
"flutter-stripe-mcp": {
"command": "flutter-stripe-mcp"
}
}
}Restart Claude Desktop. Claude will now have access to the diagnostic tool.
Add to Claude Code
claude mcp add flutter-stripe-mcp -- flutter-stripe-mcpUsage
Ask Claude:
"Check if my Flutter project at
/path/to/myappis set up correctly for flutter_stripe."
Claude calls diagnose_setup with the project root and tells you exactly what to fix.
Development
uv sync
uv run pytestSee DEVELOPMENT.md for running the server locally with MCP Inspector.
Available Tools
3 toolsdiagnose_setupARead-onlyIdempotent
Diagnose a Flutter + Stripe (flutter_stripe) project setup.
Android checks: Kotlin version, Gradle wrapper version, theme parents, MainActivity base class, ProGuard rules. iOS checks: minimum deployment target, camera usage permission.
Args: project_path: Absolute path to the Flutter project root (the directory containing android/ and ios/).
Returns: {"ok": [names of passed checks], "issues": [{"check", "status", "fix", ...} for each problem found]}
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and idempotentHint=true. The description adds specific behavioral details: lists exact checks (Kotlin version, Gradle, etc.) and return structure. No contradictions, and it enriches agent understanding of behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear sections (Android checks, iOS checks, Args, Returns). It is concise yet comprehensive, using bullet-like structure and plain text efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's multi-platform checks, the description covers all relevant aspects: project path requirement, platform-specific checks, and return format. It provides sufficient detail for an agent to understand the tool's full scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the 'project_path' parameter comprehensively: 'Absolute path to the Flutter project root (the directory containing android/ and ios/).' This adds significant meaning beyond the schema's minimal 'Project Path' title, which had 0% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: diagnose Flutter + Stripe project setup. It lists specific checks for Android and iOS, making the scope precise. With no sibling tools, it stands alone effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for diagnosing Flutter+Stripe projects. It does not explicitly state when not to use it or alternatives, but given no siblings, the absence is acceptable. It provides clear context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_flutter_stripe_issueARead-onlyIdempotent
Fetch the full body and comments of one flutter_stripe GitHub issue.
Use this after search_flutter_stripe_issues has identified a candidate issue number, to read the complete discussion — maintainer replies and community comments often contain the actual fix, workaround, or root cause that a title/excerpt alone won't reveal.
Args: issue_number: The GitHub issue number (e.g. 1234), not a URL.
Returns: {"number", "title", "state", "url", "body", "comments": [{"author", "body"}]} (plus "note" if the comment thread was too long to fetch in full), or {"error": "...", "kind": "..."} on failure (e.g. not found).
| Name | Required | Description | Default |
|---|---|---|---|
| issue_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, openWorldHint, and idempotentHint. The description adds valuable behavioral details: returns a 'note' if the comment thread was too long, and returns an error object with a 'kind' field on failure. This goes beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear summary, usage guidance, parameter description, and return format. It is concise, front-loaded, and every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, output schema provided), the description covers all necessary aspects: input, output, error handling, and usage context. No missing information for effective agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds crucial meaning: 'issue_number: The GitHub issue number (e.g. 1234), not a URL.' This clarifies the format and avoids confusion. For a single parameter, this is effective.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Fetch the full body and comments of one flutter_stripe GitHub issue.' This is a specific verb+resource pair, and it distinguishes from its sibling search_flutter_stripe_issues by focusing on retrieving full details of a single issue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use this tool: 'after search_flutter_stripe_issues has identified a candidate issue number.' It also explains why: 'to read the complete discussion — maintainer replies and community comments often contain the actual fix, workaround, or root cause.' This provides clear context and an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_flutter_stripe_issuesARead-onlyIdempotent
Search GitHub issues in the flutter_stripe repository (flutter-stripe/flutter_stripe).
Use this to check whether a problem you're debugging (an error message, a crash, an unexpected behavior) is already a known, reported issue — before assuming it's novel or trying to work around it from scratch. Returns short excerpts so you can judge relevance; call get_flutter_stripe_issue with a specific issue number to read the full discussion and find the documented fix or workaround.
If an exact-match search (all words present) finds nothing, this automatically retries with a broader "any of these words" search and marks the result with "broadened_search": true — treat those results as lower-confidence and check relevance via the excerpt before following up with get_flutter_stripe_issue.
Args: query: Free-text search terms (e.g. an error message or symptom). state: "all" (default), "open", or "closed". limit: Max number of results to return (1-30).
Returns: {"total_count": int, "results": [{"number", "title", "state", "url", "excerpt"}]} (plus "broadened_search"/"note" if a broader fallback search was used), or {"error": "...", "kind": "..."} on failure (e.g. rate-limited).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| state | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors beyond annotations: automatic retry with broadened search on no exact match, marking results with 'broadened_search', and return format with error handling. This adds value beyond the readOnlyHint, openWorldHint, and idempotentHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear paragraphs for purpose, usage, behavior, and parameters. It is concise without redundancy, front-loading the main goal and effectively using space for each aspect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters (all fully explained), an output schema described in the return format, and error handling notes, the description is complete. It provides all necessary context for correct invocation and interpretation of results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully explains all three parameters: query (free-text, example given), state (enum with default), and limit (range and default). It also notes the output includes error on failure, compensating for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches GitHub issues in a specific repository (flutter-stripe/flutter_stripe) and distinguishes it from the sibling tool get_flutter_stripe_issue by mentioning that it returns excerpts for relevance judgment and advises using the sibling for full details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use (to check if a problem is already reported) and provides context such as automated broadened search on no exact match. It also mentions the alternative tool for full discussion, giving clear usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Only one tool exists (diagnose_setup), so there is no possibility of confusion with other tools. The tool's purpose is clearly described and unique.
With a single tool, naming is trivially consistent. The verb_noun pattern 'diagnose_setup' follows a clear and predictable style.
One tool is acceptable for a narrow diagnostic purpose, but it feels thin for a server branded as 'flutter-stripe-mcp'. Typically, such servers would have 3-15 tools to cover both setup and operations.
The tool only diagnoses setup issues. There are no tools for actual Stripe integration, configuration, or operations, creating significant gaps for a server targeting Flutter + Stripe workflows.
Maintenance
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
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
- mcpOAuthcom.stripe
MCP server integrating with Stripe - tools for customers, products, payments, and more.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Related MCP Servers
- AlicenseAqualityDmaintenanceDiagnose, secure, and benchmark your MCP servers. Zero-config CLI for Claude Code, Cursor, VS Code, and Windsurf.4183MIT
- AlicenseBqualityDmaintenanceAn MCP server that connects Claude Code to your codebase for automated code cleanup with scanning, planning, atomic fixes, and rollback safety.102MIT
- FlicenseNot gradedqualityDmaintenanceA self-hosted MCP server that lets Claude query your bank accounts, balances, and transactions through Plaid.1
- FlicenseNot gradedqualityDmaintenanceAn MCP server that lets Claude manage long-running development processes across frameworks like Flutter, Next.js, Spring Boot, and Vite, with lifecycle control, log streaming, and hot reload support.1
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/remonh87/flutter_stripe_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server