You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Quick Start for New Sessions
Before starting any work, read these files in order:
pair_programming.md - Our workflow process for story-driven development
project_plan_{some_extension}.md - Current progress and next story to work on
technical_considerations.md - Lessons learned and implementation decisions
mcp-browser-architecture.md - Overall architecture and design decisions
For color migration work, also read:
5. color_migration_analysis_report.md - Comprehensive color audit and semantic mapping guide
Key workflow reminders:
Always use the TodoWrite tool to track story progress
Follow the exact human verification format from pair_programming.md
Never run pnpm tauri dev - human handles manual testing
Update technical_considerations.md with lessons learned after each story
Overview
Protocollie is a desktop application built with Tauri 2.0 and React/TypeScript that serves as a comprehensive testing and exploration tool for Model Context Protocol (MCP) servers. It functions similarly to Postman for APIs, allowing developers to connect to multiple MCP servers, explore their capabilities, and test their functionality in real-time.
Development Commands
Frontend Development
pnpm dev - Start development server (runs Vite dev server)
pnpm build - Build the React frontend for production
pnpm preview - Preview production build
Tauri Development
pnpm tauri build - Build the complete desktop application
pnpm tauri build --no-bundle - Build without bundling (faster, good for testing compilation)
pnpm tauri - Access Tauri CLI commands
Note: Do NOT run pnpm tauri dev in automated workflows - human handles manual testing
Package Management
Uses pnpm as the package manager (not npm or yarn)
Implementation Status: ✅ Complete - Direct process management, universal command support, enhanced error messaging, JSON-RPC protocol, process lifecycle management, and tool execution all working.
Project Structure Overview
See mcp-browser-architecture.md for detailed component organization. Key locations:
src/ - React frontend with components, hooks, types
src-tauri/src/ - Rust backend with database, MCP process management, and Tauri commands
Documentation files in root directory
MCP Integration Context
This application is specifically designed for MCP (Model Context Protocol) server testing and exploration. The app provides a Postman-like interface for MCP server development and testing with dynamic server connection management, tool execution, and request/response history.
Theme System Notes
IMPORTANT: This app uses a custom theme system, NOT Tailwind's default dark mode.
Key Points for Theme-Aware Components:
Use useTheme() hook: const { resolvedTheme } = useTheme()
Never use dark: prefixes - they don't work with our .light class system
Create conditional styling based on resolvedTheme === 'light' vs 'dark'
See mcp-browser-architecture.md for detailed theme implementation patterns
Common Theme Issues Fixed:
Selection highlighting unreadable in light mode → Use theme-conditional colors
Code/kbd elements unreadable in dark mode → Use theme-aware backgrounds
Badge components using incompatible dark: prefixes → Remove and use theme-neutral colors
Protocollie is a desktop application built with Tauri 2.0 that serves as a comprehensive testing and exploration tool for Model Context Protocol servers. Similar to Postman for APIs, it allows developers to connect to multiple MCP servers, explore their capabilities, and test their functionality in real-time.
Target Users
Protocollie is designed for MCP server developers, AI/LLM integration engineers, and technical product managers who need to rapidly prototype, test, and debug MCP implementations. Just as early Postman users were API developers tired of using curl commands, Protocollie serves developers building AI-powered tools who need a professional interface to understand what MCP servers expose, test tool calls with complex arguments, and validate responses before integrating them into production applications.
Core Architecture
Technology Stack
Frontend: React/TypeScript with Tailwind CSS
Backend: Rust with Tauri 2.0
MCP Integration: Direct system Node.js processes with JSON-RPC protocol
Node.js Runtime: System Node.js (users have Node.js installed as MCP developers)
Data Storage: Hybrid approach (SQLite + in-memory + JSON)
IPC: Tauri's command system + direct process stdin/stdout communication
Architecture Decision Rationale
We chose to use direct system Node.js processes instead of bundled sidecars or Rust MCP implementations for several key reasons:
Target Audience Alignment: MCP developers already have Node.js installed for most MCP servers (npx, npm packages)
Simplified Architecture: Direct process spawning is simpler than complex sidecar coordination and bundling
Universal Command Support: Works with any MCP server type - npx, python, ruby, custom binaries
Real-world Usage: Matches how developers actually run MCP servers in development and production
Enhanced Error Messaging: Can provide specific guidance for missing dependencies with installation instructions
Error Display: Unified theme-neutral error colors for both light/dark modes
CSS Coverage: Enhanced gray class overrides for broader theme compatibility
Appendix: What is MCP?
The Model Context Protocol (MCP) is an open protocol that standardizes how applications provide context to Large Language Models (LLMs). Think of MCP like a USB-C port for AI applications - just as USB-C provides a standardized way to connect devices to various peripherals, MCP provides a standardized way to connect AI models to different data sources and tools.
Key MCP Concepts:
MCP Servers are lightweight programs that expose specific capabilities (tools, prompts, and resources) through the protocol. For example, a Git MCP server might expose tools like git_status, git_commit, and git_diff that an LLM can call.
MCP Clients are applications (like Claude Desktop or IDEs) that connect to MCP servers to access their capabilities. They maintain 1:1 connections with servers.
Core Primitives:
Resources: Data and content that servers expose (files, documents, live data)
Tools: Functions that LLMs can execute through the server (API calls, system commands, calculations)
Prompts: Reusable prompt templates and workflows
Sampling: Allows servers to request LLM completions
Transport Layers: MCP supports multiple transport mechanisms:
stdio: Communication through standard input/output (for local processes)
SSE (Server-Sent Events): For HTTP-based connections
WebSocket: For bidirectional streaming (planned)
The protocol enables LLMs to interact with external systems in a controlled, secure way while maintaining clear boundaries between the AI model and the tools/data it accesses. This standardization means developers can write MCP servers once and have them work with any MCP-compatible client, similar to how REST APIs work with any HTTP client.
This document outlines our pair programming workflow for building Protocollie. It ensures consistent process, proper testing, and knowledge capture as we work through the project plan.
Story Workflow Process
1. Story Selection & Planning
Claude's Actions:
Pick up the next ⏳ Pending story from the project_plan markdown file
Review the story's acceptance criteria and testing requirements
Create a brief implementation plan (2-3 bullet points)
Confirm plan with human before proceeding
2. Implementation Preparation
Claude's Actions:
After brief plan is approved by human, create a comprehensive implementation plan
Build a detailed todo list for the story implementation using TodoWrite tool
Review CLAUDE.md for project-specific commands and architecture notes
Update todo list to mark story as "in_progress"
Read any relevant existing files to understand current state
3. Implementation
Claude's Actions:
Implement the story following acceptance criteria
Write clean, well-structured code following established patterns
Use proper error handling where needed
4. Testing & Verification
Claude's Actions:
Run specified tests from the story (unit/integration/manual)
Execute build commands to verify no compilation errors:
Phase 2 transforms Protocollie from a functional MVP into a polished professional development tool. The focus is on enhanced tool execution UX, professional UI/UX design, and developer experience improvements that make it competitive with tools like Postman.
✅ Manual: Tool search and filtering work correctly
✅ Manual: Categories and tags help organization
✅ Manual: Recently used tools update appropriately
Phase 2c: Developer Experience Enhancements
Story 2.11: Code Editor Integration
Status: ✅ Completed
As a developer, I want code editor features so that I can efficiently input complex parameters.
Acceptance Criteria:
✅ Integrate Monaco Editor or CodeMirror for parameter input
✅ JSON schema validation with inline errors
✅ Auto-completion for parameter names and values
✅ Syntax highlighting for JSON input
✅ Format and validate JSON button
Implementation Notes:
Selected Monaco Editor for superior TypeScript support and JSON schema integration
Created CodeEditor component in design system with automatic theme switching
Replaced JsonParameterInput component with enhanced Monaco-based editor
JSON schema generation from MCP ToolParameter definitions for real-time validation
Toolbar with Format JSON, Use Example, and Preview functionality
Testing:
✅ Manual: Code editor provides good developer experience
✅ Manual: JSON validation works correctly
✅ Manual: Auto-completion helps with parameter input
Story 2.12: Response Viewer Enhancement
Status: ✅ Completed
As a developer, I want powerful response viewing so that I can analyze tool outputs.
Acceptance Criteria:
✅ Tabbed view for different response formats (Raw, Formatted, Headers)
✅ JSON path search and navigation
✅ Response size and performance metrics
✅ Download/save response functionality
✅ Response comparison between executions
Implementation Notes:
Created EnhancedResponseViewer component with tabbed interface (Formatted, Raw, Metadata, JSON Path, Compare)
JSON path search with dot notation and array indexing (e.g., data.users[0].name)
Download functionality supporting JSON, Text, and CSV formats for array responses
Response comparison system with side-by-side viewing and statistics
Performance metrics display (execution time, response size, success rates)
Integration with existing template saving functionality
Replaced simple response display with comprehensive analysis tool
Testing:
✅ Manual: Response viewer handles different content types
✅ Manual: JSON navigation works for complex responses
✅ Manual: Performance metrics are accurate
Story 2.13: Environment Variable Management
Status: 🔄 Moved to Phase 5 (Advanced Testing & Automation)
As a developer, I want environment management so that I can test tools in different contexts.
Note: This story has been moved to Phase 5 as it's more aligned with advanced testing and automation features, along with workspace management functionality.
Story 2.14: Performance Monitoring
Status: 🔄 Moved to Phase 5 (Advanced Testing & Automation)
As a developer, I want performance insights so that I can optimize tool usage.
Note: This story has been moved to Phase 5 as it's more aligned with advanced monitoring and testing features.
Phase 2d: Advanced Functionality
Status: 🔄 All stories moved to Phase 5 (Advanced Testing & Automation)
Note: All Phase 2d stories (2.16-2.20) have been moved to Phase 5 as they are more aligned with advanced testing, automation, and extensibility features rather than core professional development tool functionality.
Stories moved to Phase 5:
Story 2.16: Request Chaining
Story 2.17: Mock and Test Data Management
Story 2.18: API Documentation Generation
Story 2.19: Integration Testing Framework
Story 2.20: Plugin System Foundation
Phase 2e: Visual Polish and Branding
Story 2.21: Professional Branding
Status: ✅ Completed
As a user, I want professional branding so that the tool feels trustworthy and polished.
Acceptance Criteria:
✅ Professional logo and brand identity
✅ Consistent brand colors and typography
✅ Loading screens and animations
✅ About page with product information
⚠️ Marketing materials and screenshots (deferred)
Implementation Notes:
Created ProtocollieLogo component with multiple size variants and flexible branding options
Enhanced design system tokens with brand colors, professional typography hierarchy, and animation states
Added LoadingScreen, LoadingSpinner, LoadingDots, and SkeletonLoader components for professional loading states
Implemented AboutModal with comprehensive product information, feature highlights, and system details
Enhanced Modal component with smooth entrance/exit animations using scale and fade transitions
Updated Header component to use the new professional logo system
All components follow consistent brand identity with blue-to-purple gradient theme
Testing:
✅ Manual: Branding is consistent across all screens
✅ Manual: Animations enhance rather than distract
✅ Visual test: Brand identity is professional and memorable
Story 2.22: Onboarding and Help System
Status: ✅ Completed
As a new user, I want guided onboarding so that I can quickly understand the tool.
Acceptance Criteria:
✅ Welcome tour for new users
✅ Interactive tutorials for key features
✅ Contextual help and tooltips
✅ Documentation integration
⚠️ Video tutorials and examples (deferred - comprehensive text-based help implemented)
Implementation Notes:
Created custom WelcomeTour component with smart positioning architecture for large/small elements
Implemented contextual help system with Tooltip and HelpIcon components
Built comprehensive HelpModal with organized documentation, keyboard shortcuts, and troubleshooting guides
Added keyboard shortcuts system supporting global shortcuts (?, Ctrl+D, Ctrl+N, Ctrl+K, Ctrl+Enter)
Integrated first-time user detection with localStorage persistence and tour management
Enhanced server configuration forms with contextual help icons
Architectural Innovation: Dual positioning strategy solves tour positioning for large elements
Testing:
✅ Manual: Onboarding guides users effectively through 7-step tour
✅ Manual: Help system provides relevant information with contextual tooltips
✅ Manual: Keyboard shortcuts work globally without interfering with form input
✅ User test: Tour automatically launches for new users and can be restarted from help modal
Story 2.23: Accessibility Enhancements
Status: ✅ Completed
As a user with disabilities, I want accessible interfaces so that I can use the tool effectively.
Acceptance Criteria:
✅ Full keyboard navigation support with arrow keys, Enter, Escape, and Tab
✅ Screen reader compatibility with comprehensive ARIA labels, roles, and descriptions
✅ High contrast mode support with enhanced color accessibility
✅ Focus indicators and ARIA labels throughout all interactive elements
✅ Accessibility testing and compliance with WCAG guidelines
Solution: Added comprehensive width constraints (w-full, minWidth: 0) at all container hierarchy levels
Window Startup Size: Increased default window from 800x600 to 1400x900
Ensures three-panel layout is properly visible on startup
Added minimum constraints (1000x700) for optimal usability
These fixes significantly improve the developer experience and form the foundation for the remaining Phase 2a stories.
Progress Tracking
Phase 2.0 (Layout Foundation): 6/6 stories completed
Phase 2a (Enhanced Tool Execution): 4/4 stories completed (+ critical UI fixes completed, Story 2.5 moved to Phase 5)
Phase 2b (Professional UI/UX): 5/5 stories completed Phase 2c (Developer Experience): 2/2 stories completed (Stories 2.13 & 2.14 moved to Phase 5)
Phase 2d (Advanced Functionality): All 5 stories moved to Phase 5
Phase 2e (Visual Polish): 5/5 stories completed (Story 2.25 moved to Phase 3, Story 2.26 added for help modal improvements)
Overall Phase 2: 22/22 stories completed (100%) + critical UI infrastructure fixes (8 stories moved to Phase 5, 1 story moved to Phase 3)
Estimated Timeline: 6-8 weeks with dedicated development
Success Metrics
Phase 2 completion will be measured by:
User Experience: Tool feels professional and competitive with Postman
Developer Productivity: Common MCP testing workflows are efficient
Visual Design: Interface is polished and branded appropriately
Performance: Tool remains responsive with complex operations
Accessibility: Tool is usable by developers with different abilities
Extensibility: Plugin system enables customization and community contributions
Phase 2 transforms Protocollie from a functional MVP into a professional development tool that MCP developers actively choose over alternatives.
Known Issues & Bugs
Bug 2.B1: Server Connection UI State Sync Issue
Priority: Medium
Description: When clicking on a disconnected server in the left panel, the main content shows "Server not connected" message. When clicking the "Connect" button and the server successfully connects, the UI doesn't refresh to show the connected state and tool list.
Expected Behavior: After successful connection, the main content should automatically refresh to show the server's tools and update the left panel to reflect the connected state.
Impact: Users must manually refresh or click elsewhere to see the connected server's tools, breaking the expected workflow.
Bug 2.B2: Quick Access Panel Auto-Update Missing
Priority: Medium Description: When executing tools on a connected server, the Quick Access panel (recent tools, favorites) doesn't automatically update to reflect the new execution.
Expected Behavior: The Quick Access panel should immediately update to show:
Recently used tools list with the newly executed tool at the top
Updated usage counts and last-used timestamps
Real-time synchronization with tool execution activity
Impact: Developers don't see their recent activity reflected in the Quick Access panel until they manually refresh or restart the application, reducing the panel's utility for workflow acceleration.
Bug 2.B3: Adding new server disconnects existing servers
Priority: High
Description: When adding a new MCP server while there are existing connected servers, all previously connected servers get disconnected.
Expected Behavior: Adding a new server should not affect the connection status of existing servers.
Impact: Disruptive to workflow when managing multiple servers simultaneously. Forces users to reconnect all servers after adding a new one.
Note: These bugs will be addressed in a future maintenance sprint once the core Phase 2 features are complete.
This directory contains technical decisions, lessons learned, and implementation notes for Protocollie. Each document focuses on a specific aspect of the project to keep information focused and accessible.
Hi @swerner ! Super excellent writing and post. Thank you for making this tool and your description of how you built the tool.
I'm trying to implement a similar pattern in my coding practice, but struggling a bit with having Claude read these documents at the beginning of every session. In my situation, Claude will read the CLAUDE.md file, and even though it explicitly yells "READ ALL THESE DAMN FILES, CLAUDE", it still passes them and just acknowledges that they exist. How did you solve this? Or did you not run into it?
[Me] I've just started the chat, and I'd like to make sure that my startup prompts and contextualization is working correctly. Without consuming more documents or information, what
context are you aware of with this project?
[Claude]
I can see there's a modular docs system with files like:
- CLAUDE.md (entry point - which I just reviewed)
- docs/llm-pair-programming.md (how we work together)
- docs/stories.md (current work/priorities)
- docs/walt-architecture.md (system design)
- docs/mtp-sdk-reference.md (SDK integration)
- docs/technical-decisions.md (lessons learned)
Is this the level of context you expected? Would you like me to proceed with reading the required documentation files now?
[Me] Why didn't you read the documents yet?
[Claude] You're absolutely right - I should have! The CLAUDE.md explicitly says to read the required documents IMMEDIATELY at session start, before responding to any queries.
Thanks @bittelc - I haven't had any trouble getting it to read the files, but my starting prompt is usually some variation of "Hey Claude! New session time! Check out CLAUDE.md and follow the steps for new session quick start and let me know the plan for the next story"
Hi @swerner can I add those into https://github.com/kiliczsh/claude-cmd ?