Discussion on #6 - CLI & MCP Support #1228
Replies: 14 comments 31 replies
-
Beta Was this translation helpful? Give feedback.
-
My Research & Existing Implementation for CLI & MCP SupportHi @animator and mentors, I’ve been actively exploring MCP support in API Dash and wanted to share what I’ve already implemented, along with how I think it maps to GSoC 2026 Idea 6 (CLI & MCP Support). BackgroundThis builds on the original feature request: As part of that work, I already built a working MCP Server implementation as a standalone Dart package under What I’ve already builtHere’s the current MCP architecture as implemented (diagram below):
MCP Server core (
|
| Tool | Description |
|---|---|
list_requests |
List saved API requests (supports filter & limit) |
get_request |
Get full request details by ID |
create_request |
Create a new request (method, URL, headers, body) |
execute_request |
Execute/send a request and return response |
list_environments |
List environment configurations |
get_active_environment |
Get currently active environment variables |
Resources already exposed (via ResourceRegistry)
| URI | Description |
|---|---|
apidash://requests |
Summary of all saved requests |
apidash://environments |
All environment configurations |
apidash://environment/active |
Active environment variables |
apidash://request/{id} |
Dynamic: full details of a specific request |
Key design choice: ApiDashDataProvider interface
All tools/resources access API Dash data through an abstract ApiDashDataProvider.
This keeps the MCP layer independent of Flutter/Riverpod and makes it reusable for both GUI and a future headless CLI.
abstract class ApiDashDataProvider {
Future<List<Map<String, dynamic>>> getAllRequests();
Future<Map<String, dynamic>?> getRequest(String id);
Future<Map<String, dynamic>> executeRequest(String id);
Future<Map<String, dynamic>> createRequest({...});
Future<List<Map<String, dynamic>>> getEnvironments();
Future<Map<String, dynamic>?> getActiveEnvironment();
}How I think this fits into GSoC Idea 6 (my plan)
From my understanding, Idea 6 is specifically aiming for:
- a proper CLI tool to use API Dash from the terminal, and
- exposing API Dash as an MCP Server so external AI agents (VS Code / Copilot-style clients, Claude Desktop, other MCP clients) can interact with it.
I created a second architecture diagram to represent this “external clients + CLI + MCP” scope more explicitly. The solid boxes are what I've already built, and the dashed boxes represent the scope of work for GSoC:
1) External MCP clients (VS Code / Claude Desktop / other agents)
- I already have the MCP server core + transports.
- For GSoC scope, I'd focus on polishing and validating the
StdioTransportflow so external MCP clients can connect reliably. - I'd also add practical setup docs + config templates (especially for Claude Desktop and editor-based MCP clients).
2) Building a real CLI (apidash command)
Because MCP tools/resources already use ApiDashDataProvider, a CLI can reuse the same backend logic without duplicating code.
Commands I'm thinking of:
apidash listapidash run <request-id>apidash create --method GET --url ...apidash env listapidash env activeapidash serve --mcp(start MCP server headlessly)
3) Headless mode + storage access
The big engineering piece is making sure CLI/MCP mode can run without starting the Flutter UI, while still safely accessing the same local storage used by the app (Hive, request collections, environments, etc.).
I plan to split "UI startup" from "core data init", so the headless process can safely read saved requests/environments, execute requests, and expose them via CLI/MCP.
Questions for maintainers
To ensure my GSoC proposal aligns with the org's vision for Idea 6, I have a few key questions:
-
Storage access in headless mode: What's your preferred approach for the CLI/MCP server to safely read/write from the same local Hive storage as the GUI app without conflicts? Should we implement a file lock, or use a shared service layer?
-
MCP transport priority: For GSoC, should I prioritize
StdioTransport(for Claude Desktop & editor integrations) orHttpTransport(for broader agent compatibility)? Or both equally? -
CLI scope: Beyond what I've sketched (
list,run,create,env), are there specific CLI commands you'd consider essential for Idea 6? -
Testing expectations: For integration testing with external MCP clients (VS Code, Claude Desktop, Cursor), do you have preferred tools/approaches, or should I define that as part of the proposal?
These answers will help me refine my timeline and deliverables for the proposal. Thanks!
Beta Was this translation helpful? Give feedback.
-
Research & Initial Thoughts on CLI & MCP Support (Project 6)Hi everyone! I'm Mohamed Shehto. I attended 2 weekly connects and have been exploring the codebase. Here are my initial thoughts on Project 6. Research: HTTPieHTTPie is a widely used open-source command-line HTTP client designed to make API testing more human-friendly than traditional tools like curl. (view repo) A key observation is that a significant portion of HTTPie’s complexity comes from implementing and maintaining its own HTTP execution layer. API Dash is in a better position!!! The repo already provides a mature HTTP execution pipeline via: sendHttpRequest()located in: This means that the proposed CLI does not need to solve the hardest infrastructure problems that HTTPie faced. Instead, development can and should focus primarily on:
What I Think Should Be Built FirstStart with the simplest possible useful thing: apidash list # show all saved requests
apidash run "Get Users" # execute a saved request
apidash collection run "My APIs" # run all requests in a collectionProposed ArchitectureA new package inside the monorepo: Execution flow: Almost everything already exists the CLI is a thin wiring layer on top. This is very similar to how HTTPie does it as well!! Shared Data Between CLI, GUI, and MCPA key design insight: since the CLI reads and writes directly to the same This means:
Tech Stack RecommendationIn the meeting, we discussed splitting the stack for MCP, and I think it's a good idea, as TypeScript for MCP is much more mature CLI → DartSo we can directly reuse:
without duplicating logic. A TypeScript CLI couldn't share the Hive layer natively. Tools like melos and mason show Dart CLIs work well in the Flutter ecosystem. MCP Server → TypeScriptBecause the official: is the most mature and widely adopted. Most MCP servers in production are TypeScript, and:
all have strong TypeScript MCP support. The MCP Angle (Coolest Part)Based on today's discussion, the primary use cases are:
This enables powerful workflows. Claude (or any AI agent) could:
A developer could literally say:
…and Claude would do it autonomously using the MCP server. QuestionsShould the CLI support creating and managing requests purely from the terminal with no GUI needed, or is the primary CLI use case running requests that were already saved in the GUI? This affects whether I prioritize:
Looking forward to next weeks meeting!!! |
Beta Was this translation helpful? Give feedback.
-
|
Hello @animator and the API Dash Team, I've been following the GSoC 2026 ideas with great interest. After researching the current AI implementation in API Dash and reviewing the 2025 successful proposals (e.g., AI API EVAL by Harsh Panchal), I would like to share a comprehensive vision for a 350-hour project. As an active contributor with 3 closed PRs and 1 currently in progress, I am committed to evolving API Dash into the central hub for Agentic AI development. 1. The Vision: Unified Agentic EcosystemI am proposing to bridge Idea #1 (MCP Testing), Idea #2 (Multimodal Eval), Idea #4 (Agentic Testing), and Idea #6 (CLI Support). This isn't just a set of features; it's a "Modular Intelligence Layer" for the platform. 2. High-Fidelity Research & ArchitectureBelow is my proposed high-level architecture, keeping API Dash as the orchestration hub: graph TD
User([User]) --> Dashbot[Dashbot Agent]
Dashbot --> Core[apidash_core]
Dashbot --> MCP[MCP Client/Server]
MCP --> Target[External API/Tool]
Core --> CLI[API Dash CLI]
Core --> GUI[Flutter GUI]
subgraph "Agentic Layer"
Dashbot
MCP
end
Detailed Internal FlowTo ensure technical feasibility, I've mapped out the internal interactions between the core engine and the new protocol layers: sequenceDiagram
participant UA as User/Agent
participant AP as apidash_core
participant MCP as MCP Registry
participant SRV as MCP Server (stdio/SSE)
UA->>AP: Trigger Request/Tool
AP->>MCP: lookup_tool(id)
MCP-->>AP: Tool definition (JSON)
AP->>SRV: call_tool(args)
SRV-->>AP: Result
AP-->>UA: Formatted Output
Key Pillar: MCP Tool Playroom (Idea #1 & #6)I've designed a dedicated visualizer for the Model Context Protocol. This will allow developers to discover and test MCP tools (stdio/SSE) with real-time schema validation—a "Postman experience" for the AI world. Note GUI Mockup: MCP Server Explorer with Tool Playroom and Multimodal results (To be uploaded). Key Pillar: CLI as an MCP Bridge (Idea #6)The CLI won't just run requests; it will act as an stdio MCP Server, allowing external agents (like Claude or GitHub Copilot) to use API Dash's core engine to execute collections and generate code. Note CLI Mockup: Interactive Terminal Dashboard with real-time request monitoring (To be uploaded). 3. Deep Research & Competitive AdvantageBy analyzing past proposals, I've identified three "Winning Edges" for 2026:
I have a detailed 12-week roadmap and technical documentation ready for review. I am extremely excited to help future-proof API Dash through this 350-hour project! Best regards, |
Beta Was this translation helpful? Give feedback.
-
|
Hi @animator While researching the CLI and mcp support, I noticed that better_networking currently depends on Flutter in a few places: kIsWeb in http_client_manager.dart debugPrint in auth_utils.dart flutter_web_auth_2 in oauth2_utils.dart Because of this, the CLI cannot depend on better_networking, as the CLI will be pure Dart. Would it be acceptable to refactor these Flutter-specific dependencies so that better_networking remains usable by both the Flutter app and the CLI? I want to confirm this direction before proceeding with the initial idea. |
Beta Was this translation helpful? Give feedback.
-
|
Hi @animator Sir here is my initial draft for Proof of concept i want to discuss before finalize anything. API Dash and DashBot MCP Proof of conceptThis document outlines the core components and user interface features of the Model Context Protocol (MCP) integration for DashBot and API Dash. Mono repo here armanraymagit/apidash_mcpDemo VideoMCP Integration Demo to see the native Dart Implementation for MCP Support and MCP server. 🏗️ Core ArchitectureThe system follows the standard MCP triad to ensure seamless communication between AI models and external data sources.
🛠️ System Components1. MCP Inspector (The Manager)The MCP Inspector acts as the central command center for all connected capabilities.
2. External Server ConfigurationThis section allows for the manual management of server connections to DashBot.
3. Resource & Tool ManagementCentralized interface to manage the specific assets the AI can utilize.
⌨️ Interaction & CommandsInteraction with the MCP layer is handled through a slash-command interface within the chat.
🚀 Workflow Summary
🛠️ Implementation Plan: API Dash MCP IntegrationBuilding a high-performance Model Context Protocol (MCP) Host within API Dash. This implementation leverages the 🏗️ 1. Top-Down Architectural BreakdownFollowing a Top-Down approach, deconstructing the MCP specification into manageable layers to ensure a modular and scalable system. 🔵 Layer 1: The UI & Application State (Flutter/Dart)
🟡 Layer 2: The Logic Engine (
|
| Feature | mcp_dart (Native) |
TypeScript (Node.js) |
|---|---|---|
| Distribution | Compiles to a single, self-contained binary. | Requires Node.js runtime and node_modules on the user's machine. |
| Performance | AOT (Ahead-of-Time) compilation for zero-latency execution. | JIT execution; higher memory and CPU overhead. |
| DX (Debug Mode) | Can run in single command debug protocol logic via flutter run [platform]. |
Requires npm run dev / build and Flutter run [platform]. |
| Portability | Perfect for desktop/mobile apps where a small footprint is critical. | High "dependency hell" risk for non-web environments. |
🧪 3. Quality Assurance & Refactoring
To ensure the code is GSoC-ready and stable for production, we will transition from "vibe-coded" prototypes to a hardened architecture through:
- Unit Testing: Validating individual logic blocks, such as JSON-RPC serialization and MCP capability negotiation, using the
test. - Integration Testing: Using
flutter testto simulate the full user flow:- User types
/fetch_data→ UI triggers MCP Tool → Server returns JSON → UI renders response.
- User types
- Refactoring: Applying SOLID principles to ensure the MCP client logic is decoupled from the UI, making it easy to maintain and extend in future versions of API Dash.
🌐 4. Unlocking the Ecosystem
Implementing this component transforms API Dash into a Centralized AI Hub. It allows for seamless connectivity with:
- Gemini CLI: Use local AI models to automate API testing or data extraction.
- VS Code Integration: Sync context between IDE and API testing environment.
- External AI Tools: Instantly support any tool built for Claude, ChatGPT, or other MCP-compliant platforms.
Beta Was this translation helpful? Give feedback.
-
|
Hi everyone, @animator 👋 I spent some time thinking about how a CLI interface for API Dash and MCP server integration could be designed, and I wanted to share a few ideas. The main goal seems to be making API Dash usable directly from the terminal while also allowing it to integrate with AI agent environments through MCP (Model Context Protocol). This would make API Dash useful not only as a GUI application but also as a developer-friendly automation tool. One approach would be to design a lightweight CLI wrapper around the core API Dash functionality. Since API Dash is built with Dart/Flutter, the CLI could be implemented using Dart so it can reuse the same request models, collections, and API handling logic already present in the codebase. The CLI could expose commands that mirror the main capabilities of API Dash. For example, users could run commands to send API requests, run saved collections, test endpoints, or inspect responses directly from the terminal. A possible command structure might look like: apidash request send --method GET --url https://api.example.com/users This would allow developers to use API Dash in scripts, CI pipelines, and automation workflows, similar to tools like curl or Postman CLI. For the second part of the project, exposing API Dash as an MCP server could make it accessible to AI agents and development environments that support MCP. In this setup, API Dash would act as a tool provider that agents can call when they need to perform API requests or inspect endpoints. The MCP server could expose capabilities such as:
This would allow agent tools in environments like VS Code or other AI-assisted IDEs to call API Dash programmatically. A possible architecture could include a CLI layer, an API Dash core logic layer, and an MCP adapter layer. The CLI would translate terminal commands into calls to the API Dash core. The MCP adapter would expose similar capabilities through the MCP protocol so that external agents can interact with it. A typical workflow might look like this: a developer runs a command in the terminal to test an API endpoint, the CLI sends the request using API Dash’s internal request engine, and the response is displayed in a formatted output. Alternatively, an AI agent could call the MCP interface to trigger the same request automatically. Some potential enhancements could include support for environment variables, collection execution, response formatting, and CI-friendly output modes. Over time, the CLI could also support features like automated API testing or scripting workflows. I would be interested in starting with a minimal CLI prototype that can send API requests using API Dash’s core logic, and then extending it with additional commands and MCP server support. Looking forward to feedback and suggestions on this approach. |
Beta Was this translation helpful? Give feedback.
-
|
Hi @animator and @ashitaprasad, I've gone through Ashita's article on MCP Apps carefully. I see a compelling angle for Project 6: beyond just returning plain text from the MCP server, API Dash could leverage MCP Apps to render rich interactive response UIs directly inside hosts like VS Code and Claude Desktop. So when an agent calls execute_request, it gets back a sandboxed HTML dashboard showing the response status, headers, and body, rather than raw JSON. I'm exploring this direction for my idea doc. Would love to know if this aligns with what you had in mind. |
Beta Was this translation helpful? Give feedback.
-
|
Hello , Are there somethings were said as preferred in this project in the previous meetings? this will help me to consider them in my plan to implement it . Thanks a lot |
Beta Was this translation helpful? Give feedback.
-
|
Hi @animator , I’m planning to work on the CLI and MCP server integration for API Dash, and I wanted to clarify a few points so I can align my implementation with project expectations. 1. MCP Server Scope
2. CLI Features
3. Authorization / API Key
4. Async / Real-Time Behavior
5. CLI Design Preferences
6. Contribution Guidelines
|
Beta Was this translation helpful? Give feedback.
-
|
Hi @animator I've been reading through the codebase while preparing my GSoC 2026 proposal for this idea. I noticed that the networking layer was moved out of Two questions before I finalize the design:
I've drafted the full architecture and 12-week timeline happy to share the proposal doc for early feedback. |
Beta Was this translation helpful? Give feedback.
-
|
Hi @animator, I've built a working prototype for Project #6 (CLI & MCP Support). What I've Built:
Architecture: MCP Apps Integration: Prototype: https://github.com/Devaprakash47/apidash-cli-mcp-prototype.git Questions:
Looking forward to feedback! |
Beta Was this translation helpful? Give feedback.
-
|
Hi @animator and the API Dash team! 👋 I'm Saurabh Kumar Bajpai, a final-year B.Tech Biotechnology student at Amity University and an AI Engineer Intern at Akoode Technologies. I have formally submitted my GSoC 2026 proposal for Project Idea #6 — CLI & MCP Server. 🎯 Proposal SummaryMy proposal introduces two major architectural additions:
🔗 My Contributions
🛠️ Tech Stack
I would love any feedback on the architectural decoupling strategy, particularly around the Hive advisory file-locking mechanism. Happy to jump on a call or answer questions here! Thank you for the amazing project 🙏 |
Beta Was this translation helpful? Give feedback.
-
|
Hi @animator — I've submitted 3 PRs as part of my GSoC Idea #6 research: |
Beta Was this translation helpful? Give feedback.

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
This project focuses on creating a CLI tool to run API Dash via terminal. Contributors will design and implement command-line interfaces that expose core capabilities of API Dash that help in API testing. Also, your task is to expose API Dash as a MCP Server so that it can be run via any Agent interface (like VS Code, AI Apps, etc.) that supports MCP.
Also, go through this resource to study if MCP Apps can be served via API Dash MCP server.
Tech Stack: Anything for CLI, Dart/Flutter for API Dash codebase
Please feel free to discuss your ideas/research below.
Beta Was this translation helpful? Give feedback.
All reactions