moa-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@moa-mcpRun 'Why is the sky blue?' on all available models"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mom-mcp
A local stdio MCP server (mixture of models) for running single-turn prompts across multiple model providers - OpenAI and OpenRouter. Similar in spirit to Claude's advisor tool, but not limited to one family of models: agents can fan the same prompt out to several models and combine the output.
Tools
search_models- searches models across all providers, with catalogues fetched live from each provider's API. The query is matched case-insensitively against model name, model id and provider name (an empty query matches everything); at mostlimitresults are returned. Each match includes theprovider, a human-friendlyname, theidto pass toexecute_promptand the inputmodalitiesthe model accepts (nullwhere the provider does not report them).execute_prompt- executes a single-turn prompt against a givenproviderandmodel_id. Optionalattachmentsis a list of local file paths (text or images) included as context; paths work because the server always runs on the same machine as the caller.
Related MCP server: AgentTasker MCP Server
Setup
cp .env.example .env # then fill in the keys
uv syncRegistering with Claude Code
claude mcp add --scope user mom -- uv run --directory /path/to/mom-mcp mom-mcpDevelopment
uv run pytestProviders are declared in src/mom_mcp/providers.py as instances of a single OpenAI-compatible Provider dataclass, each with a parser that maps its /v1/models response onto the shared Model shape. To add a provider, declare a new Provider and register it in PROVIDERS.
Available Tools
2 toolsexecute_promptA
Execute a single-turn prompt against a model and return its response.
provider and model_id must match an entry from list_models. attachments
is an optional list of local file paths (text or images) included as
context with the prompt.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| model_id | Yes | ||
| provider | Yes | ||
| attachments | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the interaction is single-turn and that attachments are local file paths, which is useful. However, it doesn't mention any side effects, error conditions, authentication requirements, or rate limits that might affect an agent's decision-making.
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 two sentences with a clear front-loaded purpose, followed by essential parameter context. Every word earns its place, with no filler or repetition of schema information.
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 an output schema exists, return values are already covered. The description provides key context about the prerequisite relationship with list_models and the nature of attachments. It could be more complete by mentioning error handling or authentication, but overall it is sufficient for an agent to use the tool correctly.
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 0%, so the description must compensate. It adds meaningful context by stating that provider and model_id must correspond to entries from list_models and that attachments are local file paths. The 'prompt' parameter is not explicitly described but is self-explanatory, so this is a strong compensation for the lack of schema descriptions.
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 tool executes a single-turn prompt against a model and returns its response. The verb 'execute' and resource 'prompt' are specific, and it clearly distinguishes from the sibling tool list_models.
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 explicitly mentions that provider and model_id must match an entry from list_models, giving clear context on prerequisites and implicitly guiding the agent to call list_models first. It also notes attachments are optional, but doesn't explicitly state when to use this tool over others, so it loses a point.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsA
List supported model providers and the models available under each.
Returns a mapping of provider name to a list of models, each with a
human-friendly name, the provider-specific model id to pass to
execute_prompt, and the input modalities the model accepts (text-only
models reject image attachments).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It transparently describes the read-only nature ('List') and details the returned data, including a caveat that text-only models reject image attachments. It omits error or pagination behavior, but for a simple zero-parameter list operation, this is quite transparent.
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 two sentences, front-loaded with the primary action, and every word contributes. It avoids redundancy with the empty schema and efficiently conveys the return structure and a behavioral caveat.
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?
As a zero-parameter, read-only list tool with no output schema, the description fully covers what the tool does, what it returns, and how the output connects to the one sibling tool (execute_prompt). There is no missing critical information for an agent to decide when 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?
The tool has zero parameters, so there is no parameter schema to describe. The description adds value by explaining what the returned fields mean (model id for execute_prompt, input modalities), which is the relevant semantic context. Baseline 4 for zero parameters is appropriate.
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 opens with a specific verb 'List' and a clear resource: 'supported model providers and the models available under each.' It also explains the return structure, making the tool's purpose distinct from the sibling execute_prompt, which is implicitly for running prompts.
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 indicates the primary use by stating that the provider-specific model id is 'to pass to execute_prompt', which tells the agent how the output should be used. It does not explicitly say 'use this before execute_prompt' or exclude other tools, but given only one sibling, this clear linkage earns a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools have completely distinct purposes: one lists available models, the other executes prompts. There is no overlap or ambiguity in their functionality.
Both tool names follow a consistent verb_noun pattern: 'list_models' and 'execute_prompt'. The naming style is uniform and predictable.
With only 2 tools, the server feels thin for a typical MCP server, but the two tools cover a minimal end-to-end workflow (discover models, execute prompts). This is borderline acceptable but not a rich toolkit.
For the stated purpose of executing single-turn prompts against models, the surface is complete: list_models provides the necessary metadata to call execute_prompt, and execute_prompt handles the execution. No obvious gaps exist within this narrow scope.
Maintenance
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
MCP server for building and testing AI agents with multi-model experimentation and insights.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
Related MCP Servers
- FlicenseAqualityDmaintenanceAn MCP server that orchestrates parallel Claude agent sessions by decomposing natural-language tasks into contract-bound tenants with structured outputs and validation, all running over stdio.5
- AlicenseBqualityDmaintenanceA lightweight stdio-only MCP server that allows AI agents to run multiple tasks (e.g., Python code, HTTP requests, shell commands) in parallel or with dependencies, returning structured results in a single call.2MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that queries a panel of LLMs from different providers via OpenRouter and returns their answers side by side, optionally synthesizing them to highlight disagreements.121MIT
- FlicenseNot gradedqualityCmaintenanceMulti-cloud MCP server that exposes cloud AI models as tools for AI CLI agents, supporting streaming, conversation history, parallel multi-model queries, and dynamic model discovery.2
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/cvanes/mom-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server