npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@houndly/mcp-server

v1.3.0

Published

Houndly MCP Server - Model Context Protocol server for test management

Readme

🐕 Houndly MCP Server

Model Context Protocol server for the Houndly test management platform

Connect Claude Code, Claude Desktop, Cursor or any MCP-compatible assistant to your Houndly workspace: list projects, write test cases, open bugs and create runs by asking for them.

📦 Installation

Nothing to clone or build — the server runs from npm.

Claude Code

claude mcp add houndly \
  --env HOUNDLY_API_URL=https://your-workspace.moraylab.ai \
  --env HOUNDLY_API_KEY=hnd_your_api_key \
  -- npx -y @houndly/mcp-server

The address is the one you log in through. It names your workspace, so there is nothing else to configure.

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows:

{
  "mcpServers": {
    "houndly": {
      "command": "npx",
      "args": ["-y", "@houndly/mcp-server"],
      "env": {
        "HOUNDLY_API_URL": "https://your-workspace.moraylab.ai",
        "HOUNDLY_API_KEY": "hnd_your_api_key"
      }
    }
  }
}

Cursor

The same object, in .cursor/mcp.json.

Restart the client afterwards — MCP servers are read at startup, so an open session keeps the old settings.

⚙️ The two values

| Variable | What it is | Where to find it | |---|---|---| | HOUNDLY_API_URL | Your workspace address | The one in your browser bar when you use Houndly | | HOUNDLY_API_KEY | API key, starts with hnd_ | Houndly → Integrations |

The workspace is read from the address — https://acme.moraylab.ai is workspace acme — so there is no second value to keep in sync.

HOUNDLY_SUBDOMAIN still exists for the case where the address cannot name a workspace: pointing straight at a backend host, or at localhost in development. Set it there, and it wins over whatever the address implies.

🔐 Authentication

The server authenticates with a personal Houndly API key — one that belongs to you, not to the workspace:

  • It acts with your own role. A VIEWER's key can only read.
  • Revoking it stops that key and nothing else. Nobody else's reporters or MCP clients are affected.
  • It is shown once, when you create it. Lost it? Revoke and make another.

Create one in Houndly → Integrations → Personal API keys.

🛠️ Available tools

| Area | Tools | |---|---| | Projects | list_projects, get_project, create_project, update_project, delete_project | | Suites | list_test_suites, get_test_suite, create_test_suite, update_test_suite, delete_test_suite | | Cases | list_test_cases, get_test_case, create_test_case, update_test_case, delete_test_case | | Runs | list_test_runs, get_test_run, create_test_run, update_test_run, delete_test_run | | Bugs | list_bugs, get_bug, create_bug, update_bug, delete_bug | | Executing | record_test_run_result, add_test_run_result_attachment, upload_test_evidence, set_test_run_case_notes |

▶️ Recording what a run found

record_test_run_result writes the outcome of one case inside a run — the thing that used to exist only in the UI. It appends: earlier executions stay in the history, the latest one is what counts, and the run's stats come back with the reply so you can watch them move.

record_test_run_result          testRunId, testCaseId, result, comment, durationMs, attachments
upload_test_evidence            filePath → { url, fileName, fileSize, type }
add_test_run_result_attachment  resultId, attachments   — evidence that arrived late
set_test_run_case_notes         testRunId, testCaseId, notes — independent of any execution

Two things worth knowing:

  • The executor is the owner of the API key. There is no field for claiming someone else ran it, which is what makes the history worth reading.
  • A run has to be started. Recording against a PENDING run is refused by the API; start the run first.

💡 Ask for it in words

List all my Houndly projects
Create a project called "E-Commerce" with key "ECOM"
In project TP, write a test case for logging in with valid credentials
Show me every open bug in project XYZ
Create a run for project ABC covering the smoke suites

🐛 Troubleshooting

| Symptom | Cause | |---|---| | HOUNDLY_API_KEY environment variable is required | The key is missing from the client config — the env block is per server, not global | | 401 Unauthorized | Wrong key, or it was regenerated in Houndly since you copied it | | 403 Forbidden | The key is valid but the operation is not allowed for this workspace | | "Workspace not found" / empty results | The address names a different workspace than the key belongs to | | Cannot connect | Check the address — it should be exactly what you log in through, scheme included |

Claude Desktop logs its MCP servers to ~/Library/Logs/Claude/mcp*.log. In Claude Code, claude mcp list shows whether the server started.

🔧 Local development

From a checkout of the monorepo:

pnpm install
pnpm --filter @houndly/mcp-server run build   # or run watch

Point the client at node /absolute/path/to/packages/mcp-server/build/index.js instead of npx. Locally there is no workspace in the address, so set both HOUNDLY_API_URL=http://localhost:3001 and HOUNDLY_SUBDOMAIN.

Tests: pnpm --filter @houndly/mcp-server run test.

📚 Resources

📄 License

MIT


Built with ❤️ by the Houndly Team