mcptix
マクティックス
AI アシスタントを統合したシンプルで強力なチケット追跡システム。

mcptix とは何ですか?
mcptix は、プロジェクトのタスク、バグ、機能管理に役立つチケット追跡システムです。使いやすさを重視して設計されており、Model Context Protocol (MCP) を介して AI アシスタントと統合できます。
📋チケットを追跡- プロジェクトのチケットを作成、更新、管理します
🧠複雑さを測定- 複雑性インテリジェンスエンジンでチケットの複雑さを追跡
💬コメントを追加- チケットにコメントを追加して共同作業する
🤖 AI統合- AIアシスタントをmcptixに接続して、計画とコーディングを強化します
Related MCP server: agent-todo-mcp
クイックスタートガイド
基本的な機能をすぐに使い始めたい方:
# Install mcptix
npm install @ownlytics/mcptix
# Initialize mcptix in your project
npx mcptix init
# Start mcptix
npx mcptix start基本的な使い方はこれで完了です。AI アシスタントの統合については、以下のAI 統合ガイドをご覧ください。
完全なインストールガイド
前提条件
Node.js 14以上
npmまたはyarn
MCP(Claude Desktop、Rooなど)に対応したAIアシスタント
ステップ1: mcptixをインストールする
npm install @ownlytics/mcptixステップ2: プロジェクトでmcptixを初期化する
npx mcptix initこれにより、次のようになります。
プロジェクトに
.mcptixフォルダを作成します設定ファイルを追加する
データベース構造を設定する
ステップ3: mcptix UIを起動する
npx mcptix startこれにより、mcptix UI(APIサーバー)のみが起動されます。MCPサーバーは、必要に応じてAIアシスタントによって起動されます。
AI統合ガイド
mcptix の最も強力な機能の一つは、モデルコンテキストプロトコル(MCP)を介したAIアシスタントとの統合です。これにより、AIアシスタントはプロジェクト計画やタスク分解などの業務を支援できるようになります。
mcptix AI統合の理解
適切に構成されると、mcptix により AI アシスタントは次のことが可能になります。
チケットの作成、読み取り、更新、削除
チケットにコメントを追加する
詳細な計画情報を
agent_contextフィールドに保存する複雑なタスクを管理しやすいチケットに分割する
複雑さの指標を追跡する
agent_contextフィールドは特に強力で、会話を乱雑にすることなく、Markdown を使用して広範な計画ドキュメントを保存する場所を AI アシスタントに提供します。
💡⚡️ mcptix によるコスト効率の高い開発
API接続されたLLMエージェントが継続的に計画、コード実行、エラー処理、デバッグを行うと、コストが急速に増大する可能性があります。エージェントが同じコンテキストを繰り返し処理し、インタラクション間で状態を維持する必要がある場合、APIコストは増大します。
より費用対効果の高いアプローチ: Claude Desktop(Claude 3.7 Sonnetを実行しているProアカウント)をmcptixとファイルシステムアクセスで構成します。このローカル設定により、強力なAIアシスタンスを維持しながら、API使用量を大幅に削減できます。
ファイル名、行番号、メソッド名、その他の参照ポイントを論理的かつ実用的なチャンクに整理した包括的なプランをagent_contextフィールドに保存することで、API の使用量を最大 80% 削減できます。
mcptix は、LLM コーディング エージェントの次世代メモリ バンクとして機能し、すべてを限られたコンテキスト ウィンドウ内に保持するのではなく、詳細な計画とコンテキストを、必要に応じて参照できる永続的なストレージ システムにオフロードできるようにします。
このシステムの特に強力な点は、コーディングエージェント(Roo/Clineなど)とClaude Desktopの両方が、基盤となる同じmcptixデータベースにアクセスすることです。これにより、Claude Desktopが包括的な計画を作成してチケットに保存し、コーディングエージェントがこれらのチケットを取得して計画を正確に実行するシームレスなコラボレーション環境が実現します。共有チケットシステムを通じて、Claude Desktopが複雑なタスクを実行可能なチャンクに分割し、コーディングエージェントが毎回コンテキストを再生成することなくそれらを実行することで、両者は効率的に連携します。
さまざまなAIアシスタントの設定
ルーのために
MCP 構成をコピーします:
npx mcptix init実行すると、MCPサーバー設定ファイルが.mcptix/mcp-server-config.jsonに作成されます。これをRooの設定ディレクトリにコピーしてください。mkdir -p .roo cp .mcptix/mcp-server-config.json .roo/mcp.json構成ファイルをチェックして、パスが絶対パスであることを確認します。
{ "mcpServers": { "mcptix": { "command": "/absolute/path/to/node", "args": ["/absolute/path/to/node_modules/@ownlytics/mcptix/dist/mcp/index.js"], "env": { "MCPTIX_HOME_DIR": "/absolute/path/to/your/project/.mcptix", "HOME": "/home/your-username" }, "disabled": false, "alwaysAllow": [] } } }/absolute/path/to/nodeターミナルでwhich node実行した結果であることを確認します。/absolute/path/to/node_modules/@ownlytics/mcptix/dist/mcp/index.jsが、node_modules 内の mcptix MCP サーバーへの絶対パスであることを確認します。/absolute/path/to/your/project/.mcptixがプロジェクトの.mcptixディレクトリへの絶対パスであることを確認します。/home/your-usernameがホームディレクトリであることを確認します (echo $HOMEの結果)。
クロードデスクトップ向け
まだインストールしていない場合は、 desktop-commander をインストールします。
npm install -g @wonderwhy-er/desktop-commanderClaude Desktop をファイルシステムに接続します。
desktop-commander connectClaude デスクトップを構成する:
Claude Desktopの場合:
設定 > 開発者
「MCP サーバー構成」セクションで MCP 構成を追加します。
{ "mcpServers": { "mcptix": { "command": "/absolute/path/to/node", "args": ["/absolute/path/to/node_modules/@ownlytics/mcptix/dist/mcp/index.js"], "env": { "MCPTIX_HOME_DIR": "/absolute/path/to/your/project/.mcptix", "HOME": "/home/your-username" }, "disabled": false, "alwaysAllow": [] }, "desktop-commander": { "command": "npx", "args": ["-y", "@smithery/cli@latest", "run", "@wonderwhy-er/desktop-commander", "--config", "{}"] } } }コーディングエージェントの構成で説明されているように、json を使用します。
Claude Desktop でプロジェクトを作成します。
Claude Desktopで「新しいプロジェクト」をクリックします
プロジェクトに適切な名前を付ける
プロジェクトディレクトリを開発プロジェクトのルートディレクトリに設定します
プロジェクト システムの指示を編集します。
Claude に mcptix の使用に関する指示を追加します。
This project uses mcptix for ticket tracking. When planning work: 1. Use the mcptix MCP server to create and manage tickets 2. Break down complex tasks into smaller tickets 3. Use the agent_context field in tickets to store comprehensive planning in Markdown format 4. Project files are located in: /path/to/your/project
AIアシスタントでmcptixを使用する
設定が完了したら、AIアシスタントにプロジェクトについて話しかけることができます。ワークフローは以下のとおりです。
mcptix UIを起動します:
npx mcptix startプロジェクトの計画について、Claude Desktop または AI アシスタントと会話を開始します。
複雑なタスクを分割するための支援を求める: 例: 「ユーザー認証システムを実装する必要があります。これを管理しやすいチケットに分割するのを手伝ってもらえますか?」
AIは
agent_contextフィールドに詳細な計画を記入したチケットを作成します。mcptix UI でチケットをhttp://localhost:3000 (または設定したポート) で表示します。
agent_contextフィールドの計画に従ってチケットを実行します。AIアシスタントで進捗状況を確認し、必要に応じて計画を調整します
Cline/Rooとの連携
Cline または Roo を使用する場合:
アシスタントにチケットを探すように伝えます:
Find tickets in the 'in-progress' status.アシスタントに特定のチケットの作業を依頼します。
Work on ticket id `ticket-1234567890` following the plan in the agent_context.アシスタントはagent_contextフィールドのプランを実行します。
カンバンボードの使い方
カンバンボード
mcptix を開くと、さまざまなチケット ステータスの列があるカンバン ボードが表示されます。
バックログ- 対応が必要なチケット
次に処理するチケット
進行中- 現在作業中のチケット
レビュー中- レビュー中のチケット
完了- 完了したチケット
手動でチケットを作成する
右上の「新しいチケット」ボタンをクリックします
チケットの詳細を入力してください:
タイトル
説明
状態
優先度
「保存」をクリック
チケットの更新
チケットをクリックして開きます
チケットの詳細を編集する
変更は自動的に保存されます
コメントの追加
チケットを開く
コメントセクションまでスクロールします
コメントを入力してください
「コメントを追加」をクリック
詳細設定
.mcptix/mcptix.config.jsファイルを編集して、mcptix をカスタマイズできます。
module.exports = {
// Database configuration
dbPath: './.mcptix/data/mcptix.db',
// API server configuration
apiPort: 3000,
apiHost: 'localhost',
// Server options
mcpEnabled: false, // Disabled by default - MCP server should be started by the LLM agent
apiEnabled: true,
// Logging configuration
logLevel: 'info',
// Data management
clearDataOnInit: false,
};一般的なカスタマイズ
ポートを変更する: ポート3000がすでに使用されている場合は、
apiPort別の番号に変更します。データの場所を変更する: データを別の場所に保存する場合は、
dbPath変更します。
トラブルシューティング
インストールの問題
mcptix 実行時に「コマンドが見つかりません」
mcptix がインストールされていることを確認してください (
npm install @ownlytics/mcptix)フルパスを使用してみてください:
./node_modules/.bin/mcptix
初期化に失敗しました
現在のディレクトリへの書き込み権限があるかどうかを確認します
Node.jsがインストールされ、最新であることを確認してください
mcptix UI が起動しない
ポートはすでに使用されています
.mcptix/mcptix.config.jsのポート番号を変更する別のインスタンスがすでに実行されているかどうかを確認する
データベースエラー
データベースパスにアクセスできることを確認する
.mcptixディレクトリのファイル権限を確認する
AI統合の問題
AIアシスタントがmcptixに接続できない
MCP 構成パスが絶対パスであり正しいことを確認します。
AIアシスタントがMCPをサポートしているかどうかを確認する
構成内のデータベース パスが MCP サーバーにアクセスできることを確認します。
MCPサーバーが起動しない
MCP構成の環境変数を確認してください
Node.jsとmcptix MCPサーバーへのパスを確認します
AIアシスタントのログでエラーメッセージを探す
「モジュールが見つかりません」エラー
mcptixが正しくインストールされていることを確認する
MCP構成のパスが正しいことを確認してください
コマンドラインリファレンス
mcptix にはいくつかのコマンドライン オプションが用意されています。
# Initialize mcptix in your project
npx mcptix init
# Start mcptix
npx mcptix start
# Start with custom port and host
npx mcptix start --port 3001 --host 0.0.0.0
# Start without opening the browser
npx mcptix start --no-open
# Start only the MCP server (for development/testing purposes)
npx mcptix mcpMCPアーキテクチャの理解
MCP(モデルコンテキストプロトコル)サーバーは、mcptix自体ではなく、AIアシスタントによって起動されるように設計されています。このアーキテクチャにより、以下のことが保証されます。
MCPサーバーは必要なときだけ実行されます
MCPサーバーは正しいデータベースにアクセスできる
MCPサーバーがAIアシスタント用に適切に設定されている
AI アシスタントが mcptix と対話する必要がある場合、次の処理が行われます。
構成ディレクトリからMCP構成ファイルを読み取ります。
構成で指定されたとおりにMCPサーバーを起動します
MCPサーバーに接続する
MCPサーバーが提供するツールとリソースを使用してmcptixと対話します
🛡️ ライセンスと使用方法
このプロジェクトは**、Business Source License 1.1 (BSL 1.1)**に基づいてライセンスされています。
内部評価、実験、研究など、非営利目的であれば、このソフトウェアを使用、変更、調査することができます。
商用利用(本番環境、有料サービス、エンタープライズ環境を含む)には、Tesseract Labs, LLC からの商用ライセンスが必要です。
このツールの統合や拡張を検討しているチームを喜んでサポートいたします。ライセンスやコンサルティングについては、お気軽にお問い合わせください。
📧 hello@ownlytics.io
📄ライセンス条項全文を見る
このライセンスを尊重することは、継続的な開発と革新をサポートするのに役立ちます。
Available Tools
8 toolsadd_commentC
Add a comment to a ticket
| Name | Required | Description | Default |
|---|---|---|---|
| author | No | Comment author | agent |
| content | Yes | Comment content | |
| status | No | Comment status | open |
| ticket_id | Yes | Ticket ID | |
| type | No | Comment type | comment |
TDQS
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. 'Add a comment' implies a write/mutation operation, but the description doesn't specify permissions required, whether comments are editable or deletable, rate limits, or what happens on success/failure. This leaves critical behavioral traits unaddressed for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the core purpose and efficiently communicates the essential action without unnecessary elaboration, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what the tool returns, error conditions, or side effects. For a tool that modifies data, more context about behavioral expectations is needed to guide safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter semantics beyond what the input schema provides. With 100% schema description coverage, all parameters (ticket_id, content, author, status, type) are documented in the schema with descriptions, defaults, and enums. The baseline score of 3 is appropriate as the schema does the heavy lifting, but the description doesn't enhance understanding of parameter usage or relationships.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add a comment') and the target resource ('to a ticket'), which is specific and unambiguous. However, it doesn't differentiate this tool from potential sibling tools like 'update_ticket' that might also handle comments, so it doesn't fully distinguish itself from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. With siblings like 'update_ticket' that might modify tickets, there's no indication of whether this is the primary method for adding comments or if other tools should be preferred in certain contexts. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ticketD
Create a new ticket
| Name | Required | Description | Default |
|---|---|---|---|
| complexity_metadata | No | Complexity metrics | |
| description | No | Ticket description | |
| priority | No | Ticket priority | medium |
| status | No | Ticket status | backlog |
| title | Yes | Ticket title |
TDQS
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 but provides none. 'Create a new ticket' doesn't indicate whether this is a mutating operation (it clearly is), what permissions might be required, whether there are rate limits, what happens on success/failure, or what the response contains. For a creation tool with complex nested parameters, this lack of behavioral context is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While technically concise with just three words, this is a case of under-specification rather than effective brevity. The description is too minimal for a tool with 5 parameters including a complex nested object with 16 sub-properties. Every sentence should earn its place, but here the single 'sentence' fails to provide necessary context for proper tool selection and use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters with nested objects), absence of annotations, and lack of output schema, the description is completely inadequate. A creation tool with sophisticated complexity metrics and status tracking needs far more context about system behavior, success conditions, error handling, and relationships to other tools. The current description provides none of this necessary context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, meaning all parameters are documented in the schema itself. The description adds zero additional parameter information beyond what's already in the structured schema. However, since the schema does the heavy lifting with detailed descriptions for each property, the baseline score of 3 is appropriate - the description doesn't help but doesn't need to given the comprehensive schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a new ticket' is a tautology that essentially restates the tool name. While it does specify the verb 'create' and resource 'ticket', it provides no differentiation from sibling tools like 'update_ticket' or context about what constitutes a ticket in this system. It's minimally informative but doesn't go beyond restating the obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides absolutely no guidance about when to use this tool versus alternatives. There are multiple sibling tools (add_comment, delete_ticket, update_ticket, get_ticket, list_tickets, search_tickets) but no indication of when this creation tool is appropriate versus updating existing tickets or other operations. No context about prerequisites, timing, or relationships to other tools is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_ticketC
Delete a ticket
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Ticket ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Delete' implies a destructive mutation, but the description doesn't specify whether this is permanent, requires special permissions, triggers notifications, or returns confirmation. For a destructive operation with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at three words with zero wasted language. It's front-loaded with the core action and resource. While it's under-specified, this dimension scores conciseness, not completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no annotations and no output schema, the description is inadequate. It doesn't address critical context like irreversible consequences, permission requirements, error conditions, or what happens upon success. The agent lacks sufficient information to use this tool safely and effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the 'id' parameter is documented as 'Ticket ID'), so the schema already provides parameter meaning. The description adds no additional context about parameter format, validation, or where to obtain the ID. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action ('Delete') and target resource ('a ticket'), which provides a basic understanding of purpose. However, it lacks specificity about what constitutes a ticket in this system and doesn't differentiate from sibling tools like 'update_ticket' or 'create_ticket' beyond the obvious verb difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., needing ticket ID from get_ticket/list_tickets), irreversible consequences, or when deletion might be inappropriate versus updating or archiving.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statsC
Get statistics about tickets in the system
| Name | Required | Description | Default |
|---|---|---|---|
| group_by | No | Field to group by | status |
TDQS
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 'Get statistics', which implies a read-only operation, but doesn't specify if it requires authentication, has rate limits, returns aggregated data, or details about output format. For a tool with no annotations, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently states the tool's purpose without unnecessary words. However, it could be more front-loaded with key details like the aggregation aspect, but it's appropriately sized for its limited content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's purpose (statistics retrieval) and lack of annotations and output schema, the description is incomplete. It doesn't explain what statistics are returned, in what format, or any behavioral traits like data freshness or access requirements. For a tool with no structured support, more descriptive context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting the 'group_by' parameter with enum values. The description doesn't add any meaning beyond the schema, as it doesn't mention parameters at all. With high schema coverage, the baseline score of 3 is appropriate since the schema handles parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool 'Get statistics about tickets in the system', which provides a basic purpose (verb+resource) but lacks specificity about what kind of statistics or scope. It doesn't distinguish from sibling tools like 'list_tickets' or 'search_tickets' that also retrieve ticket information, making it somewhat vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'list_tickets' or 'search_tickets'. The description implies it's for aggregated statistics, but it doesn't explicitly state this or mention prerequisites, leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ticketC
Get a ticket by ID
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Ticket ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden but adds minimal behavioral context. It states 'Get' which implies a read operation, but doesn't disclose traits like whether it requires authentication, returns full or partial data, handles errors, or has rate limits. This is inadequate for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise ('Get a ticket by ID'), front-loaded with the core action, and wastes no words. Every part of the sentence is essential, making it efficient and easy to parse, though it may be overly brief for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a simple parameter, the description is incomplete. It doesn't explain what the tool returns (e.g., ticket details, status), error conditions, or behavioral aspects. For a basic read tool, this leaves significant gaps in understanding its full context and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'id' documented as 'Ticket ID' in the schema. The description adds no additional meaning beyond this, such as format examples (e.g., numeric vs. string) or constraints. Baseline 3 is appropriate since the schema does the heavy lifting, but no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('a ticket by ID'), making the purpose understandable. It distinguishes from siblings like list_tickets (multiple tickets) and search_tickets (filtered search), though not explicitly. However, it lacks specificity about what 'get' entails (e.g., retrieve details vs. status), preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't clarify that this is for retrieving a single known ticket ID, whereas list_tickets returns multiple tickets or search_tickets filters by criteria. The description implies usage by mentioning 'by ID' but offers no explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ticketsB
List tickets with optional filtering, sorting, and pagination
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of tickets to return | |
| offset | No | Number of tickets to skip | |
| order | No | Sort order | desc |
| priority | No | Filter by priority | |
| search | No | Search term for title and description | |
| sort | No | Sort field | updated |
| status | No | Filter by status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'optional filtering, sorting, and pagination' but lacks critical behavioral details: it doesn't specify default behavior beyond what's in the schema (e.g., default sort order), doesn't mention rate limits, authentication needs, or what happens with invalid parameters. For a list operation with 7 parameters, this leaves significant gaps in understanding how the tool behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('List tickets') and succinctly lists key features. Every word earns its place with no redundancy or fluff, making it easy for an agent to parse quickly while covering essential aspects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (7 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic action and features but lacks details on behavioral traits, output format, or error handling. Without annotations or output schema, the agent is left with incomplete context for reliable invocation, though the schema provides solid parameter documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 7 parameters. The description adds minimal value beyond the schema by summarizing the optional features (filtering, sorting, pagination), but doesn't provide additional context like parameter interactions or usage examples. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but doesn't detract either.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and resource 'tickets', making the purpose unambiguous. It distinguishes from siblings like 'get_ticket' (singular) and 'search_tickets' (implied broader search), though it doesn't explicitly differentiate from 'search_tickets' which might have overlapping functionality. The description is specific about the action but could be more precise about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'search_tickets' or 'get_ticket'. The description mentions optional filtering, sorting, and pagination, but doesn't specify contexts or exclusions. Without explicit usage rules, the agent must infer based on tool names alone, which is insufficient for reliable selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_ticketsC
Search for tickets based on various criteria
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of tickets to return | |
| offset | No | Number of tickets to skip | |
| order | No | Sort order | desc |
| priority | No | Filter by priority | |
| query | Yes | Search query | |
| sort | No | Sort field | relevance |
| status | No | Filter by status |
TDQS
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 mentions 'based on various criteria', which hints at filtering, but fails to detail key behaviors such as pagination handling (implied by limit/offset), authentication needs, rate limits, or what the search returns. This leaves significant gaps for a tool with 7 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's appropriately sized and front-loaded, directly stating the tool's action without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 7 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain the return format, error handling, or how search criteria combine, leaving the agent with insufficient context to use the tool effectively beyond basic parameter input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal meaning beyond the input schema, which has 100% coverage with detailed parameter descriptions. It implies filtering via 'various criteria', but doesn't elaborate on syntax or interactions between parameters. Given the high schema coverage, a baseline score of 3 is appropriate as the schema does most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('search') and resource ('tickets'), making the purpose evident. However, it doesn't distinguish this tool from its sibling 'list_tickets', which might also retrieve tickets, leaving room for ambiguity in sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like 'list_tickets' or 'get_ticket'. It lacks explicit context, exclusions, or prerequisites, offering minimal usage direction beyond the basic action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ticketC
Update an existing ticket
| Name | Required | Description | Default |
|---|---|---|---|
| complexity_metadata | No | Complexity metrics | |
| description | No | Ticket description | |
| id | Yes | Ticket ID | |
| priority | No | Ticket priority | |
| status | No | Ticket status | |
| title | No | Ticket title |
TDQS
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. 'Update' implies a mutation, but it doesn't disclose any behavioral traits such as required permissions, whether updates are partial or full, error handling, or side effects. This is a significant gap for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, making it easy to parse quickly. Every word earns its place without redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 parameters including nested objects, no output schema, and no annotations), the description is incomplete. It doesn't address key aspects like what fields are updatable, how partial updates work, or what the tool returns. For a mutation tool with rich input schema but no annotations or output schema, this leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly, including nested objects and enums. The description adds no additional meaning beyond what the schema provides (e.g., it doesn't explain parameter interactions or constraints). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update an existing ticket' clearly states the action (update) and resource (ticket), which is better than a tautology. However, it doesn't specify what aspects can be updated or differentiate this from sibling tools like 'add_comment' or 'create_ticket' beyond the basic verb. It's vague about scope and distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It doesn't mention prerequisites (e.g., needing an existing ticket ID), when not to use it (e.g., for creating new tickets), or refer to sibling tools like 'create_ticket' or 'delete_ticket' for different operations. Usage is implied but not explicit.
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.
8 tool updates
v1.0.0- First observed
add_comment - First observed
create_ticket - First observed
delete_ticket - First observed
get_stats - First observed
get_ticket - First observed
list_tickets - First observed
search_tickets - First observed
update_ticket
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose with no ambiguity: add_comment, create_ticket, delete_ticket, get_stats, get_ticket, list_tickets, search_tickets, and update_ticket all target specific actions on tickets or related data. The descriptions reinforce distinct roles, such as list_tickets for listing with filters versus search_tickets for searching based on criteria.
All tool names follow a consistent verb_noun pattern using snake_case, such as create_ticket, get_ticket, and update_ticket. This uniformity makes the tool set predictable and easy to understand, with no deviations in naming conventions across the eight tools.
With 8 tools, the count is well-scoped for a ticket management system, covering essential operations without bloat. Each tool earns its place, providing a balanced set for CRUD operations, commenting, statistics, listing, and searching, which aligns perfectly with the server's purpose.
The tool set offers complete CRUD/lifecycle coverage for ticket management: create_ticket, get_ticket, update_ticket, and delete_ticket handle the core lifecycle, while add_comment supports interaction, and list_tickets, search_tickets, and get_stats provide comprehensive querying and analytics. No obvious gaps exist for the domain.
Maintenance
Related MCP Connectors
Personal project management with AI agents: numbered tickets, statuses, files, a thread per ticket.
Personal project management with AI agents: numbered tickets, statuses, files, a thread per ticket.
Issue tracking for software projects: issues, epics, releases, docs and boards, from your AI.
Task & board management for AI agents + humans. Kanban, comments, digests via MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA task tracking and backlog management tool that enables AI assistants to create, organize, and track issues and tasks with status workflow through MCP protocol.2-
- AlicenseBqualityFmaintenanceA Model Context Protocol server for AI agents to manage tasks and track progress across projects, with features like project isolation, search, and reporting.118 npm1MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol server for AI persona management with JIRA integration, enabling personality switching and ticket operations.61MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that provides issue tracking tools for Jira, Redmine, GitHub, and GitLab via the Model Context Protocol, enabling agents to search, fetch, sync, and manage issues through natural language.MIT