Skip to content

Portkey-AI/hoot

Repository files navigation

🦉 Hoot

npm version npm downloads License: MIT Node.js Version

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.

Hoot.-.Nov.12.mp4

⚠️ 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.

npx-hoot

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

Does Hoot work with all MCP servers?

Yes! Hoot supports both HTTP and SSE transports, OAuth 2.1, and API key authentication. We auto-detect server configurations to make connection as seamless as possible.

Is my data secure?

Yes. Hoot runs entirely on your local machine. OAuth tokens are stored in a local SQLite database (~/.hoot/hoot-mcp.db), and all communication happens over localhost. No data is sent to external servers.

Can I use Hoot in production?

Hoot is designed for development and testing. For production deployments, you can deploy Hoot to Cloudflare Workers for your team. See our deployment guide.

How do I test servers that require OAuth?

Just add the server URL. Hoot automatically detects OAuth requirements and guides you through the authorization flow. Tokens are stored securely and refreshed automatically.

Can I test multiple servers at once?

Absolutely! Connect to as many servers as you need. Hoot manages all connections simultaneously and lets you switch between them instantly.

Does Hoot support resources and prompts?

Not yet, but they're coming soon! Currently, Hoot focuses on tool testing. Resources and prompts are on our roadmap.

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! 🦉