Cursor IDE
Cursor is an AI-powered IDE that supports servers. This guide will help you integrate your Arcade with Cursor for enhanced development capabilities.
Prerequisites
- Cursor IDE installed
- Python 3.10+ installed
arcade-mcp
package installed (pip install arcade-mcp
)
Configuration
Cursor reads server configurations from its settings. You can configure through:
- Cursor Settings UI
- Configuration file
- Workspace settings
Basic setup
Method 1: Settings UI
- Open Cursor Settings (
Cmd/Ctrl + Shift + J
) - Search for “” or “Model Protocol”
- Add a new server configuration:
- Name:
arcade-tools
- Command:
python -m arcade_mcp stdio
- Working Directory:
/path/to/your/project
- Name:
Method 2: Configuration file
Add to your Cursor configuration:
JSON
{
"mcp.servers": {
"arcade-tools": {
"command": "python",
"args": ["-m", "arcade_mcp", "stdio"],
"cwd": "${workspaceFolder}",
"env": {
"PYTHONPATH": "${workspaceFolder}"
}
}
}
}
Method 3: Workspace settings
Create .cursor/settings.json
in your workspace:
JSON
{
"mcp.servers": {
"project-tools": {
"command": "python",
"args": ["-m", "arcade_mcp", "stdio", "--debug"],
"cwd": "${workspaceFolder}",
"env": {
"ARCADE_API_KEY": "${env:ARCADE_API_KEY}"
}
}
}
}
Development workflow
Hot reload setup
For active development with automatic reload:
JSON
{
"mcp.servers": {
"dev-tools": {
"command": "python",
"args": ["-m", "arcade_mcp", "--reload", "--debug"],
"cwd": "${workspaceFolder}",
"env": {
"PYTHONPATH": "${workspaceFolder}"
}
}
}
}
Virtual environment
Use a -specific virtual environment:
JSON
{
"mcp.servers": {
"project-tools": {
"command": "${workspaceFolder}/venv/bin/python",
"args": ["-m", "arcade_mcp", "stdio"],
"cwd": "${workspaceFolder}"
}
}
}
Multiple tool sets
Configure different sets for different purposes:
JSON
{
"mcp.servers": {
"github-tools": {
"command": "python",
"args": ["-m", "arcade_mcp", "stdio", "--tool-package", "github"],
"env": {
"GITHUB_TOKEN": "${env:GITHUB_TOKEN}"
}
},
"database-tools": {
"command": "python",
"args": ["-m", "arcade_mcp", "stdio"],
"cwd": "${workspaceFolder}/db_tools",
"env": {
"DATABASE_URL": "${env:DATABASE_URL}"
}
},
"api-tools": {
"command": "python",
"args": ["-m", "arcade_mcp", "stdio"],
"cwd": "${workspaceFolder}/api_tools"
}
}
}
Integration features
Inline tool usage
Use directly in your code comments:
Python
# @mcp use arcade-tools.greet name="World"
# Result will appear here
def process_data(data):
# @mcp use database-tools.query sql="SELECT * FROM users"
pass
Tool discovery
View available in Cursor:
- Open Command Palette (
Cmd/Ctrl + Shift + P
) - Type “: List ”
- Select your server to see available
Tool documentation
Access documentation:
- Hover over usage in code
- Use
Cmd/Ctrl + Click
on names - View in the panel
Advanced configuration
Environment-specific settings
Use different configurations per environment:
JSON
{
"mcp.servers": {
"tools-dev": {
"command": "python",
"args": ["-m", "arcade_mcp", "stdio", "--env-file", ".env.dev"],
"cwd": "${workspaceFolder}",
"when": "${config:environment} == 'development'"
},
"tools-prod": {
"command": "python",
"args": ["-m", "arcade_mcp", "stdio", "--env-file", ".env.prod"],
"cwd": "${workspaceFolder}",
"when": "${config:environment} == 'production'"
}
}
}
Task integration
Create tasks for server management:
JSON
{
"version": "2.0.0",
"tasks": [
{
"label": "Start MCP Server",
"type": "shell",
"command": "python -m arcade_mcp --reload --debug",
"problemMatcher": [],
"isBackground": true
},
{
"label": "Test Tools",
"type": "shell",
"command": "python -m arcade_mcp --tool-package ${input:package} --debug",
"problemMatcher": []
}
],
"inputs": [
{
"id": "package",
"type": "promptString",
"description": "Tool package name"
}
]
}
Debugging tools
Debug your with Cursor’s debugger:
JSON
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug MCP Tools",
"type": "python",
"request": "launch",
"module": "arcade_mcp",
"args": ["--debug", "--reload"],
"cwd": "${workspaceFolder}",
"env": {
"PYTHONPATH": "${workspaceFolder}"
}
}
]
}
Best practices
Project structure
Organize your effectively:
PLAINTEXT
my-project/
├── .cursor/
│ └── settings.json # Cursor-specific settings
├── .env # Environment variables
├── .env.example # Example environment file
├── tools/
│ ├── __init__.py
│ ├── data_tools.py # Data processing tools
│ ├── api_tools.py # API interaction tools
│ └── utils.py # Utility tools
├── requirements.txt
└── README.md
Tool development tips
- Use type hints: Enable better IDE support
Python
from typing import Annotated
@tool
def process(
data: Annotated[str, "Input data to process"],
format: Annotated[str, "Output format"] = "json"
) -> Annotated[dict, "Processed data"]:
"""Process data in the specified format."""
pass
- Provide clear descriptions: Help Cursor understand usage
- Handle errors gracefully: Return helpful error messages
- Use logging: Enable debug mode for troubleshooting
- Test incrementally: Use Cursor’s integrated terminal
Performance optimization
- Lazy loading: Import heavy dependencies inside
- Cache results: Use caching for expensive operations
- Async support: Use async for I/O operations
- Resource management: Clean up resources properly
Troubleshooting
Common issues
Server not starting
- Check Python path and virtual environment
- Verify
arcade-mcp
installation - Enable debug logging to see errors
- Check for import errors in files
Permission errors
- Ensure proper file permissions
- Check working directory access
- Verify environment variable access
Connection issues
- Restart Cursor after configuration changes
- Check for conflicting servers
- Verify stdio transport is working
Debugging steps
- Enable debug mode in your configuration
- Check Cursor’s output panel for logs
- Test using the command line first
- Use Cursor’s Developer for detailed logs
Example: Complete setup
Here’s a full example of setting up a Cursor workspace with :
- Create workspace structure:
PLAINTEXT
my-workspace/
├── .cursor/
│ └── settings.json
├── .vscode/
│ └── tasks.json
├── tools/
│ └── my_tools.py
└── pyproject.toml
- Configure
.cursor/settings.json
:
JSON
{
"mcp.servers": {
"workspace-tools": {
"command": "python",
"args": ["-m", "arcade_mcp", "stdio", "--debug"],
"cwd": "${workspaceFolder}",
"env": {
"PYTHONPATH": "${workspaceFolder}"
}
}
}
}
- Create
tools/my_tools.py
:
Python
from arcade_mcp_server import tool
from typing import Annotated
import json
@tool
async def format_json(
data: Annotated[str, "JSON string to format"]
) -> Annotated[str, "Formatted JSON"]:
"""Format JSON data with proper indentation."""
parsed = json.loads(data)
return json.dumps(parsed, indent=2)
@tool
def analyze_code(
file_path: Annotated[str, "Path to analyze"]
) -> Annotated[dict, "Analysis results"]:
"""Analyze Python code quality."""
# Implementation here
pass
- Restart Cursor and start using your !
Last updated on