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.
Maintainers
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-mcpOption 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_URLpoints 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_catalogwithcatalog: "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:readorqa:write
License
MIT
