Foreman MCP Server
OfficialServer Quality Checklist
Latest release: v0.1.0
- Disambiguation4/5
Most tools have distinct purposes: call_foreman_api_get handles API calls, fetch_foreman_dsl_docs and get_foreman_dsl_docs both fetch DSL documentation but differ slightly in source (direct fetch vs. cache read), get_foreman_api_resource_docs fetches API resource docs, and poll_task handles task polling. There is minor overlap between the two DSL documentation tools, which could cause slight confusion, but descriptions clarify the difference.
Naming Consistency3/5The naming is mixed but readable: tools use verb_noun patterns like call_foreman_api_get and fetch_foreman_dsl_docs, but there are inconsistencies such as get_foreman_api_resource_docs (longer noun phrase) and poll_task (shorter, simpler). While not chaotic, the lack of a uniform structure (e.g., varying verb choices and noun lengths) reduces predictability.
Tool Count5/5With 5 tools, this server is well-scoped for interacting with Foreman, covering key areas like API calls, documentation retrieval, and task management. Each tool appears to earn its place without being overly sparse or bloated, making it manageable for agents to use effectively.
Completeness3/5The tool set covers documentation fetching and basic API/task operations, but there are notable gaps for a Foreman server, such as missing CRUD operations for resources (e.g., create, update, delete), limited API actions beyond GET, and no tools for managing hosts or other core Foreman entities. This could lead to agent workarounds or failures in broader workflows.
Average 3.2/5 across 5 of 5 tools scored. Lowest: 2.1/5.
See the Tool Scores section below for per-tool breakdowns.
- 0 of 2 community issues answered or closed in the last 6 months
- 18 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under GPL 3.0.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, openWorldHint=false, and idempotentHint=false, covering safety and idempotency. The description adds no behavioral context beyond these annotations, such as rate limits, authentication needs, or what 'GET action' entails in practice. However, it does not contradict the annotations, so it meets the lower bar with annotations present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence, 'Calls GET action on Foreman API.' It is front-loaded and wastes no words, though this brevity contributes to its inadequacy in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness1/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a tool with three required parameters (including a nested object), 0% schema coverage, no output schema, and no annotations beyond basic hints, the description is severely incomplete. It fails to explain what the tool returns, how parameters are used, or any operational context, making it inadequate for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning none of the three parameters (resource, action, params) are documented in the schema. The description provides no information about what these parameters mean, their expected values, or how they interact, failing to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose2/5Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Calls GET action on Foreman API' is essentially a tautology that restates the tool name 'call_foreman_api_get' with minimal additional information. It specifies the verb ('Calls') and resource ('Foreman API') but lacks specificity about what this actually accomplishes or how it differs from sibling tools like fetch_foreman_dsl_docs or get_foreman_api_resource_docs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines1/5Does 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. There is no mention of appropriate contexts, prerequisites, or comparisons to sibling tools like poll_task or get_foreman_dsl_docs, leaving the agent with no usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide clear hints: read-only, non-destructive, idempotent, and closed-world. The description adds value by specifying that it fetches documentation for a 'specific section', which is useful context not covered by annotations. However, it lacks details on rate limits, authentication needs, or error handling, leaving some behavioral aspects unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is 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. It is front-loaded and wastes no space, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no output schema) and rich annotations, the description is minimally adequate. However, it lacks details on the return format (e.g., structure of documentation) and does not address sibling tool differentiation, which could hinder agent selection in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter with 0% description coverage, meaning the schema provides no semantic details. The description only mentions 'specific section' without explaining what sections are available, their format, or examples. This fails to compensate for the low schema coverage, leaving the parameter poorly documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('fetches') and resource ('DSL documentation from Foreman') with specificity about the scope ('for a specific section'). However, it does not explicitly distinguish this tool from its sibling 'get_foreman_dsl_docs', which appears to have a similar purpose, leaving some ambiguity in differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does 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, such as the sibling tools 'get_foreman_dsl_docs' or 'get_foreman_api_resource_docs'. It mentions a 'specific section' but does not clarify prerequisites, exclusions, or contextual triggers for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds value by specifying that it fetches documentation for a 'specific' resource, implying targeted retrieval, but does not detail aspects like rate limits, authentication needs, or response format, keeping it from a score of 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the tool's function without unnecessary words. It is front-loaded and efficiently communicates the core purpose, 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.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter, no output schema) and rich annotations covering key behavioral traits, the description is minimally adequate. However, it lacks details on parameter semantics and usage context, which could enhance completeness for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, with one required parameter 'resource' of type string. The description does not add any semantic details about this parameter, such as what constitutes a valid resource name or examples, failing to compensate for the schema's lack of documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('fetches') and the target ('documentation for a specific Foreman API resource'), making the purpose evident. However, it does not explicitly differentiate from sibling tools like 'fetch_foreman_dsl_docs' or 'get_foreman_dsl_docs', which appear similar, preventing a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does 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, such as the sibling tools 'fetch_foreman_dsl_docs' or 'get_foreman_dsl_docs', which might overlap in functionality. There is no mention of prerequisites, exclusions, or specific contexts for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only, non-destructive, idempotent, and closed-world hints, so the bar is lower. The description adds value by specifying that it 'reads from cache' and returns 'Markdown format', which are behavioral traits not in annotations. It doesn't contradict annotations, as 'reads' aligns with readOnlyHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads key information (action, resource, format, parameter role) with zero wasted words. It's appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has rich annotations (readOnlyHint, idempotentHint, etc.) but no output schema and low schema coverage, the description is adequate but has gaps. It covers the core purpose and some behavior, but lacks details on output structure, error handling, or sibling differentiation, making it minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does 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 mentions 'based on provided section', which adds meaning by linking the parameter to filtering documentation by section, but doesn't detail what sections are available or their format. This provides some semantics but is incomplete, aligning with the baseline for partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'reads from cache and returns' and the resource 'documentation of available macros for template writing in Markdown format', which is specific. However, it doesn't explicitly differentiate from sibling tools like 'fetch_foreman_dsl_docs' or 'get_foreman_api_resource_docs', which appear similar, so it misses full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does 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 'fetch_foreman_dsl_docs' or 'get_foreman_api_resource_docs', nor does it mention prerequisites or exclusions. It only implies usage through the parameter 'section', but lacks explicit context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, and idempotent behavior, but the description adds valuable context beyond this: it specifies the polling behavior (continuous until terminal state), defines terminal states ('stopped or paused'), mentions background execution for long-running tasks, and implies a blocking or monitoring operation. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by additional context in a second sentence. Every sentence adds value: the first defines the action and outcome, the second adds execution mode. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (polling with timeout and interval), annotations cover safety aspects, but there is no output schema. The description explains the return value ('final task state') and behavioral traits, making it fairly complete. However, it could benefit from more detail on error handling or what 'terminal state' entails beyond 'stopped or paused'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden of explaining parameters. It does not mention any parameters explicitly, but it implies the need for a task_id (to poll) and context for timeout/poll_interval (via 'long-running tasks' and polling). However, it lacks details on parameter meanings, defaults, or units, leaving gaps compensated only by the schema's structural info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Polls a Foreman task'), the resource ('Foreman task'), the termination condition ('until it reaches a terminal state'), and distinguishes it from siblings by focusing on polling rather than direct API calls or documentation fetching. It explicitly mentions the return value ('Returns the final task state').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: for monitoring tasks until completion, with support for long-running tasks via background execution. However, it does not explicitly state when not to use it or name alternatives among the sibling tools (e.g., call_foreman_api_get might be for one-time status checks).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
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/theforeman/foreman-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server