Run Softagram code analysis in a Docker container and query architectural intelligence via Model Context Protocol (MCP).
Claude (or any MCP-compatible AI assistant) can analyze your repositories and answer questions like:
- "What depends on this class?"
- "What would break if I change this function?"
- "Show me the structure of this module"
The setup script walks you through login, repository selection, MCP configuration, and verification — all in one command:
./setup.shClick to expand manual steps
You need credentials provided by Softagram. Contact support@softagram.com if you don't have them.
docker login registry.softagram.comEdit docker-compose.yml to mount your repositories (see Mounting Your Code), then:
docker compose up -dOr without Compose:
docker run -d --name softagram-analyzer \
--tmpfs /tmp:size=2G \
-v ~/code/my-project:/input/my-project:ro \
-p 8008:8008 \
registry.softagram.com/softagram-analyzer-mcp:latestAdd Softagram to your MCP configuration. If you don't have ~/.claude/mcp.json yet:
cp mcp.json.example ~/.claude/mcp.jsonIf you already have ~/.claude/mcp.json with other servers, merge the "softagram" entry into your existing mcpServers object — don't overwrite the file.
For project-specific configuration, copy to .mcp.json in the project root instead.
# Check the container is running
docker ps | grep softagram-analyzer
# Check the MCP server responds
curl -s -o /dev/null -w "%{http_code}" http://localhost:8008/mcp
# Any response (200, 405, etc.) means the server is up.
# "000" or connection refused means it's still starting — wait a few seconds.Start a new Claude Code session (needed to pick up MCP config), then:
You: "Analyze my project at /input/my-project"
You: "What depends on the UserService class?"
You: "What would break if I change the validate function?"
You: "Show me the architecture of the auth module"
The container needs access to the repositories you want to analyze. Mount them
under /input:
# docker-compose.yml — add your repos under volumes:
services:
analyzer:
volumes:
- ~/code/my-frontend:/input/my-frontend:ro
- ~/code/my-backend:/input/my-backend:roOr with docker run:
docker run -d --name softagram-analyzer \
-v ~/code/my-frontend:/input/my-frontend:ro \
-v ~/code/my-backend:/input/my-backend:ro \
-p 8008:8008 \
registry.softagram.com/softagram-analyzer-mcp:latestRepositories are mounted read-only (:ro) — the analyzer never modifies your code.
You can also analyze public repositories by URL without mounting:
"Analyze https://github.com/expressjs/express"
Analysis results are stored inside the container at /tmp/analysis-outputs.
To keep them across container restarts:
# docker-compose.yml
services:
analyzer:
volumes:
- ./analysis-outputs:/tmp/analysis-outputsOnce connected, Claude has access to these tools:
| Tool | What it does |
|---|---|
| analyze_repo | Run full code analysis on a repository |
| get_analysis_status | List completed analyses |
| load_model | Load an analysis model for querying |
| search_elements | Find classes, functions, files by name |
| get_dependencies | What does X depend on? What depends on X? |
| get_structure | Explore the code hierarchy |
| analyze_change_impact | What breaks if I change X? |
| download_model | Export the analysis model |
1. "Analyze /input/my-backend"
→ runs full analysis, produces architectural model
2. "What does the OrderService depend on?"
→ loads model, searches for OrderService, queries outgoing dependencies
3. "What would break if I change the PaymentGateway interface?"
→ traces all direct and transitive dependents, grouped by file
4. "Show me the structure of the api/ directory"
→ displays file/class/function hierarchy
| Variable | Default | Description |
|---|---|---|
MCP_PORT |
8008 |
Port the MCP server listens on |
MCP_TRANSPORT |
streamable-http |
Protocol: streamable-http or sse |
The default transport is Streamable HTTP — the current MCP standard for remote servers. It uses stateless HTTP POST requests and works well with proxies and load balancers.
Endpoint: http://localhost:8008/mcp
If your MCP client only supports SSE (legacy), set the environment variable:
# docker-compose.yml
services:
analyzer:
environment:
- MCP_TRANSPORT=sseSSE endpoint: http://localhost:8008/sse
# docker-compose.yml
services:
analyzer:
ports:
- "9090:8008"Update mcp.json accordingly:
{
"mcpServers": {
"softagram": {
"type": "streamable-http",
"url": "http://localhost:9090/mcp"
}
}
}- Docker (Docker Desktop or Docker Engine)
- ~4 GB disk space for the image
- ~2 GB RAM recommended
- Network access for cloning Git repositories (optional)
Softagram analyzes dependencies, structure, and metrics for:
Python, Java, Kotlin, JavaScript, TypeScript, C#, F#, C/C++, Go, Dart, Ruby, PHP, Scala, Groovy, Swift, Objective-C, Haskell, Clojure, COBOL, MATLAB, and more.
After starting the container, check that the MCP server is responding:
curl -s -o /dev/null -w "%{http_code}" http://localhost:8008/mcp- Any HTTP status (200, 405, etc.) — server is running
- 000 / connection refused — server is still starting, wait a few seconds and retry
- No response after 60 seconds — check
docker logs softagram-analyzer
Then start a new Claude Code session and ask Claude to list available tools — you should see the Softagram tools (analyze_repo, get_dependencies, etc.).
Container won't start:
docker logs softagram-analyzer"Connection refused" on port 8008:
Wait a few seconds after starting — the server needs time to initialize.
Verify with: curl -s -o /dev/null -w "%{http_code}" http://localhost:8008/mcp
Analysis takes a long time: First analysis of a large codebase can take several minutes. Subsequent analyses are faster due to caching.
Image not found:
docker pull registry.softagram.com/softagram-analyzer-mcp:latestMCP tools not visible in Claude Code:
Make sure ~/.claude/mcp.json (or .mcp.json) contains the "softagram" server entry, and that you started a new session after adding it.
This software is proprietary. See LICENSE for details. Usage requires a valid Softagram license.
- Documentation: docs.softagram.com
- Email: support@softagram.com