Foreman MCP Server
# foreman-mcp-server
# How to run
# Using VSCode with Copilot
## Start the server via uv
```shell
uv run foreman-mcp-server \
--foreman-url https://foreman.example.com \
--foreman-username $FOREMAN_USERNAME \
--foreman-password $FOREMAN_PASSWORD \
--log-level debug \
--host localhost \
--port 8080
--transport streamable-http
```
Default values if not provided:
```shell
--foreman-url https://$hostname
--foreman-username admin
--foreman-password changeme
--log-level INFO
--host '127.0.0.1'
--port 8080
--transport streamable-http
```
## Configure VSCode
```
# settings.json
{
"mcp": {
"servers": {
"foreman": {
"url": "http://127.0.0.1:8080/mcp/sse"
}
}
},
}
```
## Run VSCode client
- Press Ctrl+Shift+P
- Select MCP: List Servers command
- Select foreman
- Press Start Server
## Using in Copilot Chat
- Press Ctrl+Alt+I to open the chat
- In Configure Tools select the MCP tools only
- Prompts can be listed in the chat, e.g. /mcp.foreman.basic_hosts_pending_sec_updates_static_report
- Resources can be attached via Add Context... > MCP Resources > resource
# Using MCP Inspector
For use with mcp inspector
1) Start the inspector with `npx @modelcontextprotocol/inspector`
2) Open `http://localhost:6274` in your browser
3) Set `Type` to `Streamable HTTP` and `URL` to `http://localhost:8080/mcp`
- or set `Type` to `SSE` and `URL` to `http://localhost:8080/sse`
4) Click connect
# Using Claude Desktop on Linux
Note: this is highly experimental. Tested in a virtual machine running CentOS Stream 9.
## Installation
- Follow installation steps https://github.com/bsneed/claude-desktop-fedora?tab=readme-ov-file#1-fedora-package-new
- If it doesn't launch, try `npm i -g electron
## Configuration
```
# ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"foreman": {
"command": "uv",
"args": ["--directory", "/home/$USER/foreman-mcp-server", "run","foreman-mcp-server", "--transport", "stdio"],
}
}
}
```
## Run Claude client
This will launch UI application, log in into your account. It will start and connect to the MCP server automatically.
```shell
claude-desktop
```
- Click `+` button > Add from foreman: > Select any of Prompts and Resources from the server
- Click Configuration button to select Tools from the server
TDQS
Scored across 4 tools
The tools have some overlap in purpose, particularly around documentation fetching. 'fetch_foreman_dsl_docs' and 'Get Foreman DSL Documentation' both retrieve DSL documentation, though one fetches from source and the other from cache. 'call_foreman_api' is distinct as an action tool, while 'get_foreman_api_resource_docs' focuses on API resource documentation. The descriptions help clarify the differences, but the two DSL documentation tools could cause confusion.
The naming is inconsistent with mixed conventions. 'call_foreman_api', 'fetch_foreman_dsl_docs', and 'get_foreman_api_resource_docs' follow a snake_case pattern with verb prefixes, but 'Get Foreman DSL Documentation' uses a different style with spaces and title case. This deviation breaks the pattern and reduces predictability, though the core naming is still readable.
With 4 tools, the count is reasonable for a server focused on Foreman API interactions and documentation. It covers core operations like calling the API and fetching documentation, though it might feel slightly thin if more advanced actions are needed. The scope is well-defined, and each tool has a clear role, making the count appropriate for the apparent purpose.
The tool set covers basic API calls and documentation retrieval, but there are notable gaps. It lacks operations for managing Foreman resources (e.g., create, update, delete) and does not provide full CRUD coverage. Agents can work around this by using 'call_foreman_api' for various actions, but the surface is incomplete for comprehensive Foreman management, focusing more on documentation and generic API access.