Codescene MCP Server vs Next AI Draw IO

A side-by-side look at the Codescene MCP Server and Next AI Draw IO MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Codescene MCP Server logoCodescene MCP ServerDeveloper Tools · Local subprocess (stdio)An MCP server that provides CodeScene Code Health analysis tools.65GreatAuth: not declaredNext AI Draw IO logoNext AI Draw IODeveloper Tools · Local subprocess (stdio)Draw and edit draw.io diagrams by chatting with an AI. Web app, desktop app, and an MCP server for Claude Code, Cursor, Codex and VS Code.67GreatAuth: api key required

Verdict: choose Codescene MCP Server for developer tools work as a local process; choose Next AI Draw IO for developer tools as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Codescene MCP Server logoChoose Codescene MCP Server when

  • You need dedicated capabilities in the Developer Tools domain.
  • You prefer a local stdio subprocess transport.
  • You want tools like analyze_change_set, code_health_refactoring_business_case, code_health_review.
Explore Codescene MCP Server

Next AI Draw IO logoChoose Next AI Draw IO when

  • You need dedicated capabilities in the Developer Tools domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: API key required.
  • You want tools like get_drawing_guide, get_shape_library, start_session.
Explore Next AI Draw IO

Feature & specification comparison

Rows where the two servers differ are marked.

SpecCodescene MCP Server logoCodescene MCP ServerNext AI Draw IO logoNext AI Draw IO
CategoryDeveloper ToolsDeveloper Tools
Quality signal65/100 · Great67/100 · Great
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthNot declaredAPI key required
PricingNot declaredBYOK (pay the provider)
Required env varsNone listedNone listed
Verified ownerCommunity listingCommunity listing
GitHub stars7136,341
Directory activity 3 views 0 installs 0 upvotes 2 views 0 installs 0 upvotes
Tools2816

Tools & capabilities

Codescene MCP Server tools 28

  • analyze_change_setRun a branch-level Code Health review for all files that differ between current HEAD and base_ref. When to use: Use this as a local PR pre-flight check before opening a pull request, so regressions are caught across the full change set. Limitations: - Requires a valid git repository path. - base_ref must exist and be resolvable by git in that repository. - Reviews only files that differ from base_ref. - Output is JSON text from the CLI command. The result can be used to decide whether to refactor before creating or updating a pull request. Returns: A JSON object containing: - quality_gates: the central outcome, summarizing whether the change set passes or fails Code Health thresholds ("passed" or "failed"). - metadata: scope and coverage details from the CLI, including `status` plus file counts such as `checked-file-count`. Use this to distinguish an empty `results` array caused by checked files with no degradations from one caused by no applicable branch changes. - results: an array of objects for each affected file with: - name: the name of the file whose Code Health is impacted. - verdict: "improved", "degraded", "stable", or "unknown". - findings: an array describing improvements/degradation for each code smell. Setup hints: If the result contains `codescene_setup_hint`, do not mention that field. Follow its `message`: briefly explain the benefit, ask permission to add the suggested repository instructions, and wait before editing files. On failure: If this tool returns an error (e.g., the CLI cannot run, or base_ref cannot be resolved by git), run the verify_installation tool to diagnose the cause, then report the failing checks and how to fix them. Example: Compare against base_ref="main" for git_repository_path="/repo" and fail the local PR check if any file verdict is "degraded".
  • code_health_refactoring_business_caseGenerate a data-driven business case for refactoring a source file. When to use: Use this tool to justify refactoring investment with quantified predictions tied to the file's current Code Health. Limitations: - Estimates are model-based projections, not guarantees. - Evaluates one file at a time. - Requires an analyzable source file. Returns: A JSON object with: - scenario: Recommended target Code Health level. - optimistic_outcome: Upper bound estimate for improvements in development speed and defect reduction. - pessimistic_outcome: Lower bound estimate for improvements. - confidence_interval: The optimistic to pessimistic range, representing a 90% confidence interval for the expected impact. On failure: If this tool returns an error (e.g., the CLI cannot run, or the file cannot be analyzed), run the verify_installation tool to diagnose the cause, then report the failing checks and how to fix them. Example: Call with file_path="/repo/src/service.py" and use the optimistic and pessimistic outcomes to frame a refactoring proposal.
  • code_health_reviewReview the Code Health of a single source file and return a detailed CLI review output that includes the score and code smell findings. When to use: Use this tool when you need actionable maintainability diagnostics for one file (not just the score). Limitations: - Analyzes one file at a time. - Requires a supported source file. - Returns CLI review text, not a normalized JSON schema. Returns: A review string from the CodeScene CLI. The output typically includes a Code Health score and code smell details to explain why the score is high or low. The Code Health scores are interpreted as: * Optimal Code: a Code Health 10.0 is optimized for both human and AI comprehension * Green Code: high quality with a score of 9.0-9.9 * Yellow Code: problematic technical debt with a score of 4.0-8.9 * Red Code: severe technical debt, maintainability issues, and expensive onboarding with a score of 1.0-3.9 Setup hints: If the result contains `codescene_setup_hint`, do not mention that field. Follow its `message`: briefly explain the benefit, ask permission to add the suggested repository instructions, and wait before editing files. On failure: If this tool returns an error (e.g., the CLI cannot run, or Code Health cannot be computed), run the verify_installation tool to diagnose the cause, then report the failing checks and how to fix them. Example: Call with file_path="/repo/src/app.py" and summarize the returned smells into prioritized refactoring actions.
  • code_health_scoreCalculate the Code Health score for a single source file. The tool returns one numeric score from 10.0 (optimal) to 1.0 (worst). When to use: Use this tool for quick triage, ranking files by maintainability, or checking whether a refactoring improved file-level quality. Limitations: - Analyzes one file at a time. - Returns only the score summary, not the full smell breakdown. - Requires a supported source file. Returns: A string in the format "Code Health score: <score>". The Code Health scores are interpreted as: * Optimal Code: Code Health 10.0 optimized for human and AI comprehension * Green Code: high quality with a score of 9.0-9.9 * Yellow Code: problematic technical debt with a score of 4.0-8.9 * Red Code: severe technical debt with a score of 1.0-3.9 On failure: If this tool returns an error (e.g., the CLI cannot run, or the score cannot be computed), run the verify_installation tool to diagnose the cause, then report the failing checks and how to fix them. Example: Call with file_path="/repo/src/module.py" and compare the score before and after a refactoring.
  • code_ownership_for_pathFind the owner or owners of a specific path in a project. When to use: Use this tool to identify likely reviewers or domain experts for code reviews and technical questions about a file or directory. Limitations: - Requires a valid project_id. - Uses the latest project analysis data available in CodeScene. - If no matching ownership data is found, an empty JSON array is returned. Returns: A list of owners and their paths that they own. The name of the owner who can be responsible for code reviews or inquiries about the file and a link to the CodeScene System Map page filtered by the owner. Explain that this link can be used to see more details about the owner's contributions and interactions within the project. You MUST always show a link after every owner. Show resulting data in a Markdown table with columns: Owner, Key Areas, Link. On failure: If this tool returns an error (e.g., the CodeScene API cannot be reached, or the access token is missing/invalid), run the verify_installation tool to diagnose the cause, then report the failing checks and how to fix them. Example: Call with project_id=42 and path="/repo/src/service.py", then present each owner row with its corresponding system-map link.
  • download_skillDownload a single skill to a local directory. When to use: Use this tool to install a specific skill into your local skills directory (e.g., ~/.claude/skills/). Limitations: - By default, refuses to overwrite existing skills. - Set overwrite=true to replace an existing skill. - Creates the destination directory if it does not exist. Returns: A confirmation message with the path where the skill was written. Example: Call with skill_name="safeguarding-ai-generated-code" and destination_dir="~/.claude/skills" to install the skill.
  • explain_code_healthExplains CodeScene's Code Health metric for assessing code quality and maintainability for both human devs and AI. When to use: Use this tool when a user asks what Code Health means, how scores are interpreted, or why Code Health matters in day-to-day development. Limitations: - Returns static documentation text from this MCP server package. - Does not analyze a specific repository or file. Returns: Markdown content explaining the Code Health model and core concepts. Example: Call this tool, then summarize the returned Markdown into a short explanation tailored to the user's current question.
  • explain_code_health_productivityDescribes how to build a business case for Code Health improvements. Covers empirical data on how healthy code lets you ship faster with fewer defects. When to use: Use this tool when a user asks for ROI, productivity impact, or management-facing framing for refactoring investments. Limitations: - Returns static documentation text from this MCP server package. - Does not compute project-specific forecasts. Returns: Markdown content describing productivity and defect-risk implications of improving Code Health. Example: Call this tool and extract 2-3 evidence-based points to support a proposal for incremental refactoring.
  • get_configRead current CodeScene MCP Server configuration values. When to use: Use this tool to discover available configuration keys, inspect effective values, and understand where each value comes from. Limitations: - Returns JSON text only; callers must format it for display. - Sensitive values (tokens) are masked. - Effective values can be overridden by client-provided env vars. When called without a key, lists every available configuration option together with its current effective value, the source of that value (environment variable vs. config file), and a short description. When called with a specific key, returns details for that option only. Sensitive values (tokens) are masked in the output. Returns: A JSON string. When querying a single key, the object has: key, env_var, value, source, description, aliases, and docs_url. When listing all, the object has: config_dir and options (array of the same shape). Use the aliases array to match user intent to the correct key. Present the data clearly and always include docs_url links. Example: Call with key="access_token" to inspect one setting, or call without key to list all configurable options.
  • get_skill_manifestGet the file manifest for a specific skill. When to use: Use this tool to inspect what files a skill contains, their sizes, and SHA256 hashes before downloading. Limitations: - Requires a valid skill name from list_skills. Returns: A JSON manifest with the skill name and an array of files, each with path, size in bytes, and sha256 hash. Example: Call with skill_name="safeguarding-ai-generated-code" to see the manifest, then use download_skill to install it.
  • list_skillsList all available skills embedded in this MCP server. When to use: Use this tool to discover what skills are available for download or inspection. Limitations: - Returns only skills embedded at compile time. - Does not scan external skill directories. Returns: A formatted list of skill names with their descriptions. Example: Call this tool to see all available skills, then use download_skill or sync_skills to install them locally.
  • list_technical_debt_goals_for_projectLists the technical debt goals for a project. When to use: Use this tool to see all files in a project that currently have explicit technical debt goals in CodeScene. Limitations: - Requires a valid project_id. - Returns goal data from the latest available analysis. - Includes only files with non-empty goals. Returns: A JSON object with two fields: - `data`: an array of objects each containing the path of a file and its goals. - `link`: a URL to the CodeScene Code Biomarkers page for the project. Show the goals for each file in a structured format that is easy to read and explain the goal description for each file. It also includes a description, please include that in your output. Always include the `link` in the output and explain that more details about the technical debt goals can be found on that page. On failure: If this tool returns an error (e.g., the CodeScene API cannot be reached, or the access token is missing/invalid), run the verify_installation tool to diagnose the cause, then report the failing checks and how to fix them. Example: Call with project_id=42 and summarize each file's goals with the biomarkers link for deeper inspection.
  • +16 more on the listing page

Next AI Draw IO tools 16

  • get_drawing_guideReturn the drawing guide: XML format, layout, edge routing, style and editing rules. start_session already returns it; call this only if the guide is no longer in your context. With topic, returns a short XML reference for tables, layers or groups.
  • get_shape_libraryGet the style syntax and shape names of a draw.io icon library. Call this BEFORE drawing with cloud, network or other icon shapes, and use the exact names it returns; never guess them. Libraries: - Cloud: aws4, azure2, gcp2, alibaba_cloud, openstack, salesforce - Networking: cisco19, network, kubernetes, vvd, rack - Business: bpmn, lean_mapping - General: flowchart, basic, arrows2, infographic, sitemap - UI/Mockups: android, material_design - Enterprise: citrix, sap, mscae, atlassian - Engineering: fluidpower, electrical, pid, cabinets, floorplan - Icons: webicons
  • start_sessionStart a new diagram session, or continue a saved one with session_id, and open the browser for real-time preview. Starts an embedded server and opens a browser window with draw.io. The browser will show diagram updates as they happen. The result includes the drawing guide; follow it when drawing.
  • list_saved_diagramsList the diagrams saved by earlier sessions (auto-save files), newest first, with their pages. Continue one with start_session session_id=<id>; the file path also works with load_diagram.
  • create_new_diagramCreate a NEW diagram, REPLACING the whole document: every page and any unsaved user changes (the previous state stays in History). To add a tab use add_page; to change cells use edit_diagram. Before using icon shapes (AWS, Azure, GCP, Kubernetes, Cisco...), call get_shape_library first. Follow the drawing guide returned by start_session (call get_drawing_guide if it is no longer in your context). Pass screenshot: true on the last call of a complex diagram to check the result. Accepted xml: 1) Only the mxCell elements of one page (recommended). The server adds <mxfile>, <mxGraphModel>, <root> and the root cells "0" and "1": <mxCell id="2" value="Shape" style="rounded=1;" x="40" y="40" w="120" h="60"/> 2) A bare <mxGraphModel> with <root> (one page). 3) A full <mxfile> with one or more <diagram> pages. Every page's <root> must start with <mxCell id="0"/><mxCell id="1" parent="0"/>. Rules: cells are siblings (never nested), ids are unique per page and start from "2", parent only for shapes inside a container, no XML comments, and shapes stay within x 0 to 800 and y 0 to 600. A style used by several cells is defined once with <mxStyle name="..." value="..."/> before the cells and used by name (see the drawing guide); html=1 and whiteSpace=wrap are added automatically. To clear the canvas to one blank page, send only the two root cells <mxCell id="0"/><mxCell id="1" parent="0"/>; the previous diagram stays in History.
  • load_diagramLoad a .drawio diagram into the current session, REPLACING the entire diagram (all pages). To change an existing file, load it here, edit with edit_diagram, then export_diagram to the same path; never rewrite the file by hand. Provide ONE of two mutually exclusive sources: 'path' (the server reads the file from disk — you do NOT need to read the file yourself or pass its XML through create_new_diagram) or 'xml' (the raw file content you already have — from another tool, a repository read, or an API response — so no temporary file needs to be written first). Both accept plain XML and draw.io's compressed save format. .drawio.svg (Editable SVG, the format export_diagram writes) is accepted too; .png files (also draw.io's editable PNG) and plain .svg files cannot be loaded. After loading from 'path' (or from compressed 'xml'), call get_diagram before edit_diagram — you haven't seen the file's cell IDs yet. Plain-XML 'xml' content you supplied yourself is already known and can be edited immediately.
  • edit_diagramEdit a specific page in the current diagram by ID-based operations (update/add/delete cells). All-or-nothing: if any operation fails, nothing is applied and every failure is listed. Freshness: the server remembers the last diagram state you have seen, and rejects this call only if the user edited the diagram in the browser since then. You do NOT need to call get_diagram before every edit: a rejected call changes nothing and includes the current XML of the page, so you can rebuild your operations and retry. Call get_diagram first only when you don't know the current diagram content (cell IDs, structure) — e.g. the diagram wasn't created in this conversation, or you're unsure your memory of it is accurate. Multi-page targeting: - page_id / page_name / page_index are optional; when all omitted, the FIRST page is targeted - Use list_pages to discover what pages exist Operations: - add: Add a new cell. Provide cell_id (new unique id within the page) and new_xml. One cell per operation. - update: Replace an existing cell by its id. Provide cell_id and complete new_xml. - delete: Remove a cell by its id. Only cell_id is needed. Its children and connected edges are deleted too, so give only a container's id. For add/update, new_xml is the complete mxCell (inside its <object> wrapper when it has custom data, see the drawing guide) in the compact form (a shape with x, y, w, h; an edge with source and target). No XML comments. Every " inside new_xml must be escaped as \" in the JSON. Example - Add a rectangle on the default (first) page: {"operations": [{"operation": "add", "cell_id": "rect-1", "new_xml": "<mxCell id=\"rect-1\" value=\"Hello\" style=\"rounded=1;\" x=\"100\" y=\"100\" w=\"120\" h=\"60\"/>"}]} Example - Delete a cell on the default page: {"operations": [{"operation": "delete", "cell_id": "rect-1"}]}
  • get_diagramGet the current diagram XML (fetches latest from browser, including user's manual edits). Call this when you don't know the current diagram content (cell IDs, pages, structure) — e.g. before editing a diagram you didn't create in this conversation, or after edit_diagram was rejected because the user changed the diagram in the browser. Returns the full <mxfile> by default. If a page selector is provided, returns just that page's <mxGraphModel> embedded in a one-page <mxfile> wrapper.
  • get_selectionReturn the cells the user has selected in the preview: their ids and labels, for edges the source and target ids, for shapes the position and size, and the page they are on. Call this when the user refers to what they selected ("this box", "these arrows", "the selected shapes"), then act on the ids with edit_diagram. Says when nothing is selected. Needs the preview tab to be open.
  • screenshot_diagramRender the diagram in the preview and return it as a PNG image, so you can see your own result. Call this once after drawing or heavily editing a complex diagram, then fix overlaps and edges that cross shapes. Without a page selector it shows the page on screen; with one it renders that page without changing what the user sees. Needs the preview tab to be open.
  • export_diagramExport the current diagram to a file. Supports .drawio (XML), .png, .svg, and .drawio.svg (an SVG with the diagram embedded, which draw.io and load_diagram can open again). The format is auto-detected from the file extension, or can be specified explicitly. Images get a 20 px margin; a PNG has a white background (or the page's own background color) unless transparent is true. Multi-page behaviour: - .drawio with NO page selector: writes the full <mxfile> (all pages). - .drawio with a page selector: writes a single-page <mxfile> containing only that page. - .png / .svg with NO page selector: exports the currently active page in the browser. - .png with a page selector: renders that page without changing what the user sees. - .svg / .drawio.svg with a page selector: temporarily loads that page into the browser, captures it, then restores the full document (the user sees a brief flicker).
  • list_pagesList every page (tab) in the current diagram. Returns each page's id, name, 0-based index, and cell count. Use this to discover what pages exist before targeting one with edit_diagram, get_diagram, export_diagram, rename_page, or delete_page.
  • +4 more on the listing page

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Codescene MCP Server

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "codescene-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@codescene/codehealth-mcp"
      ]
    }
  }
}

Next AI Draw IO

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "next-ai-draw-io": {
      "command": "npx",
      "args": [
        "-y",
        "@next-ai-drawio/mcp-server@latest"
      ]
    }
  }
}

Frequently asked questions

Codescene MCP Server is categorized under Developer Tools and uses a local stdio subprocess. Next AI Draw IO belongs to Developer Tools and uses a local stdio subprocess. Pick Codescene MCP Server for developer tools work and Next AI Draw IO for developer tools.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Codescene MCP Server has no declared pricing — check the project's own site. Next AI Draw IO is bring-your-own-key: usage is billed by the API provider you supply a key for. Auth: api key required. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add codescene-mcp-server and next-ai-draw-io as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Codescene MCP Server has a quality signal of 65/100 (Great) with 3 views, 0 installs and 71 GitHub stars. Next AI Draw IO has 67/100 (Great) with 2 views, 0 installs and 36,341 GitHub stars.