Arm MCP Server
Official Arm MCP server for code migration, optimization, and Arm architecture guidance
★ 64Apache-2.0devtools
Install
Config snippet generator goes here (5 client tabs)
README
# Arm MCP Server
An [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server providing AI assistants with tools and knowledge for Arm architecture development, migration, and optimization.
## Features
This MCP server equips AI assistants with specialized tools for Arm development:
- **Knowledge Base Search**: Semantic search across Arm documentation, learning resources, intrinsics, and software compatibility information
- **Code Migration Analysis**: Scan codebases for Arm compatibility using [migrate-ease](https://github.com/migrate-ease/migrate-ease) (supports C++, Python, Go, JavaScript, Java)
- **Container Architecture Inspection**: Check Docker image architecture support using integrated [Skopeo](https://github.com/containers/skopeo) and check-image tools.
- **Assembly Performance Analysis**: Analyze assembly code performance using LLVM-MCA
- **Arm Performix**: Run APX recipe workflows against a target device over SSH to capture and analyze workload performance data
- **System Information**: Instructions for gathering detailed system architecture information via [sysreport](https://github.com/ArmDeveloperEcosystem/sysreport)
## Pre-Built Image
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`
## Prerequisites
- Docker (with buildx support for multi-arch builds)
- An MCP-compatible AI assistant client (e.g. GitHub Copilot, Kiro CLI, Codex CLI, Claude Code, etc)
## Quick Start
### 1. Build the Docker Image
From the root of this repository:
```bash
docker buildx build --platform linux/arm64,linux/amd64 -f mcp-local/Dockerfile -t armlimited/arm-mcp .
```
For a single-platform build (faster):
```bash
docker buildx build -f mcp-local/Dockerfile -t armlimited/arm-mcp . --load
```
### 2. Configure Your MCP Client
Choose 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.
#### Claude Code
Add to `.mcp.json` in your project:
```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",
"armlimited/arm-mcp"
]
}
}
}
```
#### GitHub Copilot (VS Code)
Add to `.vscode/mcp.json` in your project, or globally at `~/Library/Application Support/Code/User/mcp.json` (macOS):
```json
{
"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
#### AWS Kiro CLI
Add to `~/.kiro/settings/mcp.json`:
```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
}
}
}
```
#### Gemini CLI
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:
```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",
"armlimited/arm-mcp"
]
}
}
}
```
#### MCP Clients using TOML format (e.g. Codex CLI)
```toml
[mcp_servers.arm-mcp]
command = "docker"
args = [
"run",
"--rm",
"-i",
"-v", "/path/to/your/workspace:/workspace",