PA

portkey-ai/hoot

Developer tools
22 stars 0 forks Quality 44 Trend 31

MCP Testing Tool — Like Postman, but for the Model Context Protocol.

Overview

— Like Postman, but for the Model Context Protocol. Test, debug, and explore MCP servers with a beautiful interface. No AI chat needed. https://github.com/user-attachments/assets/e3add38e-9636-4f40-99d8-f4a2b8f0f056 — Hoot is in active development. Found a bug? Open an issue. Want to contribute? PRs welcome! 👉 — Opens in your browser, ready to test. Opens on localhost:8009. One command, zero config. - — HTTP and SSE transport support - — Just paste a URL, Hoot figures out the rest - — Test tools with parameters and view responses - — Everything is clipboard-ready - with automatic discovery and compliance testing (docs) - — Secure local authentication - — Built-in security features - — Safe for local development

README

🦉 Hoot

MCP Testing Tool — Like Postman, but for the Model Context Protocol.

Test, debug, and explore MCP servers with a beautiful interface. No AI chat needed.

https://github.com/user-attachments/assets/e3add38e-9636-4f40-99d8-f4a2b8f0f056

⚠️ Beta Software — Hoot is in active development. Found a bug? Open an issue. Want to contribute? PRs welcome!

Quick Start

🌐 Try instantly (no install):

👉 hoot.run — Opens in your browser, ready to test.

Or run locally:

npx -y @portkey-ai/hoot

Opens on localhost:8009. One command, zero config.

Features

Core Testing

  • Connect to any MCP server — HTTP and SSE transport support
  • Auto-detection — Just paste a URL, Hoot figures out the rest
  • Execute tools — Test tools with parameters and view responses
  • Copy-paste friendly — Everything is clipboard-ready

Authentication & Security

  • OAuth 2.1 with automatic discovery and compliance testing (docs)
  • JWT-based sessions — Secure local authentication
  • Rate limiting & audit logs — Built-in security features
  • Localhost-only by default — Safe for local development

Smart Features

  • Intelligent tool filtering — Context-aware tool selection powered by AI
  • Chat interface — Test tools conversationally with LLM assistance
  • Keyboard shortcuts — Lightning-fast navigation (docs)
  • 8 beautiful themes — Light & dark modes for every preference (docs)

Sharing & Collaboration

  • 🦉 “Try in Hoot” links — Share servers with a single URL (docs)
  • Persistent state — Your servers and tools stay configured between sessions

How It Works

Hoot runs a Node.js backend that acts as the MCP client, eliminating CORS issues when connecting to MCP servers from your browser.

Browser (React) → Backend (Node.js/Express) → MCP Servers

Architecture highlights:

  • No CORS headaches — Backend handles all MCP connections
  • Persistent OAuth tokens — Stored securely in SQLite (~/.hoot/hoot-mcp.db)
  • Session-based auth — JWT tokens for secure frontend-backend communication
  • Edge-ready — Deploy to Cloudflare Workers for global hosting (guide)

Data Persistence

On hoot.run:

  • Server configs & tools — Saved in browser localStorage
  • OAuth tokens — Managed by the hosted backend
  • Chat history — Preserved in localStorage

On local (npx/npm):

  • Server configs & tools — Saved in browser localStorage
  • OAuth tokens — Stored in ~/.hoot/hoot-mcp.db (persists across npx runs)
  • Chat history — Preserved in localStorage

Your servers stay configured between sessions!

Development

Run from source:

git clone https://github.com/Portkey-AI/hoot
cd hoot
npm install
npm run dev:full
  • Backend runs on localhost:8008
  • Frontend runs on localhost:8009

Available scripts:

  • npm run dev:full — Run both frontend and backend
  • npm run backend — Backend only
  • npm run dev — Frontend only
  • npm run build — Build for npm distribution
  • npm run build:cloudflare — Build for Cloudflare Workers

Debugging

Hoot includes a client-side logger accessible from the browser console:

hootLogger.download()  // Download logs as JSON
hootLogger.clear()     // Clear logs

Backend logs are written to backend.log. See logging docs for details.

Documentation

📚 Full Documentation

Why Hoot?

Feature Hoot Manual curl/testing
OAuth 2.1 support ✅ Automatic discovery & flow ❌ Manual token management
Transport auto-detection ✅ HTTP/SSE auto-detected ❌ Manual configuration
Visual interface ✅ Beautiful UI ❌ Terminal only
Tool filtering ✅ AI-powered context-aware ❌ None
Session persistence ✅ Configs & tokens saved ❌ Reauth every time
Share configurations ✅ One-click “Try in Hoot” links ❌ Copy-paste configs

FAQ

Roadmap

We’re working towards full MCP specification support. Coming soon:

  • Resources — MCP resource listing and reading
  • Prompts — MCP prompt testing and execution
  • Electron desktop app — Native app with stdio transport support
  • Collaborative workspaces — Share server configs with teams

Want to contribute? Check out CONTRIBUTING.md or open an issue with feature requests!

Technology Stack

  • Frontend — React 19, TypeScript, Vite, Zustand
  • Backend — Node.js, Express, MCP SDK
  • Database — SQLite (better-sqlite3)
  • Deployment — npm, Cloudflare Workers + Durable Objects
  • AI — Workers AI for semantic tool filtering

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Ways to contribute:

  • 🐛 Report bugs and issues
  • 💡 Suggest new features
  • 📝 Improve documentation
  • 🔧 Submit pull requests

License

MIT License — see LICENSE for details.


Built by Portkey — Making AI development easier, one tool at a time.

Made this because we were tired of curl-ing MCP servers. Hope it helps! 🦉

View the full README on GitHub

Install

npx -y @portkey-ai/hoot
New to MCP? Start with the mcpskill.org guide →