aimarket-mcp-packager
This server packages AIMarket capabilities into self-hosted MCP server products, generating all deployment artifacts needed to run them in Claude Desktop, Cursor, Glama, or any stdio MCP client.
package_capability— The primary tool; assembles a complete MCP server package for a given AIMarket capability, returning a Docker image name, full MCP manifest (server metadata + tool definitions), subscription/pricing tiers, and a client connection string.generate_dockerfile— Generates a ready-to-build Dockerfile for the packaged MCP server, which you can write to disk and rundocker buildon to produce the deployable image.generate_claude_desktop_config— Generates aclaude_desktop_config.jsonsnippet (anmcpServersblock) that registers the dockerized MCP server with Claude Desktop or any compatible MCP host — just merge it into your existing config and restart the host.
All three tools share core inputs: a capability_id (e.g. translate.multi@v2), a product_id, a human-readable name, an optional description, an optional JSON Schema for inputs, and an optional container registry namespace.
Generates Dockerfile templates and Docker run configurations for containerized deployment of packaged MCP servers.
📖 Read-only mirror.
aimarket-pluginsis published from the canonical AI-Factory monorepo. Pull requests are not accepted — any commit pushed here is overwritten byscripts/mirror_satellites.shon the next sync. 🐞 Found a bug or have a request? Please open an issue.
AIMarket Hub Plugins
Ecosystem: AICOM overview & live demos · Community: Discord · Pollux · Telegram · Castor
15 protocol plugins extend hub invoke, settlement, compliance, and data planes without forking core.
Verifiable math lives in the separate oracles monorepo (Platon, Chronos, Murmuration, Lumen, …) — listed on the hub like any capability. aimarket-reputation scores sellers; Lumen oracle supplies PageRank/EigenTrust-style trust artifacts agents can invoke and audit.
Install
PyPI (top-5): docs/install.md
Package | PyPI status |
| ✅ 3.0.0 |
| ✅ 2.0.0 |
| ⏳ pending (PyPI new-project rate limit — install from source until published) |
| ⏳ monorepo only — |
Docker: all 15 plugins ship in the production hub image — ./scripts/deploy_hub.sh from the factory monorepo.
Source: pip install -e plugins/aimarket-tee after cloning this repo.
Related MCP server: Test MCP Server
TEE Escrow
Smart-contract escrow in a Trusted Execution Environment — buyer funds stay held until attested invoke succeeds; seller is paid only on proof; failures refund on-channel.
What |
|
Why | Micropay scale with both-side protection — no human escrow desk |
Deep dive |
MCP server — aimarket-mcp-packager
One of the 15 plugins is a full Model Context Protocol server — stdio transport, built on the official MCP Python SDK. aimarket-mcp-packager turns any AIMarket capability into a self-hosted MCP product (Docker image, MCP manifest, and a ready claude_desktop_config.json) that runs in Claude Desktop, Cursor, Glama, or any stdio MCP client.
Run |
|
Tools |
|
Registry | Listed on Glama (score badge above) — see |
MCP server — aimarket-oracle-gateway (standalone repo)
A second MCP server ships as its own satellite repo alexar76/aimarket-oracle-gateway for Glama indexing. aimarket-oracle-gateway exposes Platon randomness, Chronos VDF, and LUMEN reputation as agent-callable tools — pay-per-call over AIMarket, every result independently verifiable.
Run |
|
Tools |
|
Registry |
|
Plugin index
Plugin | Role |
Pre-invoke policy, signed reject | |
TEE attestation, escrow hooks | |
W3C VC invoke receipts | |
Scores + stake bonds | |
USDT channel lifecycle | |
Price discovery | |
Multi-capability plans | |
Data-capability packaging | |
Dataset listings | |
MCP server (stdio) — package capabilities as Docker + MCP manifest + Claude Desktop config | |
Capability NFTs | |
Seller personas | |
Promotions | |
Streaming invoke | |
ZK cohort proofs |
Hub loads plugins from aimarket-hub/plugins/ at runtime. Monorepo copies under plugins/ are the source-of-truth for docs and tests.
Demo
Related repos
Repo | Role |
Loads plugins at invoke time | |
Verifiable math capabilities (separate repo) | |
AI-Factory monorepo | |
Twin community agents — MNEMOSYNE Q&A |
Community
The DIOSCURI twins answer questions from synced GitHub docs.
Channel | Twin | Best for |
Pollux | Help, ideas, show-and-tell | |
Castor | Releases, digests, quick news |
Ecosystem map: Alien Monitor · AICOM
Available Tools
3 toolsgenerate_claude_desktop_configA
Generate a claude_desktop_config.json snippet for the packaged MCP server.
Takes the same capability inputs as package_capability and returns the
mcpServers entry that registers the docker-run MCP server with Claude
Desktop (or any MCP host that reads this config format).
Returns:
A JSON object (string) containing an mcpServers block — merge it into
the user's existing claude_desktop_config.json and restart the host.
Example: generate_claude_desktop_config( capability_id="translate.multi@v2", product_id="prod-translate", name="Lyra Translator", )
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable display name for the packaged MCP server, shown to end users in MCP clients such as Claude Desktop (e.g. 'Lyra Translator'). | |
| registry | No | Container registry namespace for the built image. Defaults to 'aifactory'. Set your own org/namespace to publish under a different account (e.g. 'ghcr.io/acme'). | aifactory |
| product_id | Yes | Owning product ID on the AIMarket hub, e.g. 'prod-translate'. Used to namespace the Docker image and the MCP manifest. | |
| description | No | One- or two-sentence summary of what the capability does. Surfaced in the MCP manifest and the Claude Desktop config. Optional but strongly recommended — it becomes the tool description in the generated server. | |
| input_schema | No | JSON Schema object describing the capability's input. For example, an object with a required string property 'text'. Omit or pass null for a schema-less capability. | |
| capability_id | Yes | Fully-qualified capability identifier to package, e.g. 'translate.multi@v2'. This is the single capability the generated MCP server will expose as a tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool generates and returns a JSON snippet, but does not mention any side effects, permissions, or state changes. For a generation tool, this is adequate but could be more explicit about its non-destructive nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose, followed by usage context and an example. It is relatively concise, though the example repeats parameter names already defined. No superfluous sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters and no annotations, the description covers the return value format and usage. The output schema exists, so not detailing its structure is acceptable. It is complete enough for an agent to understand when and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, yet the description adds value: it groups parameters as 'same inputs as package_capability', explains the 'description' parameter's purpose in the generated config, and notes the default for 'registry'. This goes beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'generate' and the resource 'claude_desktop_config.json snippet'. It distinguishes from siblings by noting it takes the same inputs as 'package_capability' but returns an 'mcpServers' entry, not a Dockerfile or packaged capability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the tool's output (mcpServers entry) and relation to 'package_capability', implying when to use it (after packaging). It also provides an example. Does not explicitly exclude scenarios, but context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_dockerfileA
Generate a ready-to-build Dockerfile for the packaged MCP server.
Takes the same capability inputs as package_capability and returns the
Dockerfile text that builds the self-hosted MCP server image for it.
Returns:
The Dockerfile contents as plain text — write it to Dockerfile and
run docker build to produce the image named in package_capability's
docker_image field.
Example: generate_dockerfile( capability_id="translate.multi@v2", product_id="prod-translate", name="Lyra Translator", )
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable display name for the packaged MCP server, shown to end users in MCP clients such as Claude Desktop (e.g. 'Lyra Translator'). | |
| registry | No | Container registry namespace for the built image. Defaults to 'aifactory'. Set your own org/namespace to publish under a different account (e.g. 'ghcr.io/acme'). | aifactory |
| product_id | Yes | Owning product ID on the AIMarket hub, e.g. 'prod-translate'. Used to namespace the Docker image and the MCP manifest. | |
| description | No | One- or two-sentence summary of what the capability does. Surfaced in the MCP manifest and the Claude Desktop config. Optional but strongly recommended — it becomes the tool description in the generated server. | |
| input_schema | No | JSON Schema object describing the capability's input. For example, an object with a required string property 'text'. Omit or pass null for a schema-less capability. | |
| capability_id | Yes | Fully-qualified capability identifier to package, e.g. 'translate.multi@v2'. This is the single capability the generated MCP server will expose as a tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool returns Dockerfile contents as plain text and directs the user to write to file and run docker build. It also references the `docker_image` field from `package_capability`, which adds context. No behavioral surprises or contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph with a Returns section and an example. It is efficient and front-loaded, but could be slightly more structured (e.g., bullet points for clarity). No wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool, the description sufficiently covers the return value and usage pattern. It references the sibling's output field, which adds necessary cross-tool context. The tool has an output schema (implied) and the description explains the return format adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds some context (e.g., takes same inputs as `package_capability` and shows an example) but does not significantly enhance the meaning of individual parameters beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it generates a Dockerfile for a packaged MCP server, with explicit reference to the sibling tool `package_capability` for context. The verb 'generate' combined with the resource 'Dockerfile' is specific and distinguishable from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Indirectly implies usage after `package_capability` by referencing its inputs, but lacks explicit when-to-use or when-not-to-use guidance. No alternatives are mentioned; however, sibling tools have distinct purposes, so the need for guidance is moderate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
package_capabilityA
Build a complete self-hosted MCP server package for an AIMarket capability.
Use this first. It assembles everything needed to ship the capability as a standalone MCP server: the Docker image name, the MCP manifest (server + tool definition), subscription/pricing tiers, and a connection string.
Returns:
A JSON object (string) with keys:
- docker_image: the image name to build/run.
- mcp_manifest: the full MCP manifest (server metadata + tools).
- subscription_tiers: pricing tiers derived for the capability.
- connection_string: how a client connects to the running server.
Example: package_capability( capability_id="translate.multi@v2", product_id="prod-translate", name="Lyra Translator", description="Translate text into multiple languages.", input_schema={"type": "object", "properties": {"text": {"type": "string"}}, "required": ["text"]}, )
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable display name for the packaged MCP server, shown to end users in MCP clients such as Claude Desktop (e.g. 'Lyra Translator'). | |
| registry | No | Container registry namespace for the built image. Defaults to 'aifactory'. Set your own org/namespace to publish under a different account (e.g. 'ghcr.io/acme'). | aifactory |
| product_id | Yes | Owning product ID on the AIMarket hub, e.g. 'prod-translate'. Used to namespace the Docker image and the MCP manifest. | |
| description | No | One- or two-sentence summary of what the capability does. Surfaced in the MCP manifest and the Claude Desktop config. Optional but strongly recommended — it becomes the tool description in the generated server. | |
| input_schema | No | JSON Schema object describing the capability's input. For example, an object with a required string property 'text'. Omit or pass null for a schema-less capability. | |
| capability_id | Yes | Fully-qualified capability identifier to package, e.g. 'translate.multi@v2'. This is the single capability the generated MCP server will expose as a tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It details return values (a JSON object with four keys) and provides an example. It does not mention side effects or destructive actions, but the tool appears to be a pure builder function without harmful consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three short paragraphs and an example), front-loaded with the main purpose, and structured with clear sections for returns and example. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (inferred from context), the description adequately explains the return structure. It covers all necessary aspects: parameter details, return format, and usage ordering relative to siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant value beyond schema: it explains the purpose of each parameter in context (e.g., 'the single capability the generated MCP server will expose as a tool' for capability_id) and includes a comprehensive example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states its purpose: 'Build a complete self-hosted MCP server package for an AIMarket capability.' It uses a specific verb ('Build') and resource ('self-hosted MCP server package'), and distinguishes from siblings by noting 'Use this first' and that it assembles everything needed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this first,' providing clear context for when to use it. It does not mention when not to use it or alternatives, but siblings are sufficiently different so no confusion arises.
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.
3 tool updates
v1.0.1- Changed
generate_claude_desktop_config12 fields changed- added
Input schema / properties / capability_id / descriptionAdded value: +"Fully-qualified capability identifier to package, e.g. 'translate.multi@v2'. This is the single capability the generated MCP server will expose as a tool." - added
Input schema / properties / capability_id / examplesAdded value: +[ + "translate.multi@v2", + "summarize.long@v1" +] - added
Input schema / properties / description / descriptionAdded value: +"One- or two-sentence summary of what the capability does. Surfaced in the MCP manifest and the Claude Desktop config. Optional but strongly recommended — it becomes the tool description in the generated server." - added
Input schema / properties / description / examplesAdded value: +[ + "Translate text into multiple languages with one call." +] - added
Input schema / properties / input_schemaAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "JSON Schema object describing the capability's input. For example, an object with a required string property 'text'. Omit or pass null for a schema-less capability.", + "examples": [ + { + "properties": { + "text": { + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + } + ], + "title": "Input Schema" +} - removed
Input schema / properties / input_schema_jsonRemoved value: -{ - "default": "{}", - "title": "Input Schema Json", - "type": "string" -} - added
Input schema / properties / name / descriptionAdded value: +"Human-readable display name for the packaged MCP server, shown to end users in MCP clients such as Claude Desktop (e.g. 'Lyra Translator')." - added
Input schema / properties / name / examplesAdded value: +[ + "Lyra Translator" +] - added
Input schema / properties / product_id / descriptionAdded value: +"Owning product ID on the AIMarket hub, e.g. 'prod-translate'. Used to namespace the Docker image and the MCP manifest." - added
Input schema / properties / product_id / examplesAdded value: +[ + "prod-translate" +] - added
Input schema / properties / registry / descriptionAdded value: +"Container registry namespace for the built image. Defaults to 'aifactory'. Set your own org/namespace to publish under a different account (e.g. 'ghcr.io/acme')." - added
Input schema / properties / registry / examplesAdded value: +[ + "aifactory", + "ghcr.io/acme" +]
- Changed
generate_dockerfile12 fields changed- added
Input schema / properties / capability_id / descriptionAdded value: +"Fully-qualified capability identifier to package, e.g. 'translate.multi@v2'. This is the single capability the generated MCP server will expose as a tool." - added
Input schema / properties / capability_id / examplesAdded value: +[ + "translate.multi@v2", + "summarize.long@v1" +] - added
Input schema / properties / description / descriptionAdded value: +"One- or two-sentence summary of what the capability does. Surfaced in the MCP manifest and the Claude Desktop config. Optional but strongly recommended — it becomes the tool description in the generated server." - added
Input schema / properties / description / examplesAdded value: +[ + "Translate text into multiple languages with one call." +] - added
Input schema / properties / input_schemaAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "JSON Schema object describing the capability's input. For example, an object with a required string property 'text'. Omit or pass null for a schema-less capability.", + "examples": [ + { + "properties": { + "text": { + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + } + ], + "title": "Input Schema" +} - removed
Input schema / properties / input_schema_jsonRemoved value: -{ - "default": "{}", - "title": "Input Schema Json", - "type": "string" -} - added
Input schema / properties / name / descriptionAdded value: +"Human-readable display name for the packaged MCP server, shown to end users in MCP clients such as Claude Desktop (e.g. 'Lyra Translator')." - added
Input schema / properties / name / examplesAdded value: +[ + "Lyra Translator" +] - added
Input schema / properties / product_id / descriptionAdded value: +"Owning product ID on the AIMarket hub, e.g. 'prod-translate'. Used to namespace the Docker image and the MCP manifest." - added
Input schema / properties / product_id / examplesAdded value: +[ + "prod-translate" +] - added
Input schema / properties / registry / descriptionAdded value: +"Container registry namespace for the built image. Defaults to 'aifactory'. Set your own org/namespace to publish under a different account (e.g. 'ghcr.io/acme')." - added
Input schema / properties / registry / examplesAdded value: +[ + "aifactory", + "ghcr.io/acme" +]
- Added
package_capability
2 tool updates
v1.0.0- First observed
generate_claude_desktop_config - First observed
generate_dockerfile
TDQS
Each tool has a clearly distinct purpose: package_capability builds the package, generate_dockerfile produces the Dockerfile, and generate_claude_desktop_config outputs the config snippet. There is no overlap in functionality.
All tool names follow a consistent verb_noun pattern (package_capability, generate_dockerfile, generate_claude_desktop_config), making them predictable and easy to understand.
With 3 tools, the server is slightly small but well-scoped for its packaging purpose. Each tool serves a necessary step, and adding more would risk bloat.
The tool set covers the core packaging workflow: build the package, generate Dockerfile, and generate config. Minor gaps exist, such as lacking a validation or listing tool, but the main path is complete.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn educational implementation of a Model Context Protocol server that demonstrates how to build a functional MCP server for integrating with various LLM clients like Claude Desktop.1163MIT
- FlicenseNot gradedqualityDmaintenanceA dual-transport MCP server that exposes your API as tools to LLM clients, supporting both stdio transport for local clients like Claude Desktop and HTTP/SSE transport for remote clients like OpenAI's Responses API.-
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server built with FastMCP that features dynamic tool loading and modular management via a dedicated tool directory. It supports both stdio and HTTP transport modes, enabling efficient development and deployment of custom MCP tools.-
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server built with the mcp-framework for developing and managing custom tools. It provides a structured foundation for building and integrating modular components like data processors and API clients into Claude Desktop.12-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/alexar76/aimarket-plugins'
If you have feedback or need assistance with the MCP directory API, please join our Discord server