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

etasx-mcp

v0.2.2

Published

User-facing MCP server for eTasx that connects Codex, Claude Code, and other MCP clients to scoped work item and QA data.

Readme

eTasx MCP

MCP server that connects AI coding assistants to your eTasx project management data. Read and update issues, run QA workflows, search work items, and more — all scoped to your personal access token.

Prerequisites

  • Node.js 20 or later
  • An eTasx account with membership in the target organization
  • A Personal Access Token (PAT) created from the eTasx web app under Settings > AI Integrations

Environment Variables

| Variable | Required | Default | Description | |---|---|---|---| | ETASX_PERSONAL_ACCESS_TOKEN | Yes | — | Your PAT from eTasx | | ETASX_BASE_URL | No | http://localhost:3333 | eTasx API URL | | ETASX_CLIENT_NAME | No | eTasx MCP | Label shown in agent action logs |

Installation

Claude Code

Option A — CLI

claude mcp add --transport stdio etasx \
  --env ETASX_BASE_URL=https://your-etasx.example.com \
  --env ETASX_PERSONAL_ACCESS_TOKEN=<paste-pat> \
  --env ETASX_CLIENT_NAME="Claude Code" \
  -- npx etasx-mcp

Option B — JSON config (~/.claude/mcp.json or .claude/mcp.json in your project)

{
  "mcpServers": {
    "etasx": {
      "command": "npx",
      "args": ["etasx-mcp"],
      "env": {
        "ETASX_BASE_URL": "https://your-etasx.example.com",
        "ETASX_PERSONAL_ACCESS_TOKEN": "<paste-pat>",
        "ETASX_CLIENT_NAME": "Claude Code"
      }
    }
  }
}

Codex

Add to your codex.toml or ~/.codex/config.toml:

[mcp_servers.etasx]
command = "npx"
args = ["etasx-mcp"]
env = { ETASX_BASE_URL = "https://your-etasx.example.com", ETASX_PERSONAL_ACCESS_TOKEN = "<paste-pat>", ETASX_CLIENT_NAME = "Codex" }

Cursor

Add to .cursor/mcp.json in your project root (or ~/.cursor/mcp.json for global):

{
  "mcpServers": {
    "etasx": {
      "command": "npx",
      "args": ["etasx-mcp"],
      "env": {
        "ETASX_BASE_URL": "https://your-etasx.example.com",
        "ETASX_PERSONAL_ACCESS_TOKEN": "<paste-pat>",
        "ETASX_CLIENT_NAME": "Cursor"
      }
    }
  }
}

GitHub Copilot

Add to .vscode/mcp.json in your project root:

{
  "inputs": [
    {
      "id": "etasx-pat",
      "type": "promptString",
      "description": "eTasx Personal Access Token",
      "password": true
    }
  ],
  "servers": {
    "etasx": {
      "command": "npx",
      "args": ["etasx-mcp"],
      "env": {
        "ETASX_BASE_URL": "https://your-etasx.example.com",
        "ETASX_PERSONAL_ACCESS_TOKEN": "${input:etasx-pat}",
        "ETASX_CLIENT_NAME": "GitHub Copilot"
      }
    }
  }
}

Gemini CLI

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "etasx": {
      "command": "npx",
      "args": ["etasx-mcp"],
      "env": {
        "ETASX_BASE_URL": "https://your-etasx.example.com",
        "ETASX_PERSONAL_ACCESS_TOKEN": "<paste-pat>",
        "ETASX_CLIENT_NAME": "Gemini CLI"
      }
    }
  }
}

What You Can Do

Read Tools

| Tool | Description | |---|---| | who_am_i | Get your user and organization context | | list_my_projects | List projects you have access to | | list_my_work_items | List work assigned to you | | search_work_items | Search issues with eTasx QL and filters | | get_work_item | Read one issue by ID or key | | get_project_summary | Compact project summary with work and QA context | | list_saved_filters | List your saved filters | | run_saved_filter | Run a saved filter | | get_catalog | Resolve valid projects, issue types, workflow states, labels, people, saved filters, and QA modules | | list_notifications | List your notifications | | get_issue_qa_status | QA status and metrics for one issue | | get_project_qa_metrics | QA metrics for a project | | list_run_sets | List QA run sets | | get_run_set | Read one run set | | list_test_cases | List test cases globally or for an issue | | get_test_case | Read one test case | | list_executions | List executions by test case, issue, or run set |

Write Tools

| Tool | Description | |---|---| | create_issue | Create a work item | | update_issue_fields | Update issue fields | | transition_issue | Move an issue to a workflow state | | add_issue_comment | Add a comment to an issue | | create_test_cases | Create one or more test cases | | clone_test_case | Clone an existing test case | | create_run_set | Create a QA run set | | update_run_set | Update a QA run set | | record_test_execution | Record a completed execution | | update_test_execution | Update an execution you own | | upload_execution_evidence | Upload a local file as execution evidence | | generate_qa_report | Generate a QA report |

Prompt Workflows

| Prompt | Description | |---|---| | triage-my-work | Review your assigned work and notifications | | project-brief | Concise project summary | | ticket-intake | Turn a ticket into structured intake notes | | implement-ticket | Implementation-ready context for a coding agent | | qa-from-ticket | QA coverage guidance and test case creation | | release-readiness | Assess QA status for a release | | bug-investigation | Investigate a bug using issue and QA context | | standup-digest | Daily standup digest from your work and notifications |

Resources

| Resource | Description | |---|---| | etasx://schemas/creation | Creation defaults and catalog dependencies for write tools | | etasx://catalog/projects | Project catalog | | etasx://catalog/issue-types | Issue type catalog | | etasx://catalog/workflow-states | Workflow state catalog | | etasx://catalog/labels | Label catalog | | etasx://catalog/people | People catalog | | etasx://catalog/saved-filters | Saved filter catalog | | etasx://catalog/qa-modules/{projectId} | QA modules for a project |

Recommended Token Scopes

| Use Case | Scopes | |---|---| | Read-only project browsing | workitems:read, catalogs:read | | Commenting and status updates | workitems:read, workitems:write, comments:write, catalogs:read | | QA workflows | qa:read, qa:write, reports:read, attachments:write | | Inbox-aware assistant | notifications:read |

Troubleshooting

Authentication fails

  • Verify the PAT was copied correctly and is not expired or revoked
  • Check that ETASX_BASE_URL points to the correct environment

Data is missing

  • Confirm your user belongs to the correct organization
  • Confirm the PAT was created for that organization
  • Check the token includes the scopes needed for the tools you are using

Workflow state updates fail

  • Use get_catalog with catalog: "workflow_states" to resolve valid state IDs — do not guess

QA calls fail for some projects

  • Verify project membership and that the token includes qa:read or qa:write

License

MIT