Skip to main content
Glama
edrich13

MCP Jira Server

by edrich13

MCP Jira Server for Self-Hosted Jira

A Model Context Protocol (MCP) server for interacting with self-hosted Jira instances using Personal Access Token (PAT) authentication.

Features

  • ✅ Personal Access Token authentication for self-hosted Jira

  • ✅ Create, read, update, and delete Jira issues

  • ✅ Search issues using JQL (Jira Query Language)

  • ✅ Add and view comments

  • ✅ Manage issue assignments

  • ✅ List projects and issue types

  • ✅ Transition issues between statuses

  • ✅ Get current user information

Related MCP server: Jira Cloud MCP Server

Prerequisites

How to Create a Personal Access Token in Self-Hosted Jira

  1. Log in to your Jira instance (e.g., https://jira.domain.com)

  2. Click on your profile icon in the top right corner

  3. Select "Profile" or "Account Settings"

  4. Navigate to "Personal Access Tokens" or "Security"

  5. Click "Create token"

  6. Give your token a name (e.g., "MCP Server")

  7. Set an expiration date (optional but recommended)

  8. Click "Create"

  9. Copy the token immediately - you won't be able to see it again!

Installation

Direct usage with npx:

npx mcp-jira-server

Or install globally:

npm install -g mcp-jira-server

Option 2: From Source

  1. Clone the repository:

git clone https://github.com/edrich13/mcp-jira-server.git
cd mcp-jira-server
  1. Install dependencies:

npm install
  1. Build the server:

npm run build

Configuration

For Claude Desktop

Add the following to your Claude Desktop configuration file:

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

Option 1: Using npx (Recommended)

{
  "mcpServers": {
    "jira": {
      "command": "npx",
      "args": ["-y", "mcp-jira-server"],
      "env": {
        "JIRA_BASE_URL": "https://jira.domain.com",
        "JIRA_PAT": "your-personal-access-token-here"
      }
    }
  }
}

Option 2: Using source build

{
  "mcpServers": {
    "jira": {
      "type": "stdio",
      "command": "node",
      "args": ["/Users/edrich.rocha/.nvm/versions/node/v22.6.0/bin/mcp-jira-server"],
      "env": {
        "JIRA_BASE_URL": "https://jira.domain.com",
        "JIRA_PAT": "your-personal-access-token-here"
      }
    }
  }
}

For VS Code with MCP

Create or update .vscode/mcp.json in your workspace:

Option 1: Using npx (Recommended)

{
  "servers": {
    "jira": {
      "command": "npx",
      "args": ["-y", "mcp-jira-server"],
      "env": {
        "JIRA_BASE_URL": "https://jira.domain.com",
        "JIRA_PAT": "your-personal-access-token-here"
      }
    }
  }
}

Option 2: Using source build

{
  "servers": {
    "jira": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-jira-server/build/index.js"],
      "env": {
        "JIRA_BASE_URL": "https://jira.domain.com",
        "JIRA_PAT": "your-personal-access-token-here"
      }
    }
  }
}

Environment Variables

  • JIRA_BASE_URL: The base URL of your self-hosted Jira instance (e.g., https://jira.domain.com)

  • JIRA_PAT: Your Personal Access Token

  • JIRA_USER_AGENT (optional): Custom User-Agent header for Jira instances behind reverse proxies (oauth2-proxy, nginx, etc.) that filter requests by User-Agent. If your API requests get redirected to SSO login despite valid PAT, your reverse proxy may require a specific User-Agent to bypass authentication for API clients.

Available Tools

1. jira_get_issue

Get details of a specific Jira issue by its key.

Parameters:

  • issueKey (string, required): The Jira issue key (e.g., "PROJ-123")

Example:

Get details for issue PROJ-123

2. jira_search_issues

Search for Jira issues using JQL (Jira Query Language).

Parameters:

  • jql (string, required): JQL query string

  • maxResults (number, optional): Maximum number of results (default: 50)

Example:

Search for all open issues in project PROJ assigned to me

Common JQL Examples:

  • project = PROJ AND status = Open

  • assignee = currentUser() AND status != Done

  • priority = High AND created >= -7d

  • reporter = john.doe AND status IN (Open, "In Progress")

3. jira_create_issue

Create a new Jira issue.

Parameters:

  • projectKey (string, required): Project key

  • summary (string, required): Issue title/summary

  • issueType (string, required): Issue type (e.g., "Bug", "Task", "Story")

  • description (string, optional): Detailed description

  • priority (string, optional): Priority level (e.g., "High", "Medium", "Low")

  • assignee (string, optional): Username to assign to

  • labels (array, optional): Array of labels

  • components (array, optional): Array of component names

  • Custom fields: Any additional parameters prefixed with customfield_ (e.g., customfield_10001)

Example:

Create a new bug in project PROJ with summary "Login page not loading" and high priority

Custom Fields Example:

Create a story in PROJ with custom field customfield_10001 set to "Sprint 1"

4. jira_update_issue

Update an existing Jira issue.

Parameters:

  • issueKey (string, required): Issue key to update

  • summary (string, optional): New summary

  • description (string, optional): New description

  • assignee (string, optional): New assignee username

  • priority (string, optional): New priority

  • labels (array, optional): New labels array

  • status (string, optional): New status (e.g., "In Progress", "Done")

  • Custom fields: Any additional parameters prefixed with customfield_ (e.g., customfield_10002)

Example:

Update issue PROJ-123 to set status to "In Progress" and assign to john.doe

5. jira_add_comment

Add a comment to a Jira issue.

Parameters:

  • issueKey (string, required): Issue key

  • comment (string, required): Comment text

Example:

Add a comment to PROJ-123 saying "Fixed in latest deployment"

6. jira_get_comments

Get all comments from a Jira issue.

Parameters:

  • issueKey (string, required): Issue key

7. jira_get_projects

List all available Jira projects.

Parameters: None

Example:

List all Jira projects

8. jira_get_project

Get details of a specific project.

Parameters:

  • projectKey (string, required): Project key

9. jira_get_issue_types

Get available issue types for a project.

Parameters:

  • projectKey (string, required): Project key

10. jira_assign_issue

Assign a Jira issue to a user.

Parameters:

  • issueKey (string, required): Issue key

  • assignee (string, required): Username to assign to

11. jira_delete_issue

Delete a Jira issue permanently.

Parameters:

  • issueKey (string, required): Issue key to delete

⚠️ Warning: This action is permanent and cannot be undone.

12. jira_get_current_user

Get information about the currently authenticated user.

Parameters: None

Development

Build the server

npm run build

Watch mode for development

npm run watch

Run in development mode

npm run dev

Testing the Server

After configuring the server, restart Claude Desktop or VS Code to load the new MCP server.

Quick Test Commands

  1. Test authentication:

    Get my current Jira user information
  2. List projects:

    Show me all Jira projects
  3. Search for issues:

    Search for all issues assigned to me that are not done
  4. Create an issue:

    Create a new task in project PROJ with summary "Test MCP integration"

Troubleshooting

Server not connecting

  • Verify the absolute path in your configuration

  • Ensure the server is built (npm run build)

  • Check that environment variables are set correctly

  • Restart Claude Desktop or VS Code after configuration changes

Authentication errors

  • Verify your Personal Access Token is still valid

  • Check that the token has not expired

  • Ensure the token has appropriate permissions

  • Verify the JIRA_BASE_URL is correct (no trailing slash)

API errors

  • Check Jira server logs for detailed error messages

  • Verify the Jira API is accessible from your machine

  • Ensure your user account has necessary permissions

  • Try accessing the REST API directly: https://jira.domain.com/rest/api/2/myself

Common issues

  • "Cannot find module": Run npm install and npm run build

  • "Connection refused": Check if Jira server is accessible and URL is correct

  • "Unauthorized": Verify your Personal Access Token

  • "Issue type not found": Use jira_get_issue_types to see valid types for the project

  • API requests redirect to SSO login: Your Jira may be behind a reverse proxy (oauth2-proxy, nginx) that filters by User-Agent. Set JIRA_USER_AGENT environment variable to a whitelisted User-Agent string. Contact your system administrator to get the allowed User-Agent value.

Security Best Practices

  1. Never commit your Personal Access Token to version control

  2. Store tokens securely in configuration files with restricted permissions

  3. Use tokens with minimal required permissions

  4. Set expiration dates for tokens

  5. Rotate tokens regularly

  6. Monitor token usage in Jira's audit logs

API Reference

This MCP server uses the Jira REST API v2. For more information about Jira's API:

  • Jira REST API documentation: https://your-jira-instance/rest/api/2/

  • JQL syntax guide: Check your Jira instance documentation

License

MIT

Support

For issues related to:

  • MCP Server: Check the logs in Claude Desktop or VS Code

  • Jira API: Refer to your self-hosted Jira documentation

  • Authentication: Contact your Jira administrator

Contributing

Contributions are welcome! Please ensure:

  • Code follows TypeScript best practices

  • All tools are properly documented

  • Error handling is comprehensive

  • Security best practices are followed

Available Tools

12 tools
jira_add_commentB

Add a comment to a Jira issue

ParametersJSON Schema
NameRequiredDescriptionDefault
issueKeyYesThe Jira issue key
commentYesThe comment text to add

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Add' implies mutation, but it does not disclose whether permissions are needed, whether comments are appended to existing ones, or what happens on invalid issue keys. It is not contradictory, but it is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly worded sentence with the action front-loaded. Every word contributes to meaning, with no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with two self-explanatory parameters and full schema coverage, so the description plus schema are mostly adequate. However, the absence of any output schema or behavioral context leaves some uncertainty about return values and side effects, preventing a higher score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with issueKey and comment both described in the schema. The tool description adds no extra meaning beyond what the schema already states, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Add' and a clear resource 'a comment to a Jira issue,' making the tool's function unambiguous. It is easily distinguished from siblings like jira_create_issue (creates an issue) and jira_get_comments (retrieves comments).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It does not mention that the issue must exist, that comments are appended, or that jira_get_comments would be the read counterpart.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_assign_issueB

Assign a Jira issue to a user

ParametersJSON Schema
NameRequiredDescriptionDefault
issueKeyYesThe Jira issue key
assigneeYesUsername to assign the issue to

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the core action but does not reveal whether the assignee is replaced, whether permissions are required, whether notifications fire, or whether the assignment is idempotent. For a mutating operation, this is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no filler. Every word contributes to identifying the operation, and it is immediately clear what the tool does.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter assign operation, the description plus schema is arguably callable, but the lack of annotations, output schema, and usage or behavioral guidance leaves some practical uncertainty. It is minimally viable but not rich enough for an agent to fully anticipate side effects or result behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds little beyond calling the assignee a 'user', which is a reasonable high-level gloss but does not enrich the schema's semantics meaningfully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Assign'), names the exact resource ('a Jira issue'), and identifies the target ('a user'). This cleanly distinguishes it from sibling tools like jira_create_issue, jira_update_issue, or jira_add_comment, even without explicitly naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives such as jira_update_issue, which could conceivably also handle assignment. There is no mention of prerequisites, when assignment is appropriate, or why this tool should be preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_create_issueB

Create a new Jira issue in a specified project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectKeyYesThe project key where the issue will be created
summaryYesBrief summary/title of the issue
descriptionNoDetailed description of the issue
issueTypeYesType of issue (e.g., Bug, Task, Story, Epic)
priorityNoPriority level (e.g., High, Medium, Low)
assigneeNoUsername of the person to assign the issue to
labelsNoArray of labels to add to the issue
componentsNoArray of component names
customFieldsNoMap of additional Jira field IDs/keys (e.g., customfield_10211) to include in the fields payload

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden of behavioral disclosure. It states the mutation (creates an issue) but does not mention prerequisites like valid projectKey or issueType, potential side effects, or what the response contains. This is minimal transparency for a mutating tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It communicates the core action and target efficiently, though it sacrifices useful context for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter creation tool with no annotations and no output schema, the description is incomplete. It does not mention required parameters, the return value such as issue key or ID, customFields behavior, or any validation expectations. The schema covers parameters, but the description alone is insufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are already documented in the schema. The description adds little beyond implicitly tying 'specified project' to projectKey. Baseline 3 applies because the schema handles the parameter documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Create'), a concrete resource ('new Jira issue'), and a scoping constraint ('in a specified project'). This clearly distinguishes it from sibling tools like jira_update_issue and jira_delete_issue.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the verb 'Create'—use it to create issues rather than update or search them—but no explicit when-to-use, exclusions, or alternative guidance is provided. The description does not help an agent decide between this and related issue tools beyond the core action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_delete_issueA

Delete a Jira issue permanently

ParametersJSON Schema
NameRequiredDescriptionDefault
issueKeyYesThe Jira issue key to delete

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. The word 'permanently' reveals that the deletion is irreversible, which is valuable. However, it does not mention authorization requirements, cascading effects on comments or attachments, or any confirmation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence that immediately states the action, target, and destructive nature. There is no wasted wording or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive tool with no annotations or output schema, the description conveys the essential fact that deletion is permanent. It is largely complete for calling the tool correctly, though it could add a caution about permissions or side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the only parameter, issueKey, is already documented as 'The Jira issue key to delete'. The description adds no additional meaning about the parameter beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Delete') and a specific resource ('a Jira issue'), and 'permanently' distinguishes it from any non-destructive issue operations. This clearly separates it from siblings like jira_update_issue or jira_search_issues.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance about when to use this tool versus alternatives, no prerequisites, and no mention that deletion is different from changing an issue's status or otherwise modifying it. The intended usage is only implied by the tool's name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_get_commentsB

Get all comments from a Jira issue

ParametersJSON Schema
NameRequiredDescriptionDefault
issueKeyYesThe Jira issue key

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It confirms a read operation but does not mention return format, ordering, pagination, error conditions, or authentication requirements, leaving key behavioral expectations unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no filler or redundant information. It front-loads the core action and resource clearly, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple retrieval tool with one well-documented parameter and no output schema, so the description covers the essential information needed to invoke it. It could be slightly stronger if it mentioned that the result is a list of comment objects, but the core usage is sufficiently clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of the parameter documentation, with 'issueKey' described as 'The Jira issue key'. The description adds no extra semantic detail beyond this baseline, so the schema handles the parameter documentation adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and a specific resource ('all comments from a Jira issue'), making the tool's purpose clear. It does not explicitly distinguish itself from siblings like jira_get_issue, but the resource is unambiguous enough for an agent to identify the intended operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as jira_add_comment or jira_get_issue. There is no mention of use cases, prerequisites, or exclusions, so the agent must rely on the tool name alone to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_get_current_userA

Get information about the currently authenticated user

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. The verb 'Get' implies a read-only operation, which conveys the core behavioral nature, but the description discloses nothing about what happens when authentication is missing or invalid, what fields 'information' includes, or any permissions considerations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single nine-word sentence with no filler. The action and target resource are front-loaded, and nothing is repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool this is minimally adequate, but with no output schema the description doesn't clarify what 'information' will be returned (e.g., account ID, display name, email) nor how auth failures surface. An agent invoking this must guess the return shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and an empty input schema (100% coverage), so there is nothing for the description to explain. This matches the baseline-4 case where parameter documentation is trivially satisfied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') tied to a specific resource ('information about the currently authenticated user'), making the tool's scope unambiguous. No sibling tool targets the current user, so an agent can distinguish this from jira_search_issues, jira_get_issue, and jira_get_projects without needing to open schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There are no preconditions, contextual triggers, or exclusions stated, even though the tool is clearly distinct from siblings, leaving the agent to infer when it is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_get_issueA

Get details of a specific Jira issue by its key (e.g., PROJ-123)

ParametersJSON Schema
NameRequiredDescriptionDefault
issueKeyYesThe Jira issue key (e.g., PROJ-123)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Get details' implies a read-only operation, but the description does not specify what set of details is returned, whether comments or subtasks are included, or any authentication/error behavior. The lack of an output schema makes this gap more significant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is a single front-loaded sentence that immediately names the operation and the argument. There is no redundant wording or extraneous detail. It earns its place efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter getter with no output schema, the description covers the essential operation and parameter. However, it omits any indication of what the returned 'details' include or whether it is limited to core fields, which would be useful since no output schema supplies that information. This is a minimal viable description with clear gaps around return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter issueKey is already fully documented in the input schema with the same example format ('PROJ-123'), and the tool description merely restates that. With 100% schema description coverage, a baseline of 3 is appropriate; the description adds no additional parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get details') and a specific resource ('specific Jira issue') with a clear locator ('by its key, e.g., PROJ-123'). It distinguishes this from siblings like jira_search_issues (query-based search), jira_create_issue (creation), and jira_get_comments (which targets comments, not the issue itself). The purpose is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case: call this tool when you have an issue key and need that issue's details. However, it does not explicitly state when to prefer it over search or other alternatives, nor does it provide any exclusion conditions. This is adequate context but lacks the explicit routing found in top-tier definitions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_get_issue_typesA

Get available issue types for a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectKeyYesThe project key

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full behavioral burden. It only states the action and resource, leaving unstated whether the response is a list of names or objects, whether projectKey must be valid, or if authorization is required. The read-only nature of 'Get' is implicit but not elaborated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A one-sentence description with no filler; it is front-loaded and every word is informative. It earns its place without unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool, the description is fairly complete, but the absence of an output schema and any elaboration about the returned issue types leaves some ambiguity. Still, it is sufficient for basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully describes projectKey as 'The project key' (100% coverage). The tool description adds no parameter-specific detail beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Get' and the resource 'issue types' scoped to a project, which clearly distinguishes it from siblings like get_projects or search_issues. An agent can immediately understand what this tool does and which resource it targets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use when issue types are needed for a project, but it does not explicitly state when to prefer this over alternatives or mention any exclusions. Sibling tools are listed, but the description does not reference them or provide routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_get_projectA

Get details of a specific Jira project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectKeyYesThe project key

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only restates that the tool gets details; it does not disclose what those details are, whether the operation is purely read-only, what errors may occur, or what the response format will be.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no filler. It is appropriately sized for a simple one-parameter lookup and front-loads the core purpose effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and full schema coverage, the description is minimally viable. However, with no output schema and no annotation safety profile, the lack of any detail about return values or behavioral constraints leaves meaningful gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents the single 'projectKey' parameter with 100% coverage. The description adds no additional formatting, examples, or constraints beyond what the schema provides, so it meets the baseline without enriching parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the verb ('Get'), the resource ('details of a specific Jira project'), and the singular scope, which distinguishes it from jira_get_projects. An agent can easily tell that this is for one project rather than a list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'specific' implies this is the tool to use when a particular project key is already known, but the description does not explicitly state when to prefer jira_get_projects for listing or provide exclusions. Usage context is only implied, not clearly documented.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_get_projectsA

List all available Jira projects

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. 'List' strongly implies a read-only operation, and 'available' hints that results may depend on user permissions. However, it does not mention pagination, output shape, or authentication constraints, though these are less critical for a zero-parameter list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no filler, front-loading the action and object. Every word contributes meaning, and it is appropriately concise for a tool with no parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only list tool with no annotations and no output schema, the description states the essential operation and result kind. It could add detail about permission-dependent availability or returned project fields, but those are minor gaps given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty with no properties, and schema description coverage is 100%, so there are no parameters that need additional explanation. This aligns with the baseline of 4 for tools with zero parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' with the resource 'Jira projects' and clarifies scope with 'all available'. This clearly differentiates the tool from sibling jira_get_project, which targets a single project, and from issue-focused siblings such as jira_search_issues.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance about when to use this tool versus alternatives like jira_get_project or jira_search_issues. It does not state exclusions, prerequisites, or a preferred selection criterion, leaving the agent to infer usage from the tool name and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_search_issuesA

Search for Jira issues using JQL (Jira Query Language). Examples: "project = PROJ AND status = Open", "assignee = currentUser() AND status != Done"

ParametersJSON Schema
NameRequiredDescriptionDefault
jqlYesJQL query string to search for issues
maxResultsNoMaximum number of results to return (default: 50)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It correctly indicates that the tool searches using JQL and provides syntax examples, which connotes a read-only operation. However, it does not disclose details such as pagination behavior, result structure, potential errors, or limits beyond the schema's maxResults default. The description is adequate but not deeply transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with two useful example queries. It is front-loaded with the core purpose and immediately gives actionable examples. No filler or repetition; every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with two fully documented parameters and no output schema, the description covers the essential purpose and query language. It lacks explicit return-value details, but the tool name and usage context make the expected behavior inferrable. The absence of annotations is partially mitigated by the clarity of the search action. Overall, an agent has enough information to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both jql and maxResults are already documented in the schema. The description adds example JQL strings, which help illustrate valid input syntax for the jql parameter, but it does not elaborate on parameter format, constraints, or interactions beyond what the schema provides. Hence the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Search for Jira issues using JQL'. It names a specific verb ('Search'), a resource ('Jira issues'), and a distinctive mechanism (JQL). This differentiates it from siblings like jira_get_issue, which retrieves a single issue, and jira_get_projects, which lists projects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The examples ('project = PROJ AND status = Open', 'assignee = currentUser() AND status != Done') illustrate realistic usage and imply this tool is for filtering/querying issues, not for single-issue lookups or mutations. While it doesn't explicitly state 'use this instead of jira_get_issue when you need to filter or search', the context is clear enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jira_update_issueC

Update an existing Jira issue

ParametersJSON Schema
NameRequiredDescriptionDefault
issueKeyYesThe Jira issue key to update
summaryNoNew summary/title for the issue
descriptionNoNew description for the issue
assigneeNoUsername to assign the issue to
priorityNoNew priority level
labelsNoNew array of labels
statusNoNew status/workflow state (e.g., "In Progress", "Done")
customFieldsNoMap of additional Jira field IDs/keys (e.g., customfield_10211) to include in the fields payload

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure and does not deliver. It does not state whether updates are partial (only provided fields change) or full replacement, what happens on invalid status/workflow transitions, or whether the issue must exist. The word 'existing' hints at a precondition but nothing more.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Six words with zero fluff, and the single sentence states purpose directly. However, there is no structural layering or additional context to earn a higher score; this reads as brevity from under-specification rather than careful curation, similar to but better than the 'Process' anti-example.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 8 parameters, a nested 'customFields' object, no annotations, and no output schema, one sentence is inadequate. Critical context that an agent needs to invoke correctly is missing: partial-update semantics, behavior on invalid workflow transitions, and what the call returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies. The description itself adds no parameter-level meaning, but the schema descriptions are informative ('New status/workflow state (e.g., "In Progress", "Done")', 'Username to assign the issue to'), making the 8 parameters self-explanatory without further elaboration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Update') and resource ('an existing Jira issue'), making the core operation immediately clear. The create/update distinction from jira_create_issue is obvious. However, no sibling differentiation is provided, notably for jira_assign_issue, which overlaps directly since this tool can reassign via the 'assignee' parameter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers zero guidance on when to use this tool versus alternatives. It does not clarify when an agent should update fields directly here versus calling the dedicated jira_assign_issue tool, nor does it state any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Changedjira_create_issue1 field changed
      • addedInput schema / properties / customFields
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "Map of additional Jira field IDs/keys (e.g., customfield_10211) to include in the fields payload",
        +  "type": "object"
        +}
    • Changedjira_update_issue1 field changed
      • addedInput schema / properties / customFields
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "Map of additional Jira field IDs/keys (e.g., customfield_10211) to include in the fields payload",
        +  "type": "object"
        +}
  2. 12 tool updatesv1.0.3
    • First observedjira_add_comment
    • First observedjira_assign_issue
    • First observedjira_create_issue
    • First observedjira_delete_issue
    • First observedjira_get_comments
    • First observedjira_get_current_user
    • First observedjira_get_issue
    • First observedjira_get_issue_types
    • First observedjira_get_project
    • First observedjira_get_projects
    • First observedjira_search_issues
    • First observedjira_update_issue

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation5/5

Each tool has a distinct purpose (add comment vs get comments, create vs update vs delete issue, etc.), so an agent can easily differentiate them without confusion.

Naming Consistency5/5

All tools follow a consistent 'jira_verb_noun' pattern using snake_case, with verbs like add, assign, create, delete, get, search, update, making naming predictable.

Tool Count5/5

12 tools is well-scoped for a Jira server, covering CRUD operations, comments, assignment, projects, user info, and search without being excessive or too sparse.

Completeness4/5

Covers essential operations (issue CRUD, comments, assignment, search, projects) but misses issue transitions and linking. Minor gaps that are manageable.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers