Just Prompt
Just Prompt - LLM 제공자를 위한 가벼운 MCP 서버
just-prompt OpenAI, Anthropic, Google Gemini, Groq, DeepSeek, Ollama 등 다양한 대규모 언어 모델(LLM) 제공업체에 통합 인터페이스를 제공하는 모델 제어 프로토콜(MCP) 서버입니다. ceo_and_board 도구를 사용하여 o3에서 어려운 의사 결정을 쉽게 내리는 방법을 여기에서 확인하세요.
도구
서버에서 사용할 수 있는 MCP 도구는 다음과 같습니다.
prompt: 여러 LLM 모델에 프롬프트를 보냅니다.매개변수:
text: 프롬프트 텍스트models_prefixed_by_provider(선택 사항): 공급자 접두사가 있는 모델 목록입니다. 지정하지 않으면 기본 모델을 사용합니다.
prompt_from_file: 파일에서 여러 LLM 모델로 프롬프트를 보냅니다.매개변수:
file: 프롬프트가 포함된 파일의 경로models_prefixed_by_provider(선택 사항): 공급자 접두사가 있는 모델 목록입니다. 지정하지 않으면 기본 모델을 사용합니다.
prompt_from_file_to_file: 파일에서 여러 LLM 모델로 프롬프트를 보내고 응답을 마크다운 파일로 저장합니다.매개변수:
file: 프롬프트가 포함된 파일의 경로models_prefixed_by_provider(선택 사항): 공급자 접두사가 있는 모델 목록입니다. 지정하지 않으면 기본 모델을 사용합니다.output_dir(기본값: "."): 응답 마크다운 파일을 저장할 디렉토리
ceo_and_board: 여러 '이사회 구성원' 모델에 메시지를 보내고 'CEO' 모델이 응답에 따라 결정을 내리도록 합니다.매개변수:
file: 프롬프트가 포함된 파일의 경로models_prefixed_by_provider(선택 사항): 보드 멤버 역할을 할 공급자 접두사가 있는 모델 목록입니다. 지정하지 않으면 기본 모델을 사용합니다.output_dir(기본값: "."): 응답 파일과 CEO 결정을 저장할 디렉토리ceo_model(기본값: "openai:o3"): "provider:model" 형식의 CEO 결정에 사용할 모델
list_providers: 사용 가능한 모든 LLM 공급자 나열매개변수: 없음
list_models: 특정 LLM 공급자에 사용 가능한 모든 모델을 나열합니다.매개변수:
provider: 모델을 나열하는 제공자(예: 'openai' 또는 'o')
Related MCP server: gemini-bridge
공급자 접두사
모든 모델에는 공급자 이름이 접두사로 붙어야 합니다.
더 빠른 참조를 위해 짧은 이름을 사용하세요
o또는openai: OpenAIo:gpt-4o-miniopenai:gpt-4o-mini
a또는anthropic: 인류학적a:claude-3-5-haikuanthropic:claude-3-5-haiku
g또는gemini: Google Geminig:gemini-2.5-pro-exp-03-25gemini:gemini-2.5-pro-exp-03-25
q또는groq: Groqq:llama-3.1-70b-versatilegroq:llama-3.1-70b-versatile
d또는deepseek: DeepSeekd:deepseek-coderdeepseek:deepseek-coder
l또는ollama: 올라마l:llama3.1ollama:llama3.1
특징
여러 LLM 공급자를 위한 통합 API
문자열이나 파일에서 텍스트 프롬프트 지원
여러 모델을 병렬로 실행
--default-models목록의 첫 번째 모델을 사용하여 자동 모델 이름 수정파일에 대한 응답을 저장하는 기능
사용 가능한 공급자 및 모델을 쉽게 나열
설치
지엑스피1
환경 변수
API 키로 .env 파일을 만듭니다( .env.sample 파일을 복사할 수 있습니다).
cp .env.sample .env그런 다음 .env 파일을 편집하여 API 키를 추가하거나 셸에서 내보냅니다.
OPENAI_API_KEY=your_openai_api_key_here
ANTHROPIC_API_KEY=your_anthropic_api_key_here
GEMINI_API_KEY=your_gemini_api_key_here
GROQ_API_KEY=your_groq_api_key_here
DEEPSEEK_API_KEY=your_deepseek_api_key_here
OLLAMA_HOST=http://localhost:11434클로드 코드 설치
이 모든 예에서 디렉토리를 방금 실행한 디렉토리 경로로 바꾸세요.
기본 모델은 openai:o3:high , openai:o4-mini:high , anthropic:claude-3-7-sonnet-20250219:4k , gemini:gemini-2.5-pro-preview-03-25 , gemini:gemini-2.5-flash-preview-04-17 설정되었습니다.
저장소에서 바로 Claude Code를 사용하면 .mcp.json 파일에서 기본 모델을 다음과 같이 설정한 것을 볼 수 있습니다.
{
"mcpServers": {
"just-prompt": {
"type": "stdio",
"command": "uv",
"args": [
"--directory",
".",
"run",
"just-prompt",
"--default-models",
"openai:o3:high,openai:o4-mini:high,anthropic:claude-3-7-sonnet-20250219:4k,gemini:gemini-2.5-pro-preview-03-25,gemini:gemini-2.5-flash-preview-04-17"
],
"env": {}
}
}
}--default-models 매개변수는 API 엔드포인트에 명시적으로 제공된 모델이 없을 때 사용할 모델을 설정합니다. 목록의 첫 번째 모델은 필요 시 모델 이름 수정에도 사용됩니다. 쉼표로 구분된 모델 목록일 수 있습니다.
서버를 시작하면 사용자 환경에서 사용 가능한 API 키를 자동으로 확인하고 사용 가능한 공급자를 알려줍니다. 키가 없는 경우 공급자는 사용할 수 없음으로 표시되지만, 서버는 계속 시작되고 사용 가능한 공급자를 통해 사용할 수 있습니다.
mcp add-json 사용
이것을 복사하여 Claude 코드에 붙여 넣으세요. 하지만 JSON을 복사할 때까지 실행하지 마세요.
claude mcp add just-prompt "$(pbpaste)"복사할 JSON
{
"command": "uv",
"args": ["--directory", ".", "run", "just-prompt"]
}사용자 정의 기본 모델을 openai:gpt-4o 로 설정합니다.
{
"command": "uv",
"args": ["--directory", ".", "run", "just-prompt", "--default-models", "openai:gpt-4o"]
}여러 기본 모델 사용:
{
"command": "uv",
"args": ["--directory", ".", "run", "just-prompt", "--default-models", "openai:o3:high,openai:o4-mini:high,anthropic:claude-3-7-sonnet-20250219:4k,gemini:gemini-2.5-pro-preview-03-25,gemini:gemini-2.5-flash-preview-04-17"]
}프로젝트 범위에 mcp add 사용
# With default models
claude mcp add just-prompt -s project \
-- \
uv --directory . \
run just-prompt
# With custom default model
claude mcp add just-prompt -s project \
-- \
uv --directory . \
run just-prompt --default-models "openai:gpt-4o"
# With multiple default models
claude mcp add just-prompt -s user \
-- \
uv --directory . \
run just-prompt --default-models "openai:o3:high,openai:o4-mini:high,anthropic:claude-3-7-sonnet-20250219:4k,gemini:gemini-2.5-pro-preview-03-25,gemini:gemini-2.5-flash-preview-04-17:4k"mcp remove
클로드 MCP가 Just-Prompt를 제거합니다.
테스트 실행
uv run pytest코드베이스 구조
.
├── ai_docs/ # Documentation for AI model details
│ ├── extending_thinking_sonny.md
│ ├── llm_providers_details.xml
│ ├── openai-reasoning-effort.md
│ └── pocket-pick-mcp-server-example.xml
├── example_outputs/ # Example outputs from different models
├── list_models.py # Script to list available LLM models
├── prompts/ # Example prompt files
├── pyproject.toml # Python project configuration
├── specs/ # Project specifications
│ ├── init-just-prompt.md
│ ├── new-tool-llm-as-a-ceo.md
│ └── oai-reasoning-levels.md
├── src/ # Source code directory
│ └── just_prompt/
│ ├── __init__.py
│ ├── __main__.py
│ ├── atoms/ # Core components
│ │ ├── llm_providers/ # Individual provider implementations
│ │ │ ├── anthropic.py
│ │ │ ├── deepseek.py
│ │ │ ├── gemini.py
│ │ │ ├── groq.py
│ │ │ ├── ollama.py
│ │ │ └── openai.py
│ │ └── shared/ # Shared utilities and data types
│ │ ├── data_types.py
│ │ ├── model_router.py
│ │ ├── utils.py
│ │ └── validator.py
│ ├── molecules/ # Higher-level functionality
│ │ ├── ceo_and_board_prompt.py
│ │ ├── list_models.py
│ │ ├── list_providers.py
│ │ ├── prompt.py
│ │ ├── prompt_from_file.py
│ │ └── prompt_from_file_to_file.py
│ ├── server.py # MCP server implementation
│ └── tests/ # Test directory
│ ├── atoms/ # Tests for atoms
│ │ ├── llm_providers/
│ │ └── shared/
│ └── molecules/ # Tests for molecules
│ ├── test_ceo_and_board_prompt.py
│ ├── test_list_models.py
│ ├── test_list_providers.py
│ ├── test_prompt.py
│ ├── test_prompt_from_file.py
│ └── test_prompt_from_file_to_file.py
└── ultra_diff_review/ # Diff review outputs맥락 프라이밍
README.md, pyproject.toml을 읽은 다음 git ls-files와 'eza --git-ignore --tree'를 실행하여 프로젝트의 컨텍스트를 이해하세요.
OpenAI o‑Series를 사용한 추론 노력
OpenAI o‑series 추론 모델( o4-mini , o3-mini , o3 )의 경우, 모델이 눈에 보이는 답변을 생성하기 전에 얼마나 많은 내부 추론을 수행할지 제어할 수 있습니다.
모델 이름( 공급자 접두사 뒤)에 다음 접미사 중 하나를 추가합니다.
:low– 최소한의 내부 추론(더 빠르고 저렴함):medium– 균형(생략 시 기본값):high– 철저한 추론(느리고 토큰이 더 많음)
예:
openai:o4-mini:lowo:o4-mini:high
추론 접미사가 있는 경우 just‑prompt는 자동으로 OpenAI Responses API(사용 가능한 경우)로 전환하고 해당 reasoning.effort 매개변수를 설정합니다. 설치된 OpenAI SDK가 이전 버전인 경우, Chat Completions 엔드포인트로 자연스럽게 폴백하고 요청된 노력 수준을 추정하는 내부 시스템 지침을 포함합니다.
클로드와 함께 생각하는 토큰
인간 중심적 클로드 모델 claude-3-7-sonnet-20250219 은 사고 토큰을 사용하여 확장된 사고 능력을 지원합니다. 이를 통해 클로드는 답변하기 전에 더욱 심도 있는 사고 과정을 수행할 수 있습니다.
다음 형식으로 모델 이름에 접미사를 추가하여 사고 토큰을 활성화할 수 있습니다.
anthropic:claude-3-7-sonnet-20250219:1k- 1024개의 생각 토큰을 사용하세요anthropic:claude-3-7-sonnet-20250219:4k- 4096개의 사고 토큰을 사용하세요anthropic:claude-3-7-sonnet-20250219:8000- 생각 토큰 8000개 사용
참고사항:
사고 토큰은
claude-3-7-sonnet-20250219모델에서만 지원됩니다.유효한 사고 토큰 예산은 1024에서 16000까지입니다.
이 범위를 벗어난 값은 자동으로 범위 내로 조정됩니다.
예산은 k 표기법(1k, 4k 등)이나 정확한 숫자(1024, 4096 등)로 지정할 수 있습니다.
쌍둥이자리와 함께 예산 생각하기
Google Gemini 모델 gemini-2.5-flash-preview-04-17 사고 예산을 활용하여 확장된 사고 기능을 지원합니다. 이를 통해 Gemini는 응답을 제공하기 전에 더욱 심도 있는 추론을 수행할 수 있습니다.
모델 이름에 접미사를 추가하여 생각 예산을 활성화할 수 있습니다. 형식은 다음과 같습니다.
gemini:gemini-2.5-flash-preview-04-17:1k- 1024 생각 예산 사용gemini:gemini-2.5-flash-preview-04-17:4k- 4096 생각 예산 사용gemini:gemini-2.5-flash-preview-04-17:8000- 8000 생각 예산 사용
참고사항:
Thinking budget은
gemini-2.5-flash-preview-04-17모델에서만 지원됩니다.유효한 사고 예산 범위는 0~24576입니다.
이 범위를 벗어난 값은 자동으로 범위 내로 조정됩니다.
예산은 k 표기법(1k, 4k 등)이나 정확한 숫자(1024, 4096 등)로 지정할 수 있습니다.
자원
AI 코딩 마스터하기
AI 코딩의 기본 원칙을 통해 AI로 코딩하는 법을 배우세요
더 많은 AI 코딩 팁과 요령을 알아보려면 IndyDevDan YouTube 채널을 팔로우하세요.
Available Tools
6 toolsceo_and_boardB
Send a prompt to multiple 'board member' models and have a 'CEO' model make a decision based on their responses. IMPORTANT: You MUST provide absolute paths (e.g., /path/to/file or C:\path\to\file) for both file and output directory, not relative paths.
| Name | Required | Description | Default |
|---|---|---|---|
| abs_file_path | Yes | Absolute path to the file containing the prompt (must be an absolute path, not relative) | |
| abs_output_dir | No | Absolute directory path to save the response files and CEO decision (must be an absolute path, not relative) | . |
| ceo_model | No | Model to use for the CEO decision in format 'provider:model' | openai:o3 |
| models_prefixed_by_provider | No | List of models with provider prefixes to act as board members. If not provided, uses default models. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the need for absolute paths and mentions the CEO decision process, but lacks details on behavioral traits such as error handling, rate limits, authentication needs, or what the output looks like (e.g., file formats, decision format). For a tool with 4 parameters and no annotations, this is a significant gap in transparency.
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 appropriately sized with two sentences: the first explains the core functionality, and the second provides a critical usage note. It's front-loaded with the main purpose, and the 'IMPORTANT' section adds necessary guidance without redundancy. However, the second sentence could be integrated more smoothly, slightly affecting structure.
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's complexity (multi-model decision-making with file I/O), no annotations, and no output schema, the description is incomplete. It doesn't explain the output format, how the CEO decision is derived, error cases, or dependencies on other tools. For a tool with this functionality, more context is needed to ensure proper usage by an AI agent.
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 the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by emphasizing absolute paths in a note, but doesn't provide additional semantic context like examples or rationale for parameter choices. With high schema coverage, the baseline is 3, and the description meets this without compensating further.
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's purpose: 'Send a prompt to multiple 'board member' models and have a 'CEO' model make a decision based on their responses.' It specifies the verb ('send'), resource ('prompt'), and outcome ('CEO model make a decision'), distinguishing it from simpler prompt tools like 'prompt' or 'prompt_from_file'. However, it doesn't explicitly differentiate from 'prompt_from_file_to_file' which also involves file-based prompting with output.
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 implies usage when needing multi-model consensus with a CEO decision-maker, as opposed to single-model prompts. It includes an 'IMPORTANT' note about absolute paths, which provides some context. However, it doesn't explicitly state when to use this tool versus alternatives like 'prompt_from_file_to_file' or under what scenarios the board/CEO metaphor is beneficial, leaving usage somewhat implied rather than clearly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsC
List all available models for a specific LLM provider
| Name | Required | Description | Default |
|---|---|---|---|
| provider | Yes | Provider to list models for (e.g., 'openai' or 'o') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a list operation (implied read-only) but doesn't disclose important behavioral traits like whether it requires authentication, rate limits, pagination behavior, error handling, or what format the returned models list will have. The description is minimal and lacks operational context.
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, efficient sentence that directly states the tool's purpose without unnecessary words. However, it could be more front-loaded with critical information about behavioral aspects given the lack of annotations.
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?
For a tool with no annotations, no output schema, and minimal description, the contextual information is insufficient. The description doesn't explain what 'available models' means (e.g., supported models, all models including deprecated ones), doesn't describe the return format, and provides no error handling or authentication context.
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 schema description coverage is 100%, so the input schema already fully documents the single 'provider' parameter with examples. The description adds no additional parameter semantics beyond what's in the schema, maintaining the baseline score of 3 for adequate coverage when schema does the heavy lifting.
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 action ('List all available models') and the target resource ('for a specific LLM provider'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'list_providers' which might be conceptually related but serves a different function.
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 provides no guidance on when to use this tool versus alternatives, prerequisites, or contextual constraints. It mentions 'specific LLM provider' but doesn't explain how to determine which provider to use or what happens if an invalid provider is specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_providersB
List all available LLM providers
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but provides no information about permissions needed, rate limits, pagination behavior, response format, or whether this is a read-only operation. For a tool with zero annotation coverage, this leaves significant behavioral gaps unaddressed.
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, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized for a simple list operation and front-loads the essential information. Every word earns its place in this minimal description.
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 no annotations, no output schema, and the description provides only basic purpose information, there are significant completeness gaps. For even a simple list operation, the description should address response format, potential limitations, or behavioral context. The current description is insufficient for a tool that agents need to understand fully before invocation.
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 with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't discuss parameters since none exist. This earns a baseline score of 4 for parameter semantics when there are no parameters to document.
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 ('List') and resource ('all available LLM providers'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'list_models', but the resource specificity (providers vs models) provides implicit differentiation. The description avoids tautology by not just restating the tool name.
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 provides no guidance on when to use this tool versus alternatives like 'list_models' or other sibling tools. It doesn't mention prerequisites, context for usage, or any exclusions. While the purpose is clear, there's no explicit usage guidance beyond the basic action described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
promptC
Send a prompt to multiple LLM models
| Name | Required | Description | Default |
|---|---|---|---|
| models_prefixed_by_provider | No | List of models with provider prefixes (e.g., 'openai:gpt-4o' or 'o:gpt-4o'). If not provided, uses default models. | |
| text | Yes | The prompt text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('send a prompt') but lacks details on what happens: e.g., how models are selected, whether responses are returned or stored, any rate limits, authentication needs, or error handling. This is a significant gap for a tool interacting with external LLMs.
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, efficient sentence with zero waste. It's front-loaded and directly states the tool's function without unnecessary elaboration, making it highly concise and well-structured.
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 complexity of interacting with multiple LLM models, no annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like response format, error handling, or model selection logic, leaving gaps that could hinder effective tool use by an AI agent.
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 the schema fully documents both parameters. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain the 'models_prefixed_by_provider' format further or provide examples beyond the schema's description). Baseline 3 is appropriate as the schema handles parameter documentation.
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 'Send a prompt to multiple LLM models' clearly states the action (send) and resource (prompt to LLM models), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'prompt_from_file' or 'prompt_from_file_to_file', which also involve sending prompts but with different input methods.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'prompt_from_file' (for file-based prompts) or 'prompt_from_file_to_file' (for file-to-file processing), nor does it specify any prerequisites or exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prompt_from_fileA
Send a prompt from a file to multiple LLM models. IMPORTANT: You MUST provide an absolute file path (e.g., /path/to/file or C:\path\to\file), not a relative path.
| Name | Required | Description | Default |
|---|---|---|---|
| abs_file_path | Yes | Absolute path to the file containing the prompt (must be an absolute path, not relative) | |
| models_prefixed_by_provider | No | List of models with provider prefixes (e.g., 'openai:gpt-4o' or 'o:gpt-4o'). If not provided, uses default models. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds value by specifying the absolute path requirement and hinting at default model behavior if 'models_prefixed_by_provider' is not provided. However, it lacks details on error handling, rate limits, authentication needs, or output format, leaving gaps in behavioral transparency for a tool that interacts with LLMs.
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 appropriately sized and front-loaded, with two sentences that directly convey the tool's purpose and a critical requirement. Every sentence earns its place by providing essential information without redundancy, making it efficient and easy to parse.
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's moderate complexity (interacting with LLMs), no annotations, and no output schema, the description is incomplete. It covers the basic operation and path requirement but lacks details on output format, error handling, or model behavior, which are important for effective use. This is adequate as a minimum viable description but has clear gaps.
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 the schema already documents both parameters thoroughly. The description adds minimal semantic context beyond the schema, such as emphasizing the absolute path requirement and giving examples for model prefixes. This meets the baseline of 3, as the schema does the heavy lifting, but doesn't provide significant additional meaning.
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's purpose: 'Send a prompt from a file to multiple LLM models.' It specifies the verb ('send'), resource ('prompt from a file'), and target ('multiple LLM models'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'prompt' or 'prompt_from_file_to_file', which would require a 5.
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 provides some usage guidance by emphasizing the requirement for an absolute file path, but it doesn't explicitly state when to use this tool versus alternatives like 'prompt' (which might accept direct text input) or 'prompt_from_file_to_file' (which might output to a file). The guidance is implied rather than explicit, falling short of the highest scores.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prompt_from_file_to_fileB
Send a prompt from a file to multiple LLM models and save responses to files. IMPORTANT: You MUST provide absolute paths (e.g., /path/to/file or C:\path\to\file) for both file and output directory, not relative paths.
| Name | Required | Description | Default |
|---|---|---|---|
| abs_file_path | Yes | Absolute path to the file containing the prompt (must be an absolute path, not relative) | |
| abs_output_dir | No | Absolute directory path to save the response files to (must be an absolute path, not relative. Default: current directory) | . |
| models_prefixed_by_provider | No | List of models with provider prefixes (e.g., 'openai:gpt-4o' or 'o:gpt-4o'). If not provided, uses default models. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the absolute path requirement (a constraint) and that it processes 'multiple LLM models', but doesn't describe what happens during execution (e.g., sequential/parallel processing, error handling, file naming conventions, or what 'default models' means). For a tool with file I/O and model execution, this leaves significant behavioral gaps unaddressed.
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 appropriately sized (two sentences) and front-loaded with the core purpose. The 'IMPORTANT' note is relevant but could be integrated more smoothly. There's no wasted text, and every sentence adds value (purpose and critical constraint), though the structure is slightly abrupt with the all-caps emphasis.
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's complexity (file I/O, model execution, batch processing) with no annotations and no output schema, the description is incomplete. It doesn't explain what the output files contain (e.g., raw responses, metadata), how errors are handled, what 'default models' are, or the execution behavior. For a tool with multiple parameters and significant side effects, this leaves too much unspecified for reliable agent use.
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 the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema: it reinforces the absolute path requirement (already in schema descriptions) and mentions 'multiple LLM models' (implied by the array parameter). No additional syntax, format, or semantic details are provided beyond what's in the schema descriptions, meeting the baseline for high coverage.
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 action ('Send a prompt from a file to multiple LLM models and save responses to files') with specific resources (file input, file output, LLM models). It distinguishes from sibling 'prompt' (which likely takes direct input) and 'prompt_from_file' (which likely doesn't save to files), but doesn't explicitly name these alternatives. The purpose is specific but could be more precise about sibling differentiation.
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 implies usage context through the 'IMPORTANT' note about absolute paths, suggesting this tool is for file-based batch processing. However, it doesn't explicitly state when to use this vs. 'prompt_from_file' (which likely processes from file but doesn't save to files) or 'prompt' (direct input). No explicit alternatives or exclusions are provided, leaving usage context somewhat implied rather than clearly defined.
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.
6 tool updates
v1.0.0- First observed
ceo_and_board - First observed
list_models - First observed
list_providers - First observed
prompt - First observed
prompt_from_file - First observed
prompt_from_file_to_file
TDQS
Scored across 6 tools
There is significant overlap between 'prompt', 'prompt_from_file', and 'prompt_from_file_to_file', all centered on sending prompts to multiple models, which could cause confusion. However, 'ceo_and_board' adds a distinct decision-making layer, and 'list_models' and 'list_providers' are clearly separate informational tools, helping to mitigate ambiguity.
Most tools follow a clear verb_noun or verb_from_noun pattern (e.g., 'list_models', 'prompt_from_file'), with consistent snake_case throughout. The only deviation is 'ceo_and_board', which uses a noun-based name that breaks the verb-led convention, but it's still readable and not chaotic.
With 6 tools, this server is well-scoped for its purpose of managing and prompting LLM models. The count is sufficient to cover core functionalities like listing providers/models and various prompting methods without being overwhelming or too sparse.
The toolset covers key operations for LLM interaction: listing providers and models, basic prompting, file-based prompting, and an advanced decision-making tool. A minor gap exists in lacking update or delete operations for prompts or models, but agents can likely work around this for typical use cases.
Maintenance
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for GLM chat completions using Zhipu AI models via AceDataCloud
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that enables AI applications to access 20+ model providers (including OpenAI, Anthropic, Google) through a unified interface for text and image generation.230MIT
- AlicenseAqualityBmaintenanceA lightweight MCP server bridging AI agents to Google's Gemini AI via official CLI391 PyPI96MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that functions as an intelligent gateway for multiple LLM backends including OpenAI, Claude, and Ollama. It supports automatic provider fallback, streaming responses via Server-Sent Events, and real-time monitoring for robust AI integration.MIT
- AlicenseNot gradedqualityCmaintenanceA universal MCP server for spawning agents with any OpenAI-compatible LLM, supporting cloud and local models, and integrating with Claude Code, OpenCode, and Codex CLI.MIT