MCPサーバー

@imqueue

org.imqueue/mcp

このMCPでできること

Searches @imqueue documentation and package metadata and generates read-only scaffolds for typed clients and services.

get_doc
Read an @imqueue doc page
Fetch the markdown of an @imqueue documentation page by its URL (as returned by search_docs). Returns plain markdown suitable for reading and quoting. Pass a URL with a #fragment — which is what search_docs returns for a section result — to get just that section plus the heading path above it; pass the URL without one to read the whole page. Only imqueue.org (framework docs) and imqueue.com (licensing, pricing, support) URLs are fetched; anything else is refused. Very large pages are truncated, which the result reports.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'An imqueue.org or imqueue.com page URL, e.g. https://imqueue.org/get-started/'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['url', 'markdown', 'mimeType', 'bytes', 'truncated'], 'properties': {'url': {'type': 'string', 'description': 'The markdown mirror actually fetched — not always the URL passed in, which is why it is worth returning'}, 'bytes': {'type': 'integer', 'description': 'Size of the page body, so a caller can decide before reading it'}, 'section': {'type': 'object', 'required': ['heading', 'ancestors', 'index', 'total'], 'properties': {'index': {'type': 'integer', 'description': "1-based position among the page's indexed sections"}, 'total': {'type': 'integer', 'description': 'How many indexed sections the page has, so a caller can see what it did not read'}, 'heading': {'type': 'string', 'description': "The section's own heading"}, 'ancestors': {'type': 'array', 'items': {'type': 'string'}, 'description': "Headings above it, outermost first — the path that says which 'Verify' this is"}}, 'description': 'Present when a #fragment resolved to one section — markdown is that section, not the page', 'additionalProperties': False}, 'markdown': {'type': 'string', 'description': 'The page body — the same text carried in content, minus the heading path prefix'}, 'mimeType': {'type': 'string', 'description': 'Media type of the page body carried in markdown and content'}, 'truncated': {'type': 'boolean', 'description': 'True when the page was too large to return whole — markdown holds the leading part only'}, 'fragmentMiss': {'type': 'object', 'required': ['anchor', 'available'], 'properties': {'anchor': {'type': 'string', 'description': 'The #fragment that was asked for and not found'}, 'available': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Anchors the page does index, for a retry'}}, 'description': 'Present when a #fragment matched no indexed section — markdown is the WHOLE page, not the slice that was asked for', 'additionalProperties': False}}, 'additionalProperties': False}
list_packages
List @imqueue packages
The complete, authoritative catalogue of documented @imqueue packages, each with its current version, licence, minimum Node version, a one-line summary and its exact install command. Call this BEFORE adding any @imqueue dependency: search_docs can only find a package you already suspect exists, and this is the list. Covers typed RPC over a message queue, the Redis queue engine, the `imq` CLI, jobs and scheduling, Prisma and Sequelize database toolkits, method caching, tag-invalidated caching, PostgreSQL LISTEN/NOTIFY, Zod validation, OpenTelemetry or Datadog tracing, async logging, GraphQL N+1 batching across services, CIDR/IP checks and HTTP rate limiting. Some pairs are mutually exclusive — pg-prisma vs pg-sequelize, opentelemetry vs datadog — and installing both of a pair breaks silently, so read the `pick` rule on those entries before choosing. For one package's release history, links and the framework-wide Node and Redis requirements, use package_status.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
出力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['packages'], 'properties': {'packages': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'install', 'summary'], 'properties': {'name': {'type': 'string'}, 'node': {'type': ['string', 'null'], 'description': 'engines.node, or null where the package declares no floor of its own'}, 'pick': {'type': 'string', 'description': 'Present only where two packages cover similar ground: the rule for choosing between them'}, 'install': {'type': 'string', 'description': 'The exact install command, including -g where the package is a CLI'}, 'license': {'type': 'string', 'description': 'SPDX identifier of the published package'}, 'summary': {'type': 'string'}, 'version': {'type': 'string', 'description': 'Highest published release. Absent only if the status feed was unreachable'}, 'released': {'type': 'string', 'description': 'Publication date of `version`, as YYYY-MM-DD'}, 'deprecated': {'type': 'boolean'}}, 'additionalProperties': False}, 'description': 'Ordered by what to reach for first'}, 'framework': {'type': 'object', 'required': ['license', 'licenseNote', 'node', 'redis', 'commercial'], 'properties': {'node': {'type': 'string', 'description': 'The Node version the framework as a whole requires'}, 'redis': {'type': 'string'}, 'license': {'type': 'string'}, 'commercial': {'type': 'string', 'description': 'Where to get a licence for closed-source distribution'}, 'licenseNote': {'type': 'string', 'description': 'The licence terms in a sentence, including what the SPDX id alone does not say'}}, 'additionalProperties': False}, 'factsUnavailable': {'type': 'boolean', 'description': 'True when imqueue.org/status.json could not be read, so no entry carries a version or licence. The catalogue itself is compiled in and still complete'}}, 'additionalProperties': False}
local_install_guide
How to install the @imqueue MCP server locally
Return the setup instructions for running the full @imqueue MCP server on your own machine. The local server adds the CLI-backed tools, which act on your project files and running services and so cannot be offered by a hosted server. Returns instructions only — it installs nothing.
読み取り専用 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
出力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['claudeCodeCommand', 'clientConfig'], 'properties': {'clientConfig': {'type': 'object', 'required': ['mcpServers'], 'properties': {'mcpServers': {'type': 'object', 'required': ['imqueue'], 'properties': {'imqueue': {'type': 'object', 'required': ['command', 'args'], 'properties': {'args': {'type': 'array', 'items': {'type': 'string'}}, 'command': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'description': "Drop into an MCP config file as-is. VS Code and Visual Studio use `servers` with type:'stdio' instead of `mcpServers`.", 'additionalProperties': False}, 'claudeCodeCommand': {'type': 'string', 'description': 'One-liner for Claude Code'}}, 'additionalProperties': False}
package_status
@imqueue package versions and licences
The current version, licence, minimum Node version and last release date of any published @imqueue package — or of all of them. Use it when the user asks which version of an @imqueue package is current, what licence it is under, or which Node or Redis version it needs. Covers every published package, including @imqueue/cli and @imqueue/mcp, and also returns the framework-wide licence, Node and Redis requirements, with a `licenseNote` that states the licence terms in a sentence. The facts are read from the npm registry by imqueue.org, and the result says when. Pass `package` for one entry, with or without the @imqueue/ scope; omit it for all of them.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'package': {'type': 'string', 'description': "One package, with or without the scope: 'rpc', '@imqueue/rpc'. Omit for every package."}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['framework', 'packages', 'generated', 'source'], 'properties': {'source': {'type': 'string'}, 'packages': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'scoped', 'version', 'license', 'node', 'released', 'firstRelease', 'releases', 'majors', 'deprecated', 'install', 'docs', 'npm', 'repo', 'summary'], 'properties': {'npm': {'type': 'string'}, 'docs': {'type': 'string'}, 'name': {'type': 'string'}, 'node': {'type': ['string', 'null']}, 'repo': {'type': 'string'}, 'majors': {'type': 'array', 'items': {'type': 'number'}}, 'scoped': {'type': 'string'}, 'install': {'type': 'string'}, 'license': {'type': 'string'}, 'summary': {'type': 'string'}, 'version': {'type': 'string'}, 'released': {'type': 'string'}, 'releases': {'type': 'number'}, 'deprecated': {'type': 'boolean'}, 'firstRelease': {'type': 'string'}}, 'additionalProperties': False}}, 'framework': {'type': 'object', 'required': ['license', 'licenseNote', 'commercial', 'node', 'redis'], 'properties': {'node': {'type': 'string'}, 'redis': {'type': 'string'}, 'license': {'type': 'string'}, 'commercial': {'type': 'string'}, 'licenseNote': {'type': 'string'}}, 'additionalProperties': False}, 'generated': {'type': 'string', 'description': 'When the site last read these facts from the npm registry'}}, 'additionalProperties': False}
scaffold_client
Scaffold an @imqueue typed client
READ-ONLY: returns text and writes nothing to disk, and does NOT run the command it shows you. Explains how to generate and use the fully-typed client for an @imqueue service: @imqueue generates the real client from a running service via `imq client generate`, so this returns that exact command plus an illustrative usage snippet. The generated file exports a single namespace holding the client class, so the import shape is not the obvious one — take it from `namespace` rather than guessing. Use generate_client (local install only) if you want the command actually run.
読み取り専用 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['service'], 'properties': {'methods': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Method name'}, 'params': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type'], 'properties': {'name': {'type': 'string'}, 'type': {'type': 'string', 'description': "TypeScript type, e.g. 'string' or 'number[]'"}, 'optional': {'type': 'boolean', 'description': 'Mark the parameter optional. @expose() publishes required parameters as mandatory, so callers of the generated client must pass a value for every non-optional one — set this for any parameter a caller may legitimately skip.'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'returns': {'type': 'string', 'description': "TypeScript return type WITHOUT Promise<> — e.g. 'User' or 'string'"}, 'description': {'type': 'string', 'description': 'What the method does'}}, 'additionalProperties': False}, 'description': 'Known methods (used to shape the example call)'}, 'service': {'type': 'string', 'description': "The service to call, e.g. 'user' or 'UserService'"}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['service', 'client', 'namespace', 'generateCommand', 'output', 'example'], 'properties': {'client': {'type': 'string', 'description': 'Generated client class name'}, 'output': {'type': 'string', 'description': 'The file that command writes (a compiled .js lands beside it)'}, 'example': {'type': 'object', 'required': ['language', 'content'], 'properties': {'content': {'type': 'string'}, 'language': {'type': 'string'}}, 'description': 'An illustrative call — not a file to write', 'additionalProperties': False}, 'service': {'type': 'string'}, 'namespace': {'type': 'string', 'description': 'The ONLY export of the generated file: a namespace holding the client class. Import this, then `new <namespace>.<client>()` — importing the class directly does not resolve.'}, 'generateCommand': {'type': 'string', 'description': 'Run against the RUNNING service to emit the real typed client'}}, 'additionalProperties': False}
scaffold_service
Scaffold an @imqueue service
READ-ONLY: returns generated source code as text and writes nothing to disk, creates no project and runs no command. Generates an idiomatic @imqueue/rpc service (an IMQService subclass with @expose()d, JSDoc-typed methods) plus a bootstrap that starts it. Provide the methods you want, or omit them for a starter template. Any non-primitive parameter or return type also gets a types.ts with the required @classType()/@property() declarations — without those the generated client types it `any`, which compiles. Use create_service (local install only) if you want files actually written.
読み取り専用 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': "Service name, e.g. 'user' or 'UserService'"}, 'methods': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Method name'}, 'params': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type'], 'properties': {'name': {'type': 'string'}, 'type': {'type': 'string', 'description': "TypeScript type, e.g. 'string' or 'number[]'"}, 'optional': {'type': 'boolean', 'description': 'Mark the parameter optional. @expose() publishes required parameters as mandatory, so callers of the generated client must pass a value for every non-optional one — set this for any parameter a caller may legitimately skip.'}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'returns': {'type': 'string', 'description': "TypeScript return type WITHOUT Promise<> — e.g. 'User' or 'string'"}, 'description': {'type': 'string', 'description': 'What the method does'}}, 'additionalProperties': False}, 'description': 'Methods to expose'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['service', 'install', 'files', 'types', 'cliAlternative'], 'properties': {'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'language', 'content'], 'properties': {'path': {'type': 'string'}, 'content': {'type': 'string'}, 'language': {'type': 'string'}}, 'additionalProperties': False}}, 'types': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Complex types the signatures refer to. Each needs @classType() on the class and @property() on every field — types.ts declares them; complete the fields. Empty when every type is a primitive.'}, 'install': {'type': 'string'}, 'service': {'type': 'string', 'description': "Class name used, after normalisation ('user' -> 'UserService')"}, 'cliAlternative': {'type': 'string', 'description': 'The CLI command that creates a full provider-wired project instead'}}, 'additionalProperties': False}
search_docs
Search @imqueue documentation
Search the official @imqueue docs (guides, tutorial, CLI manual, articles) and every exported symbol of every @imqueue package that publishes a generated API reference, returning the most relevant pages with their URLs. Each result names the package it belongs to. Takes a plain question or an exact symbol name such as 'RedisQueue.send', 'PgPubSub.listen' or 'watcherCheckDelay'. Answers 'how do I do X in @imqueue' and confirms a signature before code is written against it. Every result carries the page URL, which get_doc reads in full. Some capabilities are covered by two mutually exclusive packages — @imqueue/pg-prisma vs @imqueue/pg-sequelize, @imqueue/opentelemetry vs @imqueue/datadog — so for a query like 'tracing' or 'database', call list_packages for the choosing rule rather than taking whichever package ranks first, and pass `package` here to search within the one you settled on.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Max results (default 6)'}, 'query': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': "A question or a symbol name, e.g. 'expose a service method', 'delayed jobs' or 'IMQOptions.safeDelivery'"}, 'package': {'type': 'string', 'description': "Restrict results to one package, e.g. 'http-protect' or '@imqueue/opentelemetry'. Use it once you know which package you want — the same words appear in several packages' symbols."}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query', 'count', 'results'], 'properties': {'count': {'type': 'integer', 'description': 'Number of results returned (0 means no matches)'}, 'query': {'type': 'string', 'description': 'The query that was searched'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'section', 'description', 'url'], 'properties': {'url': {'type': 'string', 'description': 'Pass this to get_doc to read the page in full'}, 'title': {'type': 'string'}, 'symbol': {'type': 'boolean', 'description': 'True for a generated API-reference page rather than prose'}, 'section': {'type': 'string', 'description': "Where it sits in the docs, e.g. 'Guides' or 'API · @imqueue/core property'"}, 'description': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Most relevant first'}, 'advisories': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Present when the results involve two packages that cover the same ground. Each names both options with the rule for choosing — install exactly one, never both.'}}, 'additionalProperties': False}
変更
package_status
2026年9月21日2:57
変更
list_packages
2026年9月21日2:57
追加
local_install_guide
2026年9月17日12:54
追加
scaffold_client
2026年9月17日12:54
追加
scaffold_service
2026年9月17日12:54
追加
package_status
2026年9月17日12:54
追加
list_packages
2026年9月17日12:54
追加
get_doc
2026年9月17日12:54
追加
search_docs
2026年9月17日12:54