Skip to main content
Glama
Presh-AR

codescan-mcp-server

by Presh-AR
README.md
# Codescan MCP Server

A Model Context Protocol (MCP) server implementation for Codescan, enabling AI models to interact with Codescan's API through a standardized interface.

## Features

- List Codescan projects
- Get project metrics
- Query project issues with advanced filtering
- Environment-based configuration
- Docker support
- TypeScript implementation

## Prerequisites

- Node.js 20 or later
- pnpm 10.7.1 or later
- Docker (optional, for containerized deployment)

## Installation

### Local Development

1. Clone the repository:
```bash
git clone <repository-url>
cd codescan-mcp-server
```

2. Install dependencies:
```bash
pnpm install
```

3. Build the project:
```bash
pnpm run build
```

4. Start the server:
```bash
pnpm start
```

### Docker Deployment

1. Build the Docker image:
```bash
docker build -t codescan-mcp-server .
```

2. Run the container:
```bash
docker run -d \
  -e CODESCAN_URL=https://app.codescan.io \
  -e CODESCAN_TOKEN=your_token_here \
  -e CODESCAN_ORGANIZATION=your_org \
  -e CODESCAN_PROJECT=your_project \
  -e CODESCAN_COMPONENT=your_component \
  -e NODE_OPTIONS="--experimental-specifier-resolution=node" \
  -p 3000:3000 \
  codescan-mcp-server
```

## Environment Variables

| Variable | Description | Required | Default |
|----------|-------------|----------|---------|
| CODESCAN_URL | URL of your Codescan instance | Yes | https://app.codescan.io |
| CODESCAN_TOKEN | Authentication token for Codescan API | Yes | - |
| CODESCAN_ORGANIZATION | Organization key for Codescan Cloud | No | - |
| CODESCAN_PROJECT | Default project key | No | - |
| CODESCAN_COMPONENT | Default component key | No | - |
| NODE_OPTIONS | Node.js runtime options | No | --experimental-specifier-resolution=node |

## MCP Client Configuration

Here's an example MCP client configuration for interacting with the Codescan MCP server:

```json
{
  "name": "codescan-mcp-client",
  "version": "1.0.0",
  "description": "MCP client for Codescan integration",
  "servers": [
    {
      "name": "codescan-mcp-server",
      "url": "http://localhost:3000",
      "tools": ["projects", "metrics", "issues"]
    }
  ],
  "env": {
    "CODESCAN_URL": "https://app.codescan.io",
    "CODESCAN_TOKEN": "your_token_here",
    "CODESCAN_ORGANIZATION": "your_org",
    "CODESCAN_PROJECT": "your_project",
    "CODESCAN_COMPONENT": "your_component"
  }
}
```

### Tool Usage Examples

1. List Projects:
```json
{
  "tool": "projects",
  "params": {
    "page": "1",
    "page_size": "10"
  }
}
```

2. Get Metrics:
```json
{
  "tool": "metrics",
  "params": {
    "component": "your_component",
    "page": "1",
    "page_size": "10"
  }
}
```

3. Get Issues:
```json
{
  "tool": "issues",
  "params": {
    "component": "your_component",
    "severity": "MAJOR",
    "page": "1",
    "page_size": "10",
    "statuses": ["OPEN", "CONFIRMED"],
    "types": ["BUG", "VULNERABILITY"]
  }
}
```

## Development

### Available Scripts

- `pnpm run build`: Build the TypeScript code
- `pnpm start`: Start the MCP server
- `pnpm test`: Run tests
- `pnpm lint`: Run linter
- `pnpm format`: Format code

### Project Structure

```
codescan-mcp-server/
├── src/
│   ├── index.ts        # Main server entry point
│   └── codescan.ts     # Codescan API client
├── dist/               # Compiled JavaScript
├── Dockerfile          # Docker configuration
├── package.json        # Project dependencies
├── tsconfig.json       # TypeScript configuration
└── mcp.json           # MCP server configuration
```

## License

[License Type] - See LICENSE file for details 

TDQS

C2.8/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a distinct purpose: listing projects, retrieving issues for a project, and fetching metrics. There is no overlap or ambiguity.

Naming Consistency4/5

All tool names are single nouns, which is consistent. Adding verbs (e.g., list_projects) would make them more descriptive, but the pattern is uniform.

Tool Count4/5

3 tools is a reasonable number for a focused code scanning server. It covers the core actions without being overly sparse.

Completeness3/5

The server covers listing projects, retrieving issues, and getting metrics. Missing are details on individual projects, issue filtering, or update/delete operations, but for a read-only scanner it is fairly complete.