2,000+ factory service manuals for Japanese cars and Jeep: DTCs, repair pages, wiring diagrams.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Find the service manual for a car. Accepts how people describe it: brand, model name, year, chassis code, engine or transmission code, e.g. "2004 Sentra 1.8", "B15", "QG18DE", "Mazda 3". Returns manuals best match first, factory service manuals before owner's manuals; pass a result's 'manual' to search / lookup_dtc / get_contents. A manual is one book: 'title', 'type' (service, wiring, body, owners, features, parts, bulletins, accessory, brochure, article, aftermarket; '' if unknown), 'format' (pdf / html) and 'lang' say which; only English books are searchable. A year folder's books share the folder: pass the folder ("Japan/Subaru/Forester/2008") as 'manual' to search them all. A result with a 'file' is one book among the loose files of a model folder: read it with read_pages(file, page) or get_contents(manual, file); search and lookup_dtc on its 'manual' cover that whole folder. A 17-character VIN or a Japanese frame number ("JZX100-0012345") is read as make, chassis code and year; the results then say how under 'read_as'. An engine or transmission code finds the books that print it, also written short or without hyphens ("k24" -> K24A3, "1jzgte" -> 1JZ-GTE); 'read_as' then says what it is ("K24: Honda engine (K24A1, K24A3 ...)").
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http jdmfsm https://jdmfsm.info/mcp
Find the service manual for a car. Accepts how people describe it: brand, model name, year, chassis code, engine or transmission code, e.g. "2004 Sentra 1.8", "B15", "QG18DE", "Mazda 3". Returns manuals best match first, factory service manuals before owner's manuals; pass a result's 'manual' to search / lookup_dtc / get_contents. A manual is one book: 'title', 'type' (service, wiring, body, owners, features, parts, bulletins, accessory, brochure, article, aftermarket; '' if unknown), 'format' (pdf / html) and 'lang' say which; only English books are searchable. A year folder's books share the folder: pass the folder ("Japan/Subaru/Forester/2008") as 'manual' to search them all. A result with a 'file' is one book among the loose files of a model folder: read it with read_pages(file, page) or get_contents(manual, file); search and lookup_dtc on its 'manual' cover that whole folder. A 17-character VIN or a Japanese frame number ("JZX100-0012345") is read as make, chassis code and year; the results then say how under 'read_as'. An engine or transmission code finds the books that print it, also written short or without hyphens ("k24" -> K24A3, "1jzgte" -> 1JZ-GTE); 'read_as' then says what it is ("K24: Honda engine (K24A1, K24A3 ...)").
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string |
{
"type": "object",
"title": "find_manualsArguments",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 8
},
"query": {
"type": "string",
"title": "Query"
}
}
}List the files (sections) of a manual with what each covers, page counts and links. With 'file' (its full path, or its name within 'manual'), list that file's bookmarks (its own table of contents) instead.
| Argument | Type | Description |
|---|---|---|
| file | any | |
| manual* | string |
{
"type": "object",
"title": "get_contentsArguments",
"required": [
"manual"
],
"properties": {
"file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "File",
"default": null
},
"manual": {
"type": "string",
"title": "Manual"
}
}
}Look up a diagnostic trouble code (P0340, C1105, U1000, or an old Nissan blink code like 34) in one car's manual and return where its diagnosis starts: page, title, and the parent bookmarks ('within'). A manual covering several engines or systems has one diagnosis per variant, so check 'within' (e.g. "QG18DE" vs "QR25DE") against the car. 'manual' is required: a manual from find_manuals, or its model folder to cover all years (listed newest year first).
| Argument | Type | Description |
|---|---|---|
| code* | string | |
| limit | integer | |
| manual* | string |
{
"type": "object",
"title": "lookup_dtcArguments",
"required": [
"code",
"manual"
],
"properties": {
"code": {
"type": "string",
"title": "Code"
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 40
},
"manual": {
"type": "string",
"title": "Manual"
}
}
}Render one PDF page as a PNG image: use it for wiring diagrams, connector pin views, exploded views and tables that read poorly as text. Returns a short text part first (the page link, its heading and text) and then the image. If no image reaches you, your client does not pass images on: use the text, and give the user the link to see the page; asking again will not help. format="pdf" returns the page as a one-page PDF instead of the image (for clients that read PDFs but not images; ChatGPT gets it by default).
| Argument | Type | Description |
|---|---|---|
| file* | string | |
| page* | integer | |
| zoom | number | |
| format | string |
{
"type": "object",
"title": "page_imageArguments",
"required": [
"file",
"page"
],
"properties": {
"file": {
"type": "string",
"title": "File"
},
"page": {
"type": "integer",
"title": "Page"
},
"zoom": {
"type": "number",
"title": "Zoom",
"default": 1.6
},
"format": {
"type": "string",
"title": "Format",
"default": "png"
}
}
}Read the text of 'count' pages (max 6) of a file, starting at 'page' (1-based).
| Argument | Type | Description |
|---|---|---|
| file* | string | |
| page* | integer | |
| count | integer |
{
"type": "object",
"title": "read_pagesArguments",
"required": [
"file",
"page"
],
"properties": {
"file": {
"type": "string",
"title": "File"
},
"page": {
"type": "integer",
"title": "Page"
},
"count": {
"type": "integer",
"title": "Count",
"default": 2
}
}
}Look up components, systems and jobs in one car's manual index, e.g. "timing chain", "camshaft position sensor", "a/t fluid", "spark plug", "brake caliper". 'manual' is required: a manual from find_manuals, or its model folder to cover all years. The query is split into the manual's index terms; pages holding all of them come first, and pages where a bookmark names a term (where the manual's own index would point) rank above passing mentions. An abbreviation the manual doesn't use is read as the term it does ("bsm" -> "blind spot"), and "timing" alone (or "timing diagram", "timing marks") as the timing chain/belt job, both shown under 'read_as'. Words not in the index are listed under 'not_indexed' with index terms that start the same way; an engine code the manual doesn't cover (engine, transmission, chassis or model) is listed under 'not_here' with the codes of that kind the manual does cover and the model folders whose manuals print it. Only English text is indexed; a book in another language is listed by get_contents and read_pages reads it.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | |
| manual* | string |
{
"type": "object",
"title": "searchArguments",
"required": [
"query",
"manual"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 8
},
"query": {
"type": "string",
"title": "Query"
},
"manual": {
"type": "string",
"title": "Manual"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 14, 2026.