Official Arm MCP server for code migration, optimization, and Arm architecture guidance
An Model Context Protocol (MCP) server providing AI assistants with tools and knowledge for Arm architecture development, migration, and optimization.
This MCP server equips AI assistants with specialized tools for Arm development:
If you would prefer to use a pre-built, multi-arch image, the official image can be found in Docker Hub here: armlimited/arm-mcp:latest
From the root of this repository:
docker buildx build --platform linux/arm64,linux/amd64 -f mcp-local/Dockerfile -t armlimited/arm-mcp .For a single-platform build (faster):
docker buildx build -f mcp-local/Dockerfile -t armlimited/arm-mcp . --loadChoose the configuration that matches your MCP client:
The examples below include the optional Docker arguments required for Arm Performix. These SSH-related settings are only needed when you want the MCP server to run remote commands on a target device through Arm Performix. If you are not using Arm Performix, you can omit the -e and SSH -v lines.
Add to .mcp.json in your project:
{
"mcpServers": {
"arm-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v", "/path/to/your/workspace:/workspace",
"-e", "SSH_KEY_PATH=/run/keys/ssh-key.pem",
"-e", "KNOWN_HOSTS_PATH=/run/keys/known_hosts",
"-v", "/path/to/your/ssh/private_key:/run/keys/ssh-key.pem:ro",
"-v", "/path/to/your/ssh/known_hosts:/run/keys/known_hosts:ro",
"armlimited/arm-mcp"
]
}
}
}Add to .vscode/mcp.json in your project, or globally at ~/Library/Application Support/Code/User/mcp.json (macOS):
{
"servers": {
"arm-mcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v", "/path/to/your/workspace:/workspace",
"-e", "SSH_KEY_PATH=/run/keys/ssh-key.pem",
"-e", "KNOWN_HOSTS_PATH=/run/keys/known_hosts",
"-v", "/path/to/your/ssh/private_key:/run/keys/ssh-key.pem:ro",
"-v", "/path/to/your/ssh/known_hosts:/run/keys/known_hosts:ro",
"armlimited/arm-mcp"
]
}
}
}The easiest way to open this file in VS Code for editing is command+shift+p and search for
MCP: Open User Configuration
Add to ~/.kiro/settings/mcp.json:
{
"mcpServers": {
"arm-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v", "/path/to/your/workspace:/workspace",
"-e", "SSH_KEY_PATH=/run/keys/ssh-key.pem",
"-e", "KNOWN_HOSTS_PATH=/run/keys/known_hosts",
"-v", "/path/to/your/ssh/private_key:/run/keys/ssh-key.pem:ro",
"-v", "/path/to/your/ssh/known_hosts:/run/keys/known_hosts:ro",
"--name", "arm-mcp",
"armlimited/arm-mcp"
],
"timeout": 60000
}
}
}It is recommended to use a project-local configuration file to ensure the relevant workspace is mounted.
Add to .gemini/settings.json in your project root:
{
"mcpServers": {
"arm-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v", "/path/to/your/workspace:/workspace",
"-e", "SSH_KEY_PATH=/run/keys/ssh-key.pem",
"-e", "KNOWN_HOSTS_PATH=/run/keys/known_hosts",
"-v", "/path/to/your/ssh/private_key:/run/keys/ssh-key.pem:ro",
"-v", "/path/to/your/ssh/known_hosts:/run/keys/known_hosts:ro",
"armlimited/arm-mcp"
]
}
}
}[mcp_servers.arm-mcp]
command = "docker"
args = [
"run",
"--rm",
"-i",
"-v", "/path/to/your/workspace:/workspace",
"-e", "SSH_KEY_PATH=/run/keys/ssh-key.pem",
"-e", "KNOWN_HOSTS_PATH=/run/keys/known_hosts",
"-v", "/path/to/your/ssh/private_key:/run/keys/ssh-key.pem:ro",
"-v", "/path/to/your/ssh/known_hosts:/run/keys/known_hosts:ro",
"armlimited/arm-mcp"
]Note: Replace /path/to/your/workspace with the actual path to your project directory that you want the MCP server to access. If you are enabling Arm Performix, also replace the SSH key and known_hosts paths with your local files.
After updating the configuration, restart your MCP client to load the Arm MCP server.
mcp-local/: The MCP server implementation
server.py: Main FastMCP server with tool definitionsutils/: Helper modules for each tooldata/: Pre-built knowledge base (embeddings and metadata)Dockerfile: Multi-stage Docker buildembedding-generation/: Scripts for regenerating the knowledge base from source documentspip install -r tests/requirements.txt within the mcp_local directory.python -m pytest -s tests/test_mcp.pyTo debug or explore the container environment:
docker run --rm -it --entrypoint /bin/bash armlimited/arm-mcptimeout value in your MCP client configuration (e.g., "timeout": 120000 for 2 minutes)--platform linux/amd64 or --platform linux/arm64Contributions are welcome! Please feel free to submit issues or pull requests.
When contributing:
Copyright © 2025, Arm Limited and Contributors. All rights reserved.
Licensed under the Apache License, Version 2.0. See LICENSE for details.