AI-assisted development
You can use mittwald's AI models to assist you in your development process. The models are GDPR-compliant and are hosted in Germany without storing user data or using it for training.
Available models
The service offers several AI models optimized for different development tasks. For a complete list of available models and their specifications, see the AI models documentation.
IDE integration
Overview
| IDE/Tool | Integrations |
|---|---|
| Jetbrains IDEs (IntelliJ, PHPStorm, ...) | Continue, Jetbrains AI |
| Visual Studio Code | Continue, Cline, Kilo Code |
| Cursor | Cline |
| Windsurf | Cline |
| Zed | Zed |
| CLI | OpenCode |
Jetbrains AI (for Jetbrains IDEs, like IntelliJ, PHPStorm, WebStorm, ...)
JetBrains AI Assistant supports OpenAI-compatible endpoints via Bring Your Own Key (BYOK). Configure it directly in the IDE:
- Open
Settings | Tools | AI Assistant | Models & API keys. - Under "Third-party AI providers", select OpenAI-compatible.
- Enter your API key and the endpoint URL
https://llm.aihosting.mittwald.de/v1, then test the connection. - (Optional) Enable "Tool calling" if the model should use MCP tools.
Note: Some AI Assistant features may require a JetBrains AI subscription even when using third-party providers.
Continue (for Visual Studio Code or Jetbrains IDEs)
Continue works with both Jetbrains IDEs and Visual Studio Code.
Start by installing the Plugin for your IDE:
Models are usually configured in the config.yaml file (usually found in the ~/.continue/ directory in your home directory). You can configure the mittwald models (Devstral-Small-2-24B-Instruct-2512 works well for code generation) using the following configuration:
name: mittwald
version: 1.0.0
schema: v1
models:
- name: Devstral-Small-2-24B-Instruct-2512
provider: openai
model: Devstral-Small-2-24B-Instruct-2512
apiBase: https://llm.aihosting.mittwald.de/v1
apiKey: <INSERT-API-KEY>
roles:
- chat
- edit
- apply
capabilities:
- tool_use
context:
- provider: code
- provider: docs
- provider: diff
- provider: terminal
- provider: problems
- provider: folder
- provider: codebase
Cline (for Visual Studio Code, Cursor or Windsurf)
Cline works with Visual Studio Code, Cursor and Windsurf. Start by installing the appropriate IDE plugin.
When configuring Cline via its UI, select the following options:
- API Provider: Select "OpenAI Compatible"
- Base URL: Enter
https://llm.aihosting.mittwald.de/v1 - OpenAI Compatible API Key: Enter your LLM API key from the mStudio
- Model ID: Enter
Devstral-Small-2-24B-Instruct-2512
Zed
Zed supports OpenAI-compatible endpoints in its built-in Agent Panel.
- Open Agent Panel settings (
agent: open settings). - Under "LLM Providers", click "Add Provider" and choose "OpenAI API Compatible".
- Use
mittwaldas the provider name, set the API URL tohttps://llm.aihosting.mittwald.de/v1, and selectDevstral-Small-2-24B-Instruct-2512.
You can also configure this in settings.json:
{
"language_models": {
"openai_compatible": {
"mittwald": {
"api_url": "https://llm.aihosting.mittwald.de/v1",
"available_models": [
{
"name": "Devstral-Small-2-24B-Instruct-2512",
"display_name": "Devstral-Small-2-24B-Instruct-2512",
"max_tokens": 262144
}
]
}
}
}
}
Zed does not store API keys in settings.json. Set MITTWALD_API_KEY in your
environment.
Kilo Code
Kilo Code is available as a Visual Studio Code extension and supports OpenAI-compatible providers. Configure Devstral as follows:
-
Install the extension from the VS Code Marketplace.
-
Provider: OpenAI Compatible
-
Base URL:
https://llm.aihosting.mittwald.de/v1 -
API Key: your mStudio LLM API key
-
Model:
Devstral-Small-2-24B-Instruct-2512
Example environment:
export OPENAI_API_KEY=sk-...
export OPENAI_BASE_URL=https://llm.aihosting.mittwald.de/v1
Then select Devstral in Kilo Code's model picker for agent tasks.
CLI coding agents
OpenCode
OpenCode supports OpenAI-compatible providers. These
are either configured globally in the ~/config/opencode/opencode.json file,
or per-project in an opencode.json file in the project root.
Regardless of the location, the respective provider configuration could look like this:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"mittwald": {
"npm": "@ai-sdk/openai-compatible",
"name": "mittwald AI",
"options": {
"baseURL": "https://llm.aihosting.mittwald.de/v1",
"apiKey": "sk-..."
},
"models": {
"Devstral-Small-2-24B-Instruct-2512": {
"name": "Devstral-Small-2-24B-Instruct-2512"
}
}
}
}
}
Usage:
opencode run "migrate database schema to add user roles table"
opencode run "optimize the database queries in user_service.py"
For MCP server configuration, see the OpenCode MCP section below.
MCP and tool usage
In this section, we provide configuration examples and tips for using Model Context Protocol servers and web fetching with common coding agents.
Commonly used MCP servers
- Context7 MCP: Provides fresh documentation for popular libraries and frameworks, ensuring the model has access to the latest API changes and best practices.
- Brave Search MCP: Enables web search capabilities with strong privacy protections, useful for finding recent solutions, documentation, or checking current information.
- PostgreSQL MCP: Allows safe database introspection and querying, helping with schema design, query optimization, and data analysis.
- Directus MCP: Provides AI assistants with controlled access to your Directus CMS, enabling content creation, updates, querying collections, and asset management through natural language. Ideal for content editors and data analysts.
- OpenSearch MCP: Enables AI assistants to interact with OpenSearch clusters, performing operations like searching indices, retrieving mappings, analyzing cluster health, and managing shards through the Model Context Protocol.
- Apache Solr MCP: Allows AI to perform powerful hybrid search queries against Solr indexes, combining both keyword and vector search capabilities for enterprise search applications.
- TYPO3 MCP: Provides AI assistants with controlled access to your TYPO3 CMS installation, enabling content management, page operations, and backend automation through natural language. Uses the mittwald CLI's
mw app execcommand to connect via STDIO transport. Replacea-XXXXXwith your TYPO3 app installation ID (find viamw app list). Requires the hn/typo3-mcp-server Composer package installed in your TYPO3 instance. Note: Currently bypasses TYPO3 backend access controls and only works with local MCP clients due to platform limitations with.well-known/OAuth discovery.
For a comprehensive list of more MCP servers, have a look at the MCP Server Registry.
Continue
Continue can connect to Model Context Protocol (MCP) servers to grant the model controlled access to external tools and services.
Add MCP servers in ~/.continue/config.yaml:
mcpServers:
# Context7: Up-to-date library documentation
context7:
name: Context7
command: npx
args: ["-y", "@context7/mcp-server", "--stdio"]
env: { CONTEXT7_API_KEY: "your-context7-api-key" }
# Brave Search: Web search with privacy focus
brave-search:
name: Brave
command: npx
args: ["-y", "@modelcontextprotocol/server-brave-search", "--stdio"]
env: { BRAVE_API_KEY: "your-brave-api-key" }
# PostgreSQL: Database queries and schema inspection
postgres:
name: PostgreSQL
command: npx
args: ["-y", "@modelcontextprotocol/server-postgres", "--stdio"]
env:
POSTGRES_CONNECTION_STRING: "postgresql://user:pass@localhost:5432/dbname"
# Directus: Headless CMS data management
directus:
name: Directus
command: npx
args: ["-y", "@directus/content-mcp", "--stdio"]
env:
DIRECTUS_URL: "https://your-directus-instance.com"
DIRECTUS_TOKEN: "your-directus-token"
# OpenSearch: Search and analytics engine
opensearch:
name: OpenSearch
command: npx
args: ["-y", "@opensearch-project/mcp-server", "--stdio"]
env:
OPENSEARCH_URL: "https://localhost:9200"
OPENSEARCH_USERNAME: "admin"
OPENSEARCH_PASSWORD: "admin"
# Apache Solr: Enterprise search platform
solr:
name: Solr
command: uvx
args: ["solr-mcp"]
env:
SOLR_URL: "http://localhost:8983/solr"
# TYPO3: CMS content and backend management (requires mittwald CLI)
typo3:
name: TYPO3
command: mw
args:
[
"app",
"exec",
"--quiet",
"--installation-id=a-XXXXX",
"vendor/bin/typo3 mcp:server",
]
Ask the assistant explicitly to use a tool (e.g., "use Brave Search to find recent information about...", or "search our Solr index for documents about..."). Always scope access narrowly and review any data access or modifications.
Kilo Code
Kilo Code can also use MCP servers. Add them via settings (Tools → Add MCP Server) or in the configuration file.
Configuration example:
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@context7/mcp-server", "--stdio"],
"env": { "CONTEXT7_API_KEY": "your-key" }
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search", "--stdio"],
"env": { "BRAVE_API_KEY": "your-key" }
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "--stdio"],
"env": { "POSTGRES_CONNECTION_STRING": "postgresql://..." }
},
"directus": {
"command": "npx",
"args": ["-y", "@directus/content-mcp", "--stdio"],
"env": {
"DIRECTUS_URL": "https://your-directus-instance.com",
"DIRECTUS_TOKEN": "your-directus-token"
}
},
"opensearch": {
"command": "npx",
"args": ["-y", "@opensearch-project/mcp-server", "--stdio"],
"env": {
"OPENSEARCH_URL": "https://localhost:9200",
"OPENSEARCH_USERNAME": "admin",
"OPENSEARCH_PASSWORD": "admin"
}
},
"solr": {
"command": "uvx",
"args": ["solr-mcp"],
"env": {
"SOLR_URL": "http://localhost:8983/solr"
}
},
"typo3": {
"command": "mw",
"args": [
"app",
"exec",
"--quiet",
"--installation-id=a-XXXXX",
"vendor/bin/typo3 mcp:server"
]
}
}
}
Kilo Code can use a web-fetch/browsing tool (if enabled in your setup) to retrieve and summarize external pages.
- Enable the web/browsing tool in Kilo Code’s settings or tool list.
- Prefer public URLs (no auth), and provide the exact target links in your prompt.
- Keep network scope small: request a single page or shallow depth, and ask the agent to quote sources.
Prompt patterns
- “Fetch https://example.com/spec and summarize key endpoints in 10 bullet points. Include canonical links.”
- “Open https://huggingface.co/mistralai/Ministral-3-14B-Instruct-2512 and extract context length, modalities, and license. Return as JSON.”
OpenCode
OpenCode supports MCP servers through its global configuration file at ~/.config/opencode/opencode.json, or on a per-project basis in an opencode.json file in the project root.
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@context7/mcp-server", "--stdio"],
"env": { "CONTEXT7_API_KEY": "your-key" }
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "--stdio"],
"env": { "POSTGRES_CONNECTION_STRING": "postgresql://..." }
},
"directus": {
"command": "npx",
"args": ["-y", "@directus/content-mcp", "--stdio"],
"env": {
"DIRECTUS_URL": "https://your-directus-instance.com",
"DIRECTUS_TOKEN": "your-directus-token"
}
},
"opensearch": {
"command": "npx",
"args": ["-y", "@opensearch-project/mcp-server", "--stdio"],
"env": {
"OPENSEARCH_URL": "https://localhost:9200",
"OPENSEARCH_USERNAME": "admin",
"OPENSEARCH_PASSWORD": "admin"
}
},
"solr": {
"command": "uvx",
"args": ["solr-mcp"],
"env": {
"SOLR_URL": "http://localhost:8983/solr"
}
},
"typo3": {
"command": "mw",
"args": [
"app",
"exec",
"--quiet",
"--installation-id=a-XXXXX",
"vendor/bin/typo3 mcp:server"
]
}
}
}
Claude code
In Claude Code, MCP servers are configured either globally (in the ~/.claude.json file in your home directory) or per-project (in a .mcp.json file in the project root).
In either configuration file, the mcpServers section defines the available MCP servers:
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@context7/mcp-server", "--stdio"],
"env": {
"CONTEXT7_API_KEY": "your-context7-api-key"
}
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search", "--stdio"],
"env": {
"BRAVE_API_KEY": "your-brave-api-key"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "--stdio"],
"env": {
"POSTGRES_CONNECTION_STRING": "postgresql://user:password@localhost:5432/dbname"
}
},
"directus": {
"command": "npx",
"args": ["-y", "@directus/content-mcp", "--stdio"],
"env": {
"DIRECTUS_URL": "https://your-directus-instance.com",
"DIRECTUS_TOKEN": "your-directus-token"
}
},
"opensearch": {
"command": "npx",
"args": ["-y", "@opensearch-project/mcp-server", "--stdio"],
"env": {
"OPENSEARCH_URL": "https://localhost:9200",
"OPENSEARCH_USERNAME": "admin",
"OPENSEARCH_PASSWORD": "admin"
}
},
"solr": {
"command": "uvx",
"args": ["solr-mcp"],
"env": {
"SOLR_URL": "http://localhost:8983/solr"
}
},
"typo3": {
"command": "mw",
"args": [
"app",
"exec",
"--quiet",
"--installation-id=a-XXXXX",
"vendor/bin/typo3 mcp:server"
]
}
}
}
WebFetch configuration
Claude Code supports built-in web fetching capabilities. Configure in settings.json:
{
"webFetch": {
"enabled": true,
"allowedDomains": [
"github.com",
"stackoverflow.com",
"docs.python.org",
"developer.mozilla.org"
],
"blockedDomains": [],
"maxDepth": 2,
"followRedirects": true,
"timeout": 10000,
"userAgent": "ClaudeCode/1.0",
"maxContentLength": 1048576
}
}
WebFetch usage examples
# Fetch and analyze API documentation
claude-code "fetch https://api.github.com/docs and summarize the authentication methods"
# Compare implementations
claude-code "fetch https://github.com/user/repo/blob/main/auth.py and compare with our current auth.py implementation"
# Research best practices
claude-code "fetch https://docs.python.org/3/library/asyncio.html and help me refactor our code to use async/await properly"
Fine-tuning WebFetch behavior
{
"webFetch": {
"enabled": true,
"allowedDomains": ["*.github.com", "docs.*", "*.readthedocs.io"],
"maxDepth": 1,
"extractionRules": {
"removeSelectors": [".sidebar", ".footer", "nav"],
"focusSelectors": ["article", "main", ".documentation"]
},
"caching": {
"enabled": true,
"ttl": 3600
}
}
}
Model selection
- Ministral-3-14B-Instruct-2512: chat + vision, general assistants, multimodal UX.
- Devstral-Small-2-24B-Instruct-2512: agentic coding, tool use, multi-file edits; supports vision.
Long-context tips (256k)
- Avoid sending entire repositories; retrieve relevant files/function bodies only.
- Summarize prior steps and include IDs/anchors to rehydrate context on demand.
- Stream responses; raise
max_tokensonly when necessary. - Prefer deterministic sampling for tools and edits:
temperature <= 0.2. - Limit repo scope; request specific files/functions to keep context efficient.
- Prefer JSON/tool outputs when orchestrating multi-step changes.
Disclaimer
Third‑party tools, MCP servers and external links are provided for convenience without endorsement or warranty. Use them at your own risk, review licenses and privacy policies, and scope access conservatively (least privilege). Avoid sending sensitive data to external services unless required and permitted.
Usage limits
Usage limits are enforced by the booked tariff. Please look up your tariff and limits.