Skip to main content
Glama
exthnet
by exthnet

tcs_mcp_claude

九州大学スーパーコンピュータ玄界の TCS(Fujitsu PRIMEHPC JobScheduler / PJM)を Claude から操作するための Model Context Protocol (MCP) サーバー。

Claude Code と統合することで、ジョブの投入・状態確認・削除・リソース照会・出力ファイルの読み取りを自然言語で行えるようになる。


提供ツール

ツール

対応コマンド

説明

submit_job

pjsub

ジョブスクリプトを投入してジョブ ID を返す

list_jobs

pjstat

実行中・キュー待ちジョブの一覧(履歴も取得可)

get_job_status

pjstat <id>

特定ジョブの状態確認

delete_job

pjdel

ジョブの削除・キャンセル

get_resource_groups

pjstat --rsc

利用可能なリソースグループの一覧

get_quota_limits

pjstat --limit

クォータ・上限値の確認

generate_job_template

Genkai 向けジョブスクリプトのテンプレート生成

list_resource_groups

Genkai の既知リソースグループ一覧

list_files

作業ディレクトリのファイル一覧

read_file

テキストファイルの内容を読み取り

read_job_output

ジョブの標準出力・エラーファイルを読み取り


Related MCP server: clausius

利用形態

シナリオ A(推奨): 玄界のログインノード上で Claude Code を直接実行

[玄界ログインノード]
  Claude Code → tcs-mcp (stdio) → pjsub/pjstat/pjdel

シナリオ B: ローカル PC から SSH 経由でサーバープロセスを玄界で動かす

[ローカル PC]               [玄界ログインノード]
  Claude Code → SSH トンネル → tcs-mcp (stdio) → pjsub/pjstat/pjdel

シナリオ C: ローカル PC に MCP サーバーを置き、SSH で玄界へ接続

[ローカル PC]
  Claude Code → tcs-mcp (SSH モード) → SSH → pjsub/pjstat/pjdel [玄界]

インストール

前提条件

  • Python 3.11 以上(玄界では miniforge3 を推奨)

  • 玄界アカウントと PJM コマンド(/usr/local/bin/pjsub 等)へのアクセス

手順(玄界ログインノード上)

# miniforge 環境をアクティベート
source ~/miniforge3/bin/activate

# このリポジトリをクローン
git clone git@github.com:exthnet/tcs_mcp_claude.git
cd tcs_mcp_claude

# パッケージをインストール(開発モード)
pip install -e .

# インストール確認
tcs-mcp --help

Claude Code への登録

シナリオ A / B(玄界上で tcs-mcp を動かす場合)

プロジェクトルートの .mcp.json がそのまま使えます(Claude Code を tcs_mcp_claude/ ディレクトリで起動した場合に自動読み込み)。

{
  "mcpServers": {
    "tcs": {
      "type": "stdio",
      "command": "/home/pj24001603/ku40000105/miniforge3/bin/tcs-mcp",
      "env": {
        "TCS_MODE": "local",
        "TCS_WORK_DIR": "/home/pj24001603/ku40000105/work"
      }
    }
  }
}

別のディレクトリで Claude Code を使う場合は、~/.claude/ 以下に .mcp.json を置くか、claude mcp add コマンドで追加してください。

シナリオ B(ローカル PC から SSH トンネル経由)

ローカル PC の .mcp.json または Claude Code の MCP 設定に追加:

{
  "mcpServers": {
    "tcs": {
      "type": "stdio",
      "command": "ssh",
      "args": [
        "-i", "~/.ssh/id_rsa_genkai",
        "ku40000105@genkai.cc.kyushu-u.ac.jp",
        "/home/pj24001603/ku40000105/miniforge3/bin/tcs-mcp"
      ]
    }
  }
}

シナリオ C(ローカル PC に MCP サーバーをインストール、SSH で玄界へ)

ローカル PC にもパッケージをインストールし、SSH モードで起動:

{
  "mcpServers": {
    "tcs": {
      "type": "stdio",
      "command": "tcs-mcp",
      "env": {
        "TCS_MODE": "ssh",
        "TCS_SSH_HOST": "genkai.cc.kyushu-u.ac.jp",
        "TCS_SSH_USER": "ku40000105",
        "TCS_SSH_KEY_FILE": "~/.ssh/id_rsa_genkai"
      }
    }
  }
}

設定

環境変数または .env ファイル(.env.example を参照)で設定します。

変数

デフォルト

説明

TCS_MODE

local

実行モード: local または ssh

TCS_WORK_DIR

~/work

ジョブ出力ファイルを探す作業ディレクトリ

TCS_SSH_HOST

genkai.cc.kyushu-u.ac.jp

SSH ホスト名(ssh モード時)

TCS_SSH_USER

SSH ユーザ名(ssh モード時、必須)

TCS_SSH_KEY_FILE

~/.ssh/id_rsa

SSH 秘密鍵パス

TCS_PJSUB_PATH

/usr/local/bin/pjsub

pjsub の絶対パス

TCS_PJSTAT_PATH

/usr/local/bin/pjstat

pjstat の絶対パス

TCS_PJDEL_PATH

/usr/local/bin/pjdel

pjdel の絶対パス

TCS_LOG_LEVEL

INFO

ログレベル


使用例(Claude との会話)

あなた: 現在のジョブ一覧を見せて

Claude: [list_jobs を呼び出し]
        現在実行中のジョブはありません。

あなた: a-batch-low で4コア、30分のジョブを投入したい

Claude: [generate_job_template を呼び出し]
        以下のスクリプトを生成しました:
        #!/bin/bash
        #PJM -N myjob
        #PJM -L rscgrp=a-batch-low
        #PJM -L vnode-core=4
        #PJM -L elapse=00:30:00
        ...

        投入しますか?

あなた: 投入して

Claude: [submit_job を呼び出し]
        ジョブ ID 6401234 で投入しました。

開発

テストの実行

source ~/miniforge3/bin/activate
pip install -e ".[dev]"
pytest tests/ -v

テストは tests/fixtures/ に保存した実際の pjstat 出力を使用するため、玄界への接続不要で実行できます。

プロジェクト構造

src/tcs_mcp/
├── __main__.py       # エントリポイント
├── server.py         # MCPServer の構築・ツール登録
├── config.py         # TCSConfig (pydantic-settings)
├── executor.py       # LocalExecutor / SSHExecutor
├── parsers.py        # pjstat 出力パーサ
└── tools/
    ├── jobs.py           # submit_job, list_jobs, get_job_status, delete_job
    ├── resources.py      # get_resource_groups, get_quota_limits
    ├── files.py          # list_files, read_file, read_job_output
    ├── templates.py      # ジョブスクリプトテンプレートロジック
    └── templates_tool.py # generate_job_template, list_resource_groups (MCP ツール)

対応リソースグループ(Genkai)

グループ

種別

用途

a-batch-low / a-batch

CPU

バッチジョブ(Xeon Platinum 8490H)

a-inter-low / a-inter

CPU

インタラクティブジョブ

b-batch-low / b-batch

GPU

GPU バッチジョブ(NVIDIA A100)

b-batch-mig-low / b-batch-mig

GPU (MIG)

MIG パーティション GPU ジョブ

b-inter-low / b-inter

GPU

GPU インタラクティブジョブ

c-batch-low / c-batch

CPU

その他バッチ


注意事項

  • pjmod は玄界に存在しないため非対応

  • ファイル操作ツール(read_file, list_files)は TCS_WORK_DIR 配下のみアクセス可(パストラバーサル防止)

  • MCP バージョン 2.0.0 を使用(mcp.server.mcpserver.MCPServer

Available Tools

11 tools
delete_jobC

Delete (cancel) a queued or running job.

Returns: {"success": bool, "job_id": str, "message": str}

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits. It states the action and return format, but it does not mention that deletion is irreversible, whether permissions are needed, or what happens if the job is not in a queued/running state. This is a mutation tool, so more safety context is expected.

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 two short sentences: one for purpose and one for return format. It is front-loaded and contains no fluff, earning its place.

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?

Although the tool is simple with one parameter, the description is incomplete: it does not explain the parameter's meaning, any required permissions, or edge cases (e.g., what happens if the job is already completed). The presence of an output schema reduces the need to describe returns, but the description still goes beyond that, yet misses critical operational context.

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

Parameters1/5

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

The schema has zero description coverage for the single parameter job_id, and the description does not explain what job_id refers to or how to obtain it. The return message mentions 'job_id' but not its meaning as input. The description fails to compensate for the schema's lack of parameter documentation.

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 action: 'Delete (cancel) a queued or running job.' This is a specific verb and resource, and it distinguishes this tool from siblings like submit_job, list_jobs, and get_job_status.

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 guidance on when to use this tool versus alternatives, nor any mention of exclusions or prerequisites. The phrase 'queued or running' implies it is for active jobs, but it does not explicitly say when not to use it or point to alternative tools.

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

generate_job_templateA

Generate a PJM job script template for Genkai.

Available rscgrps: a-batch-low, a-batch, b-batch-low, b-batch, b-batch-mig-low, b-batch-mig, c-batch-low, c-batch, and their -inter variants.

Returns a shell script string with #PJM directives ready to submit with pjsub.

ParametersJSON Schema
NameRequiredDescriptionDefault
gpuNo
coresNo
elapseNo01:00:00
rscgrpNoa-batch-low
job_nameNomyjob
work_dirNo
mpi_procsNo
extra_pjm_directivesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It clearly states the output type and nature (shell script string, template), and the list of rscgrps adds system-specific context. It does not disclose edge-case behavior like invalid inputs, but the non-destructive nature is apparent.

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 three sentences: purpose, resource groups, and output. It is front-loaded with the main action and avoids unnecessary phrases, though the resource group list adds unavoidable length.

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 description adequately explains the tool's purpose and output for a template generator, aided by the presence of an output schema. However, the lack of parameter documentation and annotation makes it less complete than needed for a tool with 8 configurable parameters.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for all 8 parameters. It only addresses the rscgrp parameter by listing valid values; no other parameters (gpu, cores, elapse, job_name, work_dir, mpi_procs, extra_pjm_directives) are explained. This leaves most parameters underspecified.

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 generates a PJM job script template for Genkai, and further clarifies it returns a shell script string with #PJM directives. This distinguishes it from siblings like submit_job or list_files.

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 description implies usage for creating a job template without submitting, as it mentions 'ready to submit with pjsub,' but does not explicitly name alternatives or exclusions. The listing of available rscgrps provides helpful context for choosing the correct resource group, giving clear context without formal when/not guidance.

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

get_job_statusA

Get status of a specific job by ID.

Returns list of job dicts (same format as list_jobs). Raises RuntimeError if the job is not found.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses the return format (list of job dicts, same as list_jobs) and error behavior (raises RuntimeError if not found). However, it does not explicitly state read-only nature or any side effects, though the wording implies a safe read.

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?

Three concise sentences: purpose, return format, error handling. No wasted words, and the most important information is front-loaded.

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?

Given the tool's simplicity (one parameter) and the presence of an output schema, the description sufficiently covers the return format and error case. It lacks explicit guidance on when to use it versus alternatives, but that is not strictly required for a simple getter.

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 only parameter, job_id, is self-explanatory ('by ID') and the schema already provides its type and title. With 0% schema description coverage, the description adds minimal extra meaning beyond restating that the ID identifies the job. No format or examples are given.

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 action ('Get status') and the resource ('a specific job by ID'), making it distinct from sibling tools like list_jobs which list all jobs. It's specific and immediately understandable.

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 usage (when you have a job ID and need status), but it does not explicitly mention alternatives or conditions when not to use this tool. The comparison with list_jobs is implicit rather than an explicit guideline.

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

get_quota_limitsC

Get quota and limit information for the current user.

Returns a dict with sections: USER, GROUP, ALL. Each section contains a list of {limit_name, limit, alloc} dicts.

ParametersJSON Schema
NameRequiredDescriptionDefault
rscgrpNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/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 burden of behavioral disclosure. It does mention the return format (a dict with sections), implying a read operation, but it does not explicitly state that the tool is read-only, lacks side effects, or requires any authentication/permissions. This is insufficient for full transparency.

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 concise and well-structured. It opens with a clear action statement, then briefly clarifies the return structure. Every sentence adds value, with no unnecessary detail or repetition, making it easy to scan and understand.

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?

Given the existence of an output schema, the description need not detail return values, but it still leaves significant gaps: the sole parameter is undocumented, usage guidelines are missing, and no context is provided about when to use this tool. While the tool is simple, the description is incomplete for effective agent selection and invocation.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention the 'rscgrp' parameter at all. As a result, the description adds no meaning beyond the raw schema, failing to compensate for the low coverage. The parameter's purpose, allowed values, and effect on the output are completely unexplained.

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 purpose with a specific verb and resource: 'Get quota and limit information for the current user.' It further details the return structure (sections USER, GROUP, ALL), making it distinct from sibling tools like get_resource_groups or list_resource_groups.

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 mention of conditions under which it should be invoked. There is no reference to sibling tools or exclusions, leaving the agent to infer usage context solely from the name.

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

get_resource_groupsA

List available resource groups and their sizes on Genkai.

rscgrp: filter by specific resource group name. Returns list of dicts with keys: rscunit, rscunit_size, rscgrp, rscgrp_size.

ParametersJSON Schema
NameRequiredDescriptionDefault
rscgrpNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It explains the return format (list of dicts with keys) and the optional filter behavior, which are useful behavioral details. It does not mention side effects or state changes, but as a read-only list operation, the 'List' verb implies safety and the return format disclosure is sufficient.

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 concise and well-structured: a leading summary sentence, a parameter explanation, and a return format specification. Every line earns its place, with no unnecessary fluff or redundancy.

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 one-optional-parameter list tool with an output schema, the description covers purpose, filtering, and return structure. However, it does not explicitly differentiate from the sibling 'list_resource_groups' beyond listing sizes, and it omits potential details like whether all groups are returned by default or if the filter affects only results. These 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 has zero description coverage for the 'rscgrp' parameter, so the description compensates by explaining it as 'filter by specific resource group name.' This adds meaning beyond the bare schema, though it could be more specific about pattern matching or case sensitivity.

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 purpose: 'List available resource groups and their sizes on Genkai.' It uses a specific verb ('List'), identifies the resource ('resource groups and their sizes'), and distinguishes itself from the sibling tool 'list_resource_groups' by explicitly mentioning sizes.

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 provides context for when to use this tool (to list resource groups with sizes) and how to filter with the 'rscgrp' parameter, but it does not explicitly compare against the sibling tool 'list_resource_groups'. No exclusions or alternatives are named, so the usage guidance is implied rather than explicit.

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

list_filesA

List files in a work directory.

directory: path to list (defaults to work_dir). pattern: glob pattern to filter filenames. Returns list of {path, name, is_dir} dicts.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternNo*
directoryNo
max_entriesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must disclose behavior fully. It states the return format (list of dicts with path, name, is_dir) and defaults for directory and pattern, which is useful. However, it omits mention of the max_entries parameter, does not explicitly state it is a read-only operation (though implied), and leaves ambiguity about whether directories are included despite 'list files' and the is_dir return field.

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 extremely concise, using only three lines to convey purpose, parameters, and return format. Every sentence adds value, and it is front-loaded with the purpose statement. This is an example of efficient writing.

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 and has an output schema, so the description does not need to explain return values more than it does. However, the missing max_entries explanation and lack of usage guidance make the description only partially complete for a tool with three parameters and zero schema descriptions.

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 has 0% description coverage, so the description must compensate. It explains directory and pattern meaningfully, but completely omits max_entries. This leaves one of three parameters undocumented, a clear gap in the description's ability to compensate for the missing schema descriptions.

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 'List files in a work directory' with a specific verb and resource. This distinguishes it from sibling tools like read_file (which reads file content) and list_jobs (which lists jobs). The scope is well-defined and unambiguous.

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. It does not mention exclusions, prerequisites, or contrast with sibling tools like read_file or list_jobs. The parameter explanations are more about syntax than usage context.

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

list_jobsA

List jobs for the current user.

history_days: include completed jobs from the past N days (max 90). rscgrp: filter by resource group name. Returns list of job dicts with keys: job_id, job_name, md, st, user, start_date, elapse_lim, node_require, vnode, core, v_mem.

ParametersJSON Schema
NameRequiredDescriptionDefault
rscgrpNo
history_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It discloses the return format (list of job dicts with specific keys), the max history_days value, and the filter behavior. It does not mention potential edge cases or permissions, but as a read-only listing tool, the core side-effect-free nature is clear.

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 concise and front-loaded: one clear purpose sentence followed by parameter and return information. Every sentence provides necessary information with no filler.

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 list tool, the description is nearly complete: it covers scope, parameters, and return keys. It does not mention pagination or error behavior, but the output schema likely covers return details. The only minor gap is not specifying whether the list is paginated or sorted.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully explains both parameters: history_days (include completed jobs from past N days, max 90) and rscgrp (filter by resource group name). This fully compensates for the schema's lack of description.

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 starts with a specific action and resource: 'List jobs for the current user.' This clearly distinguishes from sibling tools such as get_job_status (single job) or list_files, and it adds scope ('current user' and filter parameters).

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 provides context on what parameters affect the result (history_days, rscgrp), but it does not explicitly state when to use this tool over siblings like get_job_status or read_job_output. Usage is implied by the listing action, but no exclusions or alternatives are given.

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

list_resource_groupsB

List all known Genkai resource groups and their type (cpu/gpu/gpu_mig).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/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. It implies a read-only operation by using 'list', but it does not state that it is read-only, nor does it mention any side effects, authentication needs, or rate limits. It provides no additional behavioral context beyond the action itself.

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, concise sentence that front-loads the action ('List all known Genkai resource groups') and includes the key output detail (type). Every word earns its place, with no wasted content.

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 list tool with an output schema, the description is sufficient: it states the scope ('all known') and the output attribute (type). The output schema likely documents the return structure, so the description does not need to elaborate further. It is complete for its 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 tool has zero parameters, and the schema description coverage is 100% (empty schema). The description adds no parameter information, but none is needed. Given the baseline for 0 params is 4, the score reflects that the schema and description are fully aligned.

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 clearly states the tool lists all known Genkai resource groups and their type (cpu/gpu/gpu_mig). The verb 'list' and resource 'resource groups' are specific. However, it doesn't differentiate from the sibling tool 'get_resource_groups', so it lacks explicit sibling distinction.

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 like 'get_resource_groups'. There is no mention of prerequisites, context, or exclusions. The usage context is implied (discovery of available resource groups) but not articulated.

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

read_fileA

Read a text file from the Genkai filesystem.

Only files within work_dir are accessible. Returns {content, truncated, size_bytes}.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
max_bytesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses the access restriction (only work_dir), and the return fields including truncation flag. It omits error handling and encoding details, but for a read operation this is reasonably 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 three short, front-loaded sentences with no wasted words. Every sentence adds value: purpose, access scope, and return shape.

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?

Even though an output schema exists, the description explains return fields and access limits, which is helpful. It does not cover edge cases like file-not-found or binary files, but for a simple read_file tool the provided context is adequate.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain parameters. It partially clarifies file_path via the work_dir rule but never mentions max_bytes or how it relates to truncation. The return field 'truncated' indirectly hints, but it is not explicit enough.

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 ('Read') and resource ('text file from the Genkai filesystem'), and adds scope ('Only files within work_dir are accessible'). This clearly distinguishes it from siblings like list_files and read_job_output.

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 usage for reading text files within work_dir but does not explicitly state when to use this tool over alternatives (e.g., read_job_output) or provide exclusion criteria. The work_dir constraint offers context but no explicit guidance.

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

read_job_outputA

Read the stdout or stderr output file of a completed job.

Searches for output files by common PJM naming patterns: .out / .err STDIN.out / .err

Returns {content, truncated, path}.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
job_nameNo
work_dirNo
file_typeNostdout
max_bytesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden but only partially. It discloses that it searches by PJM naming patterns and returns {content, truncated, path}, but omits important behaviors such as what happens on missing files, how max_bytes affects truncation, and how work_dir influences the search.

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 compact and front-loaded: purpose, search patterns, and return shape. Every sentence provides useful information with no redundancy.

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 moderately complex tool with 5 parameters and no annotations, the description covers the main purpose and search logic but leaves gaps around work_dir scope and truncation behavior. It is adequate for basic selection but not fully complete for confident invocation in edge cases.

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 0%, so the description must compensate. It explains job_id and job_name through filename patterns and file_type through .out/.err, but work_dir and max_bytes semantics are not clarified beyond the mention of 'truncated' in the result object.

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 reads stdout or stderr output files of a completed job, with a specific verb and resource. The naming patterns further distinguish it from generic file-read sibling tools like read_file and list_files.

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?

It specifies use for completed jobs and shows the exact filename patterns searched, giving clear context for when to invoke. However, it does not explicitly mention alternatives or when not to use it, though sibling differentiation is strongly implied.

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

submit_jobA

Submit a batch job to the TCS/PJM scheduler on Genkai.

Provide the full job script content. Resource directives in the script take precedence over the parameters here. The parameters are ignored when the script already contains #PJM directives.

Returns: {"job_id": str, "message": str}

ParametersJSON Schema
NameRequiredDescriptionDefault
gpuNo
coresNo
elapseNo01:00:00
rscgrpNoa-batch-low
job_nameNo
join_stderrNo
script_contentYes
extra_pjm_directivesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses a non-obvious behavior: resource directives in the script override parameters, and parameters are ignored when #PJM directives exist. It also specifies the return type. It does not cover side effects like resource consumption, but the disclosure is solid.

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 two tight sentences plus a return-type line. It front-loads the purpose, gives the critical precedence note, and stops. Every sentence earns its place with no redundancy.

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?

Given the tool's complexity (8 parameters), the description provides the essential behavioral context and return format. The output schema exists, so return values are already structured. The main gap is lack of per-parameter details, but the precedence note is a critical piece that rounds out the overall picture.

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 0%, so the description must compensate. It explains the key parameter `script_content` and the general relationship between parameters and script directives, but it does not define individual parameters like `elapse` or `rscgrp`. The parameter names are somewhat self-explanatory, but the description only partially fills the gap.

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 action ('Submit a batch job'), the specific target ('TCS/PJM scheduler on Genkai'), and is distinct from all sibling tools. It uses a specific verb+resource pattern that leaves no ambiguity.

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?

Provides explicit usage context: 'Provide the full job script content' and states that script directives take precedence over parameters. However, it does not mention alternative tools like 'generate_job_template', so it lacks a direct when-to-use vs. alternatives comparison.

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. Dates show when Glama detected each change.

  1. 11 tool updatesv0.1.0
    • First observeddelete_job
    • First observedgenerate_job_template
    • First observedget_job_status
    • First observedget_quota_limits
    • First observedget_resource_groups
    • First observedlist_files
    • First observedlist_jobs
    • First observedlist_resource_groups
    • First observedread_file
    • First observedread_job_output
    • First observedsubmit_job

TDQS

A3.7/5.0
Disambiguation4/5

Most tools have distinct purposes: file operations, job lifecycle, and resource queries are clearly separated. However, list_resource_groups and get_resource_groups both list resource groups but with differing details, which could cause misselection.

Naming Consistency4/5

Tool names generally follow a consistent verb_noun pattern in snake_case, such as list_files, submit_job, delete_job. The overlap between list_resource_groups and get_resource_groups introduces slight inconsistency, but the overall pattern is predictable.

Tool Count5/5

Eleven tools is well within the ideal range for a domain-specific server covering file access and job management. Each tool serves a clear purpose without unnecessary bloat.

Completeness5/5

The surface covers the full job lifecycle: template generation, submission, listing, status check, output retrieval, and deletion. Additionally, resource group and quota queries address administrative needs. No obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    B
    maintenance
    An MCP server that enables LLMs to execute Python code on GPU-accelerated compute nodes within SLURM-managed HPC environments. It bridges local clients to remote clusters by launching JupyterLab sessions via SLURM jobs to facilitate high-performance notebook-based computation.
    7
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    An MCP server for monitoring and managing multi-cluster Slurm GPU jobs, enabling AI agents to execute commands, check allocations, and explore logs across HPC clusters.
    1
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for the Fugaku supercomputer that enables natural language job submission, monitoring, file transfer, and command execution via AI agents like Claude Code.
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/exthnet/tcs_mcp_claude'

If you have feedback or need assistance with the MCP directory API, please join our Discord server