Arcas OnlineEDA MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Arcas OnlineEDA MCP Servercreate a formal verification project for my RISC-V CPU design"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Arcas OnlineEDA MCP Server
MCP (Model Context Protocol) server for interacting with Arcas OnlineEDA platform - a comprehensive web-based Electronic Design Automation tool suite for formal verification, equivalence checking, power analysis, security verification, and FPGA design.
Overview
This MCP server provides programmatic access to Arcas OnlineEDA platform through web automation, enabling AI assistants and automated workflows to:
Create and manage EDA projects with intelligent project type detection
Upload design files with automatic format recognition
Execute various verification types with customizable parameters
Navigate the platform seamlessly
Process natural language queries with extensive example matching
Access platform resources through well-defined URIs
Related MCP server: EDA Tools MCP Server
Features
Core Capabilities
Formal Verification: Verify design properties, assertions, and safety requirements
Equivalence Checking: Compare functional equivalence between RTL and gate-level designs
Power Analysis: Analyze and optimize dynamic and static power consumption
Security Verification: Detect vulnerabilities, side-channels, and information leakage
FPGA Verification: Platform-specific verification for Xilinx, Intel/Altera designs
Available Tools
arcas_onlineeda_navigate - Navigate platform sections
Actions:
home,projects,new-project,documentation,settingsSmart navigation with session state preservation
arcas_onlineeda_project - Comprehensive project management
Actions:
create,open,list,deleteProject types:
formal,equivalence,power,security,fpgaAutomatic project type detection from context
arcas_onlineeda_upload_file - Intelligent file upload
Supported formats: Verilog (.v), SystemVerilog (.sv), VHDL (.vhd/.vhdl)
Constraint files: SDC, XDC for timing and placement
Automatic file type detection
arcas_onlineeda_run_verification - Advanced verification execution
Types:
formal,equivalence,power,security,fpgaConfigurable parameters: timeout, depth, specific properties
Real-time progress monitoring
arcas_onlineeda_natural_language - AI-powered natural language interface
Extensive example database for high-confidence matching
Workflow suggestions and multi-step guidance
Context-aware recommendations
Available Resources
Access platform data through these URIs:
arcas://projects- List all projects in JSON formatarcas://verification-results- Latest verification resultsarcas://platform-status- Current platform and connection statusarcas://documentation- Platform documentation in Markdown
Installation
# Clone the repository
git clone <repository-url>
cd arcas-onlineeda-mcp
# Install dependencies
npm install
# Build the server
npm run build
# Optional: Run setup script for browser dependencies
npm run setupConfiguration
Environment Variables
Create a .env file in the project root:
# Arcas OnlineEDA credentials (optional - will prompt if not set)
ONLINEEDA_USERNAME=your_username
ONLINEEDA_PASSWORD=your_password
# Browser settings
ONLINEEDA_HEADLESS=true # Set to false to see browser actions
ONLINEEDA_TIMEOUT=30000 # Page load timeout in ms
# Logging
LOG_LEVEL=info # Options: error, warn, info, debug
LOG_FILE=arcas-onlineeda.log # Log file locationMCP Configuration
Add to your MCP settings file (e.g., ~/.mcp/settings.json):
{
"mcpServers": {
"arcas-onlineeda": {
"command": "node",
"args": ["/path/to/arcas-onlineeda-mcp/dist/index.js"],
"env": {
"ONLINEEDA_USERNAME": "your_username",
"ONLINEEDA_PASSWORD": "your_password"
}
}
}
}Usage Examples
Basic Tool Usage
Create a Formal Verification Project
{
"tool": "arcas_onlineeda_project",
"arguments": {
"action": "create",
"projectName": "risc_v_core_verification",
"projectType": "formal"
}
}Upload Multiple Design Files
{
"tool": "arcas_onlineeda_upload_file",
"arguments": {
"projectId": "proj_123",
"filePath": "./rtl/cpu_core.v",
"fileType": "verilog"
}
}Run Security Verification
{
"tool": "arcas_onlineeda_run_verification",
"arguments": {
"projectId": "proj_123",
"verificationType": "security",
"options": {
"timeout": 600,
"properties": ["information_leakage", "timing_attacks", "power_analysis"]
}
}
}Natural Language Examples
The natural language interface understands a wide variety of queries:
Project Creation Queries
"I want to create a new formal verification project for my CPU design"
"Let's start a power analysis project for the GPU controller"
"Set up equivalence checking between RTL and gate-level netlist"
"Create a security verification project for my AES encryption module"
Verification Queries
"Check if my RISC-V core meets all safety properties"
"Verify that the optimized design is functionally equivalent to the original"
"Analyze power consumption during different operating modes"
"Find security vulnerabilities in my crypto module"
"Run formal verification with 20 cycle depth"
File Operation Queries
"Upload my Verilog files for the memory controller"
"Add the SystemVerilog testbench to the project"
"Import SDC timing constraints"
"Load all RTL files from the design directory"
Navigation and Status Queries
"Show me all my verification projects"
"Go to the documentation"
"What's the status of my current verification?"
"Navigate to project settings"
Complex Workflow Queries
"I need to verify my AES encryption module meets FIPS standards"
"Compare power consumption before and after optimization"
"Set up a complete verification flow for my SoC design"
"Help me debug failing assertions in my formal verification"
Accessing Resources
// List all projects
{
"action": "read_resource",
"uri": "arcas://projects"
}
// Check platform status
{
"action": "read_resource",
"uri": "arcas://platform-status"
}
// Get documentation
{
"action": "read_resource",
"uri": "arcas://documentation"
}Advanced Usage
Workflow Automation
Create complex workflows by chaining tools:
// Complete verification workflow
const workflow = [
{
tool: "arcas_onlineeda_project",
args: { action: "create", projectType: "formal", projectName: "soc_verification" }
},
{
tool: "arcas_onlineeda_upload_file",
args: { filePath: "./rtl/soc_top.v", fileType: "verilog" }
},
{
tool: "arcas_onlineeda_upload_file",
args: { filePath: "./constraints/timing.sdc", fileType: "constraints" }
},
{
tool: "arcas_onlineeda_run_verification",
args: { verificationType: "formal", options: { depth: 30, timeout: 1200 } }
}
];Custom Verification Properties
Define specific properties for targeted verification:
{
"tool": "arcas_onlineeda_run_verification",
"arguments": {
"projectId": "proj_456",
"verificationType": "formal",
"options": {
"properties": [
"assert property (@(posedge clk) req |-> ##[1:3] ack);",
"assert property (@(posedge clk) !overflow);"
],
"depth": 50
}
}
}Architecture
The server implements a modular architecture:
arcas-onlineeda-mcp/
├── src/
│ ├── index.ts # Main server entry point
│ ├── tools/ # Tool implementations
│ │ ├── base.ts # Abstract tool class
│ │ ├── navigate.ts # Navigation tool
│ │ ├── project.ts # Project management
│ │ ├── upload-file.ts # File upload handling
│ │ ├── run-verification.ts # Verification execution
│ │ └── natural-language.ts # NLP interface
│ ├── utils/ # Utility modules
│ │ ├── browser.ts # Puppeteer browser management
│ │ └── logger.ts # Winston logging
│ └── types/ # TypeScript type definitions
├── package.json
├── tsconfig.json
└── README.mdKey Components
Browser Manager: Handles Puppeteer lifecycle, authentication, and page navigation
Tool Base Class: Provides consistent validation and error handling
Natural Language Processor: Extensive example matching and intent detection
Resource Provider: Serves platform data through MCP resources
Session Manager: Maintains login state and project context
Development
# Run in development mode with hot reload
npm run dev
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Lint code
npm run lint
# Format code
npm run format
# Type check
npm run typecheck
# Build for production
npm run buildAdding New Tools
Create a new tool class extending
AbstractToolImplement required methods:
getName(),getDescription(),execute()Add tool to the server's tool map
Update natural language examples
Troubleshooting
Common Issues
Browser Connection
Error: Failed to launch browserSolution: Install Chrome/Chromium or run npm run setup
Authentication Failures
Error: Login failedSolutions:
Verify credentials in environment variables
Check if account is active on OnlineEDA
Try manual login with
ONLINEEDA_HEADLESS=false
Element Not Found
Error: Waiting for selector failedSolutions:
Platform UI may have changed
Check internet connectivity
Increase timeout values
Debug Mode
Enable detailed logging:
LOG_LEVEL=debug npm run devView browser actions:
ONLINEEDA_HEADLESS=false npm run devPerformance Tips
Reuse project sessions when possible
Batch file uploads for better performance
Use appropriate timeouts for long-running verifications
Enable caching for frequently accessed resources
Security Considerations
Credentials: Stored securely in environment variables
Browser Isolation: Runs in sandboxed Chromium instance
Audit Logging: All operations logged with timestamps
Session Management: Automatic logout on shutdown
Data Privacy: No data stored locally except logs
Contributing
We welcome contributions! Please follow these steps:
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit changes (
git commit -m 'Add amazing feature')Push to branch (
git push origin feature/amazing-feature)Open a Pull Request
Development Guidelines
Write tests for new features
Update documentation
Follow TypeScript best practices
Add natural language examples for new capabilities
Ensure backward compatibility
Support
Issues: Report bugs via GitHub Issues
Documentation: Access via
arcas://documentationExamples: See natural language tool for extensive examples
Community: Join our Discord server
License
MIT License - see LICENSE file for details
Acknowledgments
Arcas Microelectronics for the OnlineEDA platform
Model Context Protocol team for the MCP framework
Puppeteer team for browser automation tools
Available Tools
5 toolsarcas_onlineeda_natural_languageC
Process natural language queries for Arcas OnlineEDA operations with extensive examples
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| context | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'process' and 'extensive examples' but doesn't disclose behavioral traits like whether this is a read-only or mutating operation, authentication needs, rate limits, error handling, or what 'process' entails (e.g., returns results, executes commands). This leaves significant gaps for a tool with 2 parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that's appropriately sized. It's front-loaded with the core purpose ('Process natural language queries...'), though the 'extensive examples' part feels tacked on without clear value. There's minimal waste, but it could be more structured with clearer separation of purpose and usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters with 0% schema coverage, no annotations, no output schema, and sibling tools, the description is incomplete. It doesn't explain what the tool returns, how it differs from other tools, or provide enough context for safe and effective use. For a natural language processing tool in a technical domain like EDA, more detail on behavior and outputs is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'natural language queries' which aligns with the 'query' parameter, but doesn't explain the 'context' parameter at all. The phrase 'extensive examples' might hint at usage but adds no specific semantics about parameter formats, constraints, or relationships. This fails to adequately cover the 2 undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool 'Process natural language queries for Arcas OnlineEDA operations' which provides a clear verb ('process') and resource ('natural language queries'), but it doesn't specify what type of processing occurs (e.g., interpretation, translation, execution) or how it differs from sibling tools like 'arcas_onlineeda_navigate' or 'arcas_onlineeda_project'. The mention of 'extensive examples' is vague about purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It mentions 'extensive examples' which might imply usage for complex queries, but there's no clear when/when-not criteria or named alternatives. Without context, it's unclear if this is for general queries, specific operations, or how it complements other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arcas_onlineeda_projectD
Manage projects in OnlineEDA platform
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | ||
| projectName | No | ||
| projectType | No | ||
| projectId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but fails completely. 'Manage projects' doesn't indicate whether this is a read or write operation, what permissions are required, whether actions are destructive, what happens when projects are deleted, or what the response format looks like. For a tool with four actions including 'delete', this lack of behavioral information is critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - a single five-word phrase. While this is efficient and front-loaded, it's so brief that it under-specifies rather than being appropriately sized. Every word earns its place, but there simply aren't enough words to be helpful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (four actions including potentially destructive operations), zero annotation coverage, zero schema description coverage, and no output schema, the description is completely inadequate. It doesn't explain what the tool does, how to use it, what parameters mean, what behaviors to expect, or what results will be returned. This leaves the agent with insufficient information to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides zero information about any of the four parameters. With 0% schema description coverage (the schema only has basic type information without meaningful descriptions), the description fails to compensate by explaining what 'action', 'projectName', 'projectType', or 'projectId' mean, when they're required, or how they interact. The agent would have to guess parameter usage from the minimal schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Manage projects in OnlineEDA platform' is a tautology that essentially restates the tool name 'arcas_onlineeda_project'. It provides a generic verb ('manage') without specifying what management actions are available or what resources are involved. While it mentions 'projects', it doesn't distinguish this from sibling tools like 'arcas_onlineeda_navigate' or 'arcas_onlineeda_run_verification'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides absolutely no guidance about when to use this tool versus alternatives. It doesn't mention any of the four sibling tools, doesn't explain what types of project operations are available, and offers no context about prerequisites or appropriate use cases. The agent would have no idea when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arcas_onlineeda_run_verificationC
Run various verification types on OnlineEDA project
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | No | ||
| verificationType | No | ||
| options | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'run various verification types' but doesn't explain what happens during execution (e.g., is it a long-running process, does it modify the project, are there side effects like resource consumption). For a tool with potential complexity (multiple verification types), this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point without unnecessary words. It's appropriately sized for a basic tool definition, though it could be more informative. There's no fluff or redundancy, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (multiple verification types, 3 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover what the tool returns, how verification outcomes are reported, or the implications of running different verification types. For a tool that likely involves significant processing, this leaves too much unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It doesn't add any meaning beyond what the schema provides—no explanation of what 'projectId' refers to, how 'verificationType' choices differ, or what 'options' might include. With 3 parameters and no schema descriptions, this is inadequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action ('run') and target ('verification on OnlineEDA project'), which provides a basic purpose. However, it's vague about what 'verification' entails and doesn't distinguish this tool from its siblings (e.g., navigate, project, upload_file), which appear to be unrelated operations. It lacks specificity about the resource being verified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, context for selecting verification types, or how it relates to sibling tools like 'arcas_onlineeda_project'. Usage is implied only by the action itself, with no explicit when/when-not statements or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arcas_onlineeda_upload_fileC
Upload design files to OnlineEDA project
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | No | ||
| filePath | No | ||
| fileType | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'upload' implies a write operation, it doesn't specify permissions needed, file size limits, overwrite behavior, error conditions, or what happens after upload. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a basic upload operation and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation tool with no annotations, 0% schema coverage, and no output schema, the description is inadequate. It doesn't explain what happens after upload, error handling, or provide enough context about the parameters to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning all 3 parameters are undocumented in the schema. The description mentions 'design files' and 'OnlineEDA project' which loosely map to 'filePath' and 'projectId', but provides no details about parameter formats, constraints, or the optional 'fileType' enum values. It doesn't adequately compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('upload') and target ('design files to OnlineEDA project'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'arcas_onlineeda_project' which might also handle project-related operations, keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'arcas_onlineeda_natural_language' and 'arcas_onlineeda_run_verification', there's no indication of when file upload is appropriate versus other project operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: natural language processing, navigation, project management, verification runs, and file uploads. There is no overlap in functionality, making it easy for an agent to select the correct tool for any given task.
All tools follow a consistent 'arcas_onlineeda_verb_noun' pattern, using snake_case throughout. This predictability aids in tool discovery and usage, with no deviations in naming conventions.
With 5 tools, this server is well-scoped for an OnlineEDA platform, covering core operations like querying, navigation, project management, verification, and file handling. Each tool earns its place without being overwhelming or insufficient.
The toolset covers essential CRUD-like operations for the OnlineEDA domain, including project management, file uploads, and verification runs. A minor gap exists in direct editing or deletion capabilities, but agents can likely work around this using the available tools.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Design, save, and run outcome-aligned AI workflows and verifiers, with reliable image output.
Public agentic AI doctrine tools plus authenticated architecture, design, and spec validators.
Discover, preview, estimate, run, and retrieve reusable AI workflows.
Give any MCP-compatible AI assistant a builder for live, hosted web tools and workflows.
Related MCP Servers
- FlicenseAqualityFmaintenanceA comprehensive Model Context Protocol server that connects AI assistants to Electronic Design Automation tools, enabling Verilog synthesis, simulation, ASIC design flows, and waveform analysis through natural language interaction.6108
- FlicenseAqualityDmaintenanceEnables AI assistants to perform Electronic Design Automation (EDA) tasks including Verilog synthesis, simulation, ASIC design flows, and waveform analysis through a unified interface.6
- FlicenseNot gradedqualityFmaintenanceEnables AI assistants to interact with JLCEDA EDA for schematic/PCB design operations like component placement, wiring, and circuit analysis through natural language.
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to drive Xilinx Vivado, Intel Quartus, and Anlogic TangDynasty for FPGA development, including project creation, synthesis, implementation, timing closure, and hardware programming through natural language.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ssql2014/arcas-onlineeda-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server