Skip to main content
Glama

bjjgraph-mcp

A small local MCP server that lets Claude (Claude Code, Claude Desktop) look things up in BJJGraph — a directed graph of Brazilian Jiu-Jitsu positions (each with a top and bottom role), transitions, submissions, systems, principles and learning notes.

Ask things like "How do I get from half guard bottom to the back?" and Claude answers from the graph: routes, step-by-step execution, counters, common errors and defensive options.

IMPORTANT

This repository contains code only. It does not include BJJGraph data.

  • The code here is MIT-licensed (see LICENSE).

  • The BJJGraph data is © Diogo Seca and licensed under PolyForm Noncommercial 1.0.0. It is not included. Each user downloads it themselves with npm run fetch-data, and may use it for noncommercial purposes only, under that licence's terms.

  • Per its own README, BJJGraph content is produced with AI-assisted generation, and its probabilities are authored estimates that have not been validated by a panel of black belts. Treat it as a study aid, not ground truth.

This project is not affiliated with or endorsed by BJJGraph or its author.

Requirements

  • Node.js 20 or newer

  • About 45 MB of disk space for the downloaded data

Related MCP server: LLM Graph Builder MCP

Install

git clone https://github.com/hanwong/bjjgraph-mcp.git
cd bjjgraph-mcp
npm install        # also builds the server into dist/
npm run fetch-data # downloads BJJGraph's content JSON into data/bjjgraph.json

fetch-data downloads the BJJGraph repository archive from GitHub, keeps only content/**/*.json (positions, transitions, submissions, systems, principles, learning), and saves one bundle file in data/ (git-ignored). Downloaded files are only parsed as JSON — nothing from the download is extracted or executed. BJJGraph changes often; rerun npm run fetch-data any time to refresh. The server notices the new file automatically.

Options: npm run fetch-data -- --ref <branch-or-commit> and --out <file>. To use a BJJGraph checkout you already have, set BJJGRAPH_DATA to its folder (or to a bundle file).

Add to Claude Code

From inside the bjjgraph-mcp folder:

claude mcp add bjjgraph --scope user -- node "$(pwd)/dist/src/index.js"

Then run claude mcp list to confirm it shows bjjgraph: ... ✓ Connected.

Add to Claude Desktop

Open Settings → Developer → Edit Config (this opens claude_desktop_config.json) and add the server, using the absolute path to your clone:

{
  "mcpServers": {
    "bjjgraph": {
      "command": "node",
      "args": ["/absolute/path/to/bjjgraph-mcp/dist/src/index.js"]
    }
  }
}

Restart Claude Desktop.

Tools

Tool

What it does

bjj_search

Fuzzy search by name or alias across positions, transitions, submissions, systems, principles and learning notes. Partial names and typos work; common Korean terms (하프가드, 백, 암바…) are translated.

bjj_get_technique

Full detail for a transition or submission: outcomes and probabilities, conditions, key principles, setup, execution steps, counters, common errors, training progressions, defender cues and options, variants, safety, clips. Filter with sections and perspective.

bjj_get_position

A position for the top and/or bottom role: overview, properties and metrics, principles, decision tree, errors, drills, technique menu, clips.

bjj_position_options

What can be attempted from a position and role, most common first, with where each outcome leads.

bjj_find_paths

A few shortest routes between two positions using only successful outcomes, with the techniques for each step. The goal can also be a submission (e.g. "Armbar").

bjj_list

Lists systems, principles, learning notes, positions or submission families.

bjj_get_concept

Full content of a system, principle or learning note.

bjj_about

Loaded data version (commit, date, counts), how to refresh, licence.

Long results are paged (page, max_chars; default 6,000 characters) so they don't flood the conversation.

Roles. States are written Position/Role, from the point of view of whoever does the technique: Back Control/Top means you have the back; Half Guard/Bottom means you are playing half guard.

Example questions

  • "How do I get from half guard bottom to back control?"

  • "What can I do from closed guard bottom in no-gi?"

  • "Show me the execution steps and common errors for the Kimura Sweep."

  • "How do I defend the triangle? Give me the defender's recognition cues."

  • "Find a route from side control bottom to mount top."

  • "Which principles does BJJGraph list? Explain Pressure."

  • "What systems are there for half guard?"

Development

npm test            # builds, then runs tests against a tiny made-up fixture (test/fixture)
npm run check-data  # sanity checks every tool and entry against your downloaded data

한국어 안내

Claude(Claude Code, Claude Desktop)가 BJJGraph의 주짓수 포지션·기술·서브미션·시스템·원리를 찾아볼 수 있게 해 주는 로컬 MCP 서버입니다. 예를 들어 "하프가드에서 백까지 가는 방법 알려줘"라고 물으면, 그래프에서 경로와 단계별 실행 방법, 카운터, 흔한 실수를 찾아 답합니다.

설치

git clone https://github.com/hanwong/bjjgraph-mcp.git
cd bjjgraph-mcp
npm install
npm run fetch-data
claude mcp add bjjgraph --scope user -- node "$(pwd)/dist/src/index.js"

BJJGraph 데이터는 자주 갱신되니, 가끔 npm run fetch-data를 다시 실행하면 최신 데이터로 바뀝니다.

꼭 알아 두세요

  • 이 저장소의 코드는 MIT 라이선스입니다.

  • BJJGraph 데이터는 © Diogo Seca, PolyForm Noncommercial 1.0.0 라이선스이며 이 저장소에 포함되어 있지 않습니다. 각자 npm run fetch-data로 내려받으며, 비상업적 용도로만 쓸 수 있습니다.

  • BJJGraph 내용은 상당 부분 AI의 도움으로 만들어졌고, 확률은 작성자가 정한 추정치입니다(블랙벨트 검증 전). 공부 보조 자료로만 쓰고, 정답으로 받아들이지 마세요.

Available Tools

8 tools
bjj_aboutAbout the dataB
Read-only

Which BJJGraph version is loaded (commit, fetch date, counts), how to refresh it, and the data licence.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered and the description correctly does not claim any mutation. It adds useful context by saying the response contains commit hash, fetch date, counts, and licence, which the agent cannot learn elsewhere since there is no output schema. However, 'how to refresh it' is ambiguous about whether the tool returns refresh instructions or performs a refresh, and no caching/staleness behaviour is disclosed.

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?

A single sentence with no filler, and the most important element (version identity) is front-loaded. The only weakness is the fragmentary opening and the slightly vague trailing clause about refreshing.

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-argument, read-only metadata tool with no output schema, the description covers the essentials: what is reported (version, fetch date, counts, licence) and a hint at refresh guidance. It is close to complete; a sentence clarifying that the tool only reports and does not trigger a refresh would close the remaining gap.

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 takes zero parameters, which is the baseline-4 case; there is nothing parameter-wise for the description to explain. It does not mislead about inputs, and calling it requires no arguments.

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 names the resource (BJJGraph version metadata) and enumerates the specific contents: commit, fetch date, counts, and data licence. That is enough to distinguish it from the seven sibling tools, all of which retrieve graph content rather than environment metadata. It is phrased as a sentence fragment, but the intent is 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?

There is no explicit statement of when an agent should call this tool versus just proceeding with bjj_search or bjj_get_technique. The phrase 'how to refresh it' hints at a diagnostic/provenance use case, but the description never says to check this before trusting counts, nor that it is optional context. Usage is only weakly implied.

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

bjj_find_pathsFind paths between positionsA
Read-only

Finds a few shortest routes from one position to another using only successful technique outcomes (e.g. Half Guard bottom → Back Control top). Each step lists the techniques that achieve it. The target may also be a submission (e.g. "Armbar"): routes then end at a position where it can be attempted.

NameRequiredDescriptionDefault
toYesGoal position (e.g. "Back Control/Top") or a submission name.
fromYesStart position, e.g. "Half Guard" or "Half Guard/Bottom".
rulesetNoRuleset for probabilities (default gi).
to_roleNoYour role at the goal (default: as in name, else both; top = you control).
from_roleNoYour role at the start (default: as in name, else both).
max_pathsNoHow many routes (default 3).
max_stepsNoMax steps per route (default 5).
techniques_per_stepNoTechniques listed per step (default 3).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds real behavioral context beyond them: routes are restricted to successful technique outcomes only, and when the target is a submission the routes terminate at a position where it can be attempted rather than at the submission itself. That is exactly the kind of semantic quirk the schema cannot express.

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?

Three tight sentences, front-loaded with the core action, then the output shape, then the submission special case. Minor deduction: "a few" is vaguer than necessary when max_paths has a documented default of 3.

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?

With no output schema, the description steps up by sketching the return shape (each step lists the techniques that achieve it) and the semantics of the submission-target mode. It does not mention path ranking/ordering or what happens when no route exists, which are the remaining gaps for a search tool.

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?

Schema coverage is 100%, so the baseline is 3. The description goes slightly beyond it by demonstrating the accepted position string form, including role notation ("Half Guard bottom → Back Control top"), and by clarifying that the `to` value may be a submission name — a non-obvious dual-mode input the schema only hints at.

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?

States a specific verb and resource: "Finds a few shortest routes from one position to another using only successful technique outcomes." The parenthetical example (Half Guard bottom → Back Control top) makes the domain concrete, and the sibling set (search, get_technique, get_position, position_options) has no other path-finding tool, so it 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?

Usage is implied by the description — call it when you want routes between two positions — but there is no explicit when/when-not guidance or comparison to siblings like bjj_position_options or bjj_search, which an agent could plausibly choose instead. The submission-target case is the only conditional rule given.

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

bjj_get_conceptGet system, principle or learning noteA
Read-only

Full content of a system (game plan, with study guide and sources), a principle (component skills, decision framework, errors, training approaches) or a learning note.

NameRequiredDescriptionDefault
nameYesName, e.g. "Pressure", "10th Planet Half Guard Bottom System".
pageNoPage number for long results (default 1).
typeNoRestrict to one kind.
max_charsNoMax characters per page (default 6000).

TDQS

A3.7/5.0
Behavior3/5

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

The annotations already establish that this is a safe read-only operation against a closed knowledge base. The description adds useful context about the content returned for each concept type, but it does not explain pagination behavior or response format beyond implying that results may be long.

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 front-loaded sentence that identifies the tool's scope immediately and uses its parenthetical details to clarify the three concept categories. Every clause contributes useful information without repetition.

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 read-only retrieval tool with a fully described schema and no output schema, the description gives enough information about what content is returned. It omits explicit pagination details, but page and max_chars are documented in the schema, so the remaining gap is minor.

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?

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining what the system, principle, and learning note categories contain, which helps an agent choose the appropriate type filter rather than just reading the enum values.

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 states a specific retrieval action and names the three concept categories it returns: system, principle, and learning note. It clearly distinguishes concept content from the sibling retrieval tools by describing what kinds of resources are covered, though it does not explicitly contrast those siblings by name.

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 phrase 'Full content' implies this tool should be used to retrieve details after a broader search or listing, but it does not explicitly say when to use this versus bjj_search, bjj_list, bjj_get_technique, or bjj_get_position. Usage is inferable from the description, but not fully routed.

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

bjj_get_positionGet position detailB
Read-only

Detail for one position, for the top and/or bottom role: overview, state properties and metrics, key principles, decision tree, common errors, drills, the technique menu with attempt weights, related positions and clips.

NameRequiredDescriptionDefault
nameYesPosition name, e.g. "Half Guard", "Back Control" (a "/Top" or "/Bottom" suffix also works).
pageNoPage number for long results (default 1).
roleNoWhich role(s) to show (default both).
sectionsNoOnly include these sections (default all).
max_charsNoMax characters per page (default 6000).

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds useful return-content detail, but it does not disclose pagination/truncation behavior despite supporting page and max_chars parameters.

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 that lists the returned sections without obvious filler. It is dense but appropriately sized, though the long colon-delimited list makes it slightly run-on.

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 full schema coverage and useful annotations, the description supplies the missing return-content picture by naming the detail sections and attempt weights. It omits pagination/default behavior, but that is documented in the schema, leaving only a minor gap.

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 name, role, sections, page, and max_chars. The description repeats the role and section concepts but adds no syntax or defaults beyond what the schema provides.

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 identifies the resource as one BJJ position and enumerates the detail returned (overview, principles, decisions, drills, menu, related positions, clips). It is specific enough to distinguish this as a detail-retrieval tool, but it does not explicitly differentiate itself from siblings such as bjj_get_technique or bjj_position_options.

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 explicit guidance on when to use this tool versus bjj_position_options, bjj_search, or bjj_get_technique. Usage is only implied by 'Detail for one position,' with no exclusions or alternative-routing instructions.

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

bjj_get_techniqueGet technique detailA
Read-only

Full detail for one transition or submission: outcomes and probabilities, conditions, key principles, setup, execution steps, common counters, common errors, training progressions, defender recognition cues / defensive options / escapes, variants, related content, safety and video clips. Use sections to fetch only what you need.

NameRequiredDescriptionDefault
nameYesTechnique name, e.g. "Kimura Sweep" or "Armbar from Mount".
pageNoPage number for long results (default 1).
sectionsNoOnly include these sections (default all). 'defense' = recognition cues, defensive options, escapes.
max_charsNoMax characters per page (default 6000).
perspectiveNoWhose side to show (default both).

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds what categories of content exist (outcomes, probabilities, counters, safety, clips), but says nothing about pagination behavior, defaults, or output size limits beyond the schema's page/max_chars fields. No annotation contradiction.

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?

Front-loaded with the core purpose ('Full detail for one transition or submission'), followed by a compact enumeration of what is included and one practical tip. No wasted framing, though the long section list is slightly dense.

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?

All five parameters are documented, annotations cover safety, and there is no output schema to explain. The description tells the agent what content areas exist and how to narrow retrieval via `sections`, which is enough to call it correctly. Minor gap: no explicit mention of how page and max_chars interact for long results, though the schema covers the basics.

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 name, page, sections enum, max_chars, and perspective. The description reinforces the meaning of `sections` ('fetch only what you need') and lists returned content categories, but adds no format, ordering, or interaction details beyond the schema. Baseline 3 is appropriate.

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 and resource: 'Full detail for one transition or submission', and enumerates the content categories returned. It is clearly distinguishable from list/search siblings by implication, but never names a sibling or explicitly contrasts scope.

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 only usage guidance is 'Use `sections` to fetch only what you need', which is a tuning tip rather than when-to-use-this-vs-alternatives guidance. There is no explicit exclusion or routing cue relative to bjj_search, bjj_get_position, or bjj_find_paths.

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

bjj_listList BJJGraph entriesA
Read-only

Lists entries of one kind with a one-line summary: systems (game plans / courses), principles, learning notes, positions or submission families. Optional text filter.

NameRequiredDescriptionDefault
typeYesWhat to list. 'submission' lists family hubs.
limitNoMax entries (default 50).
filterNoOnly entries whose name or summary contains this text.
offsetNoSkip this many (paging).

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety and scope are covered structurally. The description adds that results include a 'one-line summary,' which is useful behavioral context beyond the schema. It does not describe pagination behavior or other operational details, so the added value is modest.

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 with no wasted words. The core listing behavior is front-loaded, followed by the optional filter note, making it easy to scan.

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

Completeness5/5

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

Given the rich schema, annotations, and the absence of an output schema, the description provides enough context: it names the supported kinds, says results are one-line summaries, and mentions the optional filter. No critical calling information is missing.

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?

Schema description coverage is 100%, so the baseline is 3. The description adds semantic clarity for the 'type' values by mapping 'system' to game plans/courses and 'submission' to submission families, going beyond the enum labels even though the schema already documents the parameters.

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 states a specific verb and resource: 'Lists entries of one kind with a one-line summary.' It also enumerates the supported entry kinds, making the tool's purpose clear. It does not explicitly contrast itself with siblings like bjj_search or bjj_get_technique, so it falls short of full sibling differentiation.

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 usage is implied by the required 'type' parameter and the phrase 'Lists entries of one kind,' so an agent can infer this is the browsing/list tool. However, the description gives no explicit guidance on when to use this instead of bjj_search or the get tools, and no alternatives or exclusions are named.

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

bjj_position_optionsWhat can I do from here?A
Read-only

Lists the transitions and submissions that can be attempted from a position in a given role, most commonly attempted first, with success rate and where each outcome (success / failure / counter) leads.

NameRequiredDescriptionDefault
roleNotop or bottom (default: both, or the role in the name).
typeNoFilter by kind (default all).
limitNoMax techniques per role (default 25).
offsetNoSkip this many (paging).
rulesetNoRuleset for probabilities (default gi).
positionYesPosition name, e.g. "Half Guard" or "Half Guard/Bottom".

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint=false, so the description's job is to add context beyond safety. It does: results are ordered by most-commonly-attempted first, each entry carries a success rate, and each outcome maps to where it leads (success/failure/counter). No auth, rate-limit, or paging behavior is discussed, but the substantive output semantics are disclosed.

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?

One dense sentence with no filler, front-loaded with the verb and resource. It is slightly run-on because the output contract (ordering, success rate, outcome destinations) is packed into the same sentence, but every clause carries 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?

There is no output schema, so the description must describe results, and it does: ordering, success rate, and outcome destinations. With 100% schema coverage on the six (mostly optional) parameters, the gaps are minor — nothing states that role defaults to both or that the position string can encode a slash-suffixed role, though the schema examples cover that.

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% and enums document role, type, and ruleset, so the schema carries the parameter burden. The description's only added semantics are 'in a given role' and the ordering of results; it does not explain how ruleset affects probabilities or how limit interacts with roles. Baseline 3 applies.

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 and resource: lists transitions and submissions available from a position in a given role. The scope is clearly narrower than a position lookup (bjj_get_position) or a search (bjj_search). It never names a sibling explicitly, so sibling differentiation is only inferable from the scope wording.

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?

Usage is implied by the title 'What can I do from here?' and by the phrase 'from a position in a given role', which suggests pairing with a position lookup. There are no explicit when-to-use/when-not statements and no reference to alternatives such as bjj_get_position or bjj_find_paths, so the agent must infer the routing.

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. 8 tool updatesv0.1.0
    • First observedbjj_about
    • First observedbjj_find_paths
    • First observedbjj_get_concept
    • First observedbjj_get_position
    • First observedbjj_get_technique
    • First observedbjj_list
    • First observedbjj_position_options
    • First observedbjj_search

TDQS

A3.7/5.0

Scored across 8 tools

Disambiguation4/5

Each tool targets a fairly distinct resource+action: search (fuzzy across all), list (enumerate one kind), get_technique/get_position/get_concept (detail per entity type), position_options (menu for a role), find_paths (routing), about (metadata). The closest pair is bjj_list vs bjj_search and bjj_position_options vs bjj_get_position, but the descriptions make the boundaries clear enough that an agent should pick correctly.

Naming Consistency4/5

All tools share the bjj_ prefix and snake_case, with a mostly predictable verb-first pattern (search, list, get_technique, get_position, get_concept, find_paths) plus two noun-ish outliers (position_options, about). Minor deviation but highly readable.

Tool Count5/5

Eight tools is well-scoped for a read-only knowledge graph: retrieval by search, enumeration, per-entity detail, position menus, pathfinding, and metadata. No obvious redundancy or missing bulk operations that would warrant extra tools.

Completeness4/5

The surface covers discovery (search/list), drill-down (get_technique/get_position/get_concept), role-based options, and navigation (find_paths), plus version metadata. Minor gaps like no explicit reverse lookup (e.g. techniques that end in a position) or bulk compare are workaroundable via search and find_paths.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables Claude to search, query, and interact with an Enterprise Knowledge Management System (EKMS). Supports semantic search, knowledge recommendations, relationship graphs, and feedback recording for enterprise knowledge bases.
    7
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude to automatically extract entities and relationships from URLs, PDFs, and YouTube videos to build structured knowledge graphs in Neo4j. It supports custom schemas, academic citation extraction, and community detection for advanced research and content analysis.
    Apache 2.0
  • F
    license
    A
    quality
    D
    maintenance
    Automatically organizes and merges learned CS knowledge into a graph structure using Claude for entity/relation extraction and SQLite for storage, with tools for ingestion, querying, merging, and managing nodes and edges.
    6
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude to intelligently analyze and query codebases using knowledge graphs, supporting natural language code search, relationship discovery, and incremental updates.
    11
    -