Archy 架构图构建器
STDIO使用Mermaid语法生成架构图的服务器
使用Mermaid语法生成架构图的服务器
Archy is an MCP (Model Context Protocol) server that generates architectural diagrams using Mermaid syntax. It can process both natural language descriptions and GitHub repository URLs to create various types of diagrams.
Clone the repository:
git clone https://github.com/phxdev1/archy.git cd archy
Install dependencies:
npm install
Build the project:
npm run build
This compiles the TypeScript source files to JavaScript in the build
directory.
Archy includes a convenient installation script that automatically configures the MCP server for both VS Code and Claude:
npm run install-mcp
This script:
No need to manually edit JSON configuration files like some kind of cave-dwelling animal! The script handles all the tedious configuration work for you, so you can focus on creating beautiful diagrams instead of wrestling with file paths and permissions.
Archy can be configured using environment variables:
GITHUB_TOKEN
: GitHub API token for authenticated requests (optional)OPENROUTER_API_KEY
: OpenRouter API key for AI-powered diagram generation (optional)Archy includes integration with OpenRouter through LangChain, enabling enhanced AI-powered diagram generation. When an OpenRouter API key is configured, additional tools become available:
To use these features:
OPENROUTER_API_KEY
environment variable before running ArchyArchy supports exporting Mermaid diagrams to various image formats:
Images can be exported with customizable dimensions and background colors.
Archy can analyze Git repositories to track their evolution over time:
To use Archy with an MCP client, add it to your MCP settings file if you're a masochist:
{ "mcpServers": { "archy": { "command": "node", "args": ["/path/to/archy/build/index.js"], "env": { "GITHUB_TOKEN": "your-github-token" } } } }
Generates a Mermaid diagram from a text description.
Parameters:
description
: Text description of the diagram to generatediagramType
: Type of diagram to generate (e.g., 'flowchart', 'classDiagram', etc.)Example:
{ "description": "A user authentication system with login, registration, and password reset", "diagramType": "flowchart" }
Generates a Mermaid diagram from a GitHub repository.
Parameters:
repoUrl
: URL of the GitHub repositorydiagramType
: Type of diagram to generate (e.g., 'classDiagram', 'sequenceDiagram', etc.)Example:
{ "repoUrl": "https://github.com/username/repository", "diagramType": "classDiagram" }
Lists all supported diagram types with descriptions.
Parameters: None
The following tools are available when an OpenRouter API key is configured:
Generates a Mermaid diagram from a text description using AI (LangChain with OpenRouter).
Parameters:
description
: Text description of the diagram to generatediagramType
: Type of diagram to generate (e.g., 'flowchart', 'classDiagram', etc.)useAdvancedModel
: (Optional) Whether to use a more advanced AI model for complex diagramsExample:
{ "description": "A microservice architecture with user service, product service, and order service communicating through a message queue", "diagramType": "flowchart", "useAdvancedModel": true }
Generates a Mermaid diagram from code using AI.
Parameters:
code
: The code to analyze and generate a diagram fromdiagramType
: Type of diagram to generate (e.g., 'classDiagram', 'flowchart', etc.)Example:
{ "code": "class User { ... } class AuthService { ... }", "diagramType": "classDiagram" }
Generates a Mermaid diagram showing differences between two versions of code.
Parameters:
beforeCode
: The code before changesafterCode
: The code after changesdiagramType
: Type of diagram to generate (e.g., 'classDiagram', 'flowchart', etc.)Example:
{ "beforeCode": "class User { ... }", "afterCode": "class User { ... additional methods ... }", "diagramType": "classDiagram" }
Exports a Mermaid diagram to an image format (PNG, SVG, or PDF).
Parameters:
mermaidCode
: The Mermaid diagram code to exportformat
: (Optional) The image format to export to ('png', 'svg', 'pdf', default: 'png')width
: (Optional) The width of the image in pixels (default: 800)height
: (Optional) The height of the image in pixels (default: 600)backgroundColor
: (Optional) The background color of the image (CSS color or "transparent", default: '#ffffff')Example:
{ "mermaidCode": "flowchart TD\n A[Start] --> B[End]", "format": "svg", "width": 1200, "height": 800, "backgroundColor": "#f0f0f0" }
Generates a diagram showing the evolution of a repository over time.
Parameters:
repoUrl
: URL of the GitHub repositorydiagramType
: Type of diagram to generate (e.g., 'gitGraph', 'flowchart', etc.)filepath
: (Optional) Path to a specific file to trackcommitLimit
: (Optional) Maximum number of commits to analyze (default: 10)Example:
{ "repoUrl": "https://github.com/username/repository", "diagramType": "gitGraph", "filepath": "src/main.js", "commitLimit": 5 }
generate_diagram_from_text({
"description": "Create a class diagram for a library system with Book, Author, and Library classes. Books have titles and ISBNs. Authors have names and can write multiple books. Libraries contain many books.",
"diagramType": "classDiagram"
})
Result:
classDiagram class Book { +String title +String ISBN +getDetails() } class Author { +String name +List books +addBook(Book) } class Library { +List books +addBook(Book) +findBookByISBN(String) } Author "1" -- "n" Book: writes Library "1" -- "n" Book: contains
generate_diagram_from_github({
"repoUrl": "https://github.com/username/api-service",
"diagramType": "flowchart"
})
Result:
flowchart TD A[Client] --> B[API Gateway] B --> C{Authentication} C -->|Valid| D[Route Request] C -->|Invalid| E[Return 401] D --> F[Service 1] D --> G[Service 2] D --> H[Service 3] F --> I[Database] G --> I H --> I
To run the server in development mode with automatic reloading:
npm run dev
This uses nodemon
and ts-node
to run the TypeScript code directly without a separate build step, automatically restarting when files change.
You can run the TypeScript compiler directly using the following methods:
# Using npx to run the local TypeScript installation npx tsc # Compile with specific tsconfig file npx tsc --project tsconfig.json # Watch mode - automatically recompile when files change npx tsc --watch # Compile specific files npx tsc src/index.ts src/server.ts
If you have TypeScript installed globally:
# Install TypeScript globally (if not already installed) npm install -g typescript # Run the TypeScript compiler tsc # Compile with specific tsconfig file tsc --project tsconfig.json # Watch mode tsc --watch
--outDir <directory>
: Specify output directory for compiled files--target <ES version>
: Specify ECMAScript target version (e.g., ES2020)--module <module system>
: Specify module system (e.g., NodeNext)--declaration
: Generate .d.ts declaration files--sourceMap
: Generate source map files for debugging--strict
: Enable all strict type checking options--noEmit
: Check for errors without generating output files--noImplicitAny
: Raise error on expressions with implied 'any' typeFor a complete list of compiler options, run npx tsc --help
or refer to the TypeScript documentation.
Archy is built with TypeScript using the following configuration:
{ "compilerOptions": { "target": "ES2020", "module": "NodeNext", "moduleResolution": "NodeNext", "esModuleInterop": true, "strict": true, "outDir": "build", "declaration": true, "sourceMap": true, "resolveJsonModule": true }, "include": ["src/**/*"], "exclude": ["node_modules", "build"] }
Key TypeScript features used:
src/
: TypeScript source files
src/index.ts
: Main entry point and server implementationsrc/server.ts
: Server implementationsrc/generators/
: Diagram generation logicsrc/utils/
: Utility functions and helpersbuild/
: Compiled JavaScript outputexamples/
: Example usage scriptstest/
: Test files