Skip to main content
Glama
nieperdragon

MCP Login Server

by nieperdragon
README.md
# MCP Login Server

A Model Context Protocol (MCP) server that provides automated login functionality for `http://localhost` using predefined credentials. This server is designed to work with browser automation tools like the Playwright MCP server.

## Features

- **Automated Login**: Provides tools to perform login operations with predefined credentials
- **Playwright Integration**: Designed to work with the Playwright MCP server for browser automation
- **Connection Testing**: Includes tools to test connectivity to the target URL
- **Credential Management**: Secure handling of login credentials
- **Extensible Architecture**: Easy to add new tools with separated tool definitions

## Project Structure

```
src/
├── index.ts          # Main server setup and entry point
├── tools.ts          # Tool definitions and registration
└── index.js          # Compiled JavaScript (auto-generated)
```

The codebase is structured for easy extensibility:
- **`index.ts`**: Contains the main server setup, startup logic, and process management
- **`tools.ts`**: Contains all tool definitions, registration functions, and configuration
- **`ADDING_TOOLS.md`**: Detailed guide for adding new tools to the server

## Installation

```bash
npm install
npm run build
```

## Usage

### Running the Server

```bash
npm start
```

Or for development:

```bash
npm run dev
```

### Available Tools

The server provides the following MCP tools:

1. **perform_login** - Performs automated login to http://localhost using predefined credentials
2. **get_login_credentials** - Returns the login credentials for verification
3. **test_connection** - Tests if the target URL is accessible

### Configuration

The server is configured with the following credentials:

- **Target URL**: `http://localhost`
- **Username**: `admin`
- **Password**: `AIWorkshopJuly!25`

These credentials are configured for the OrangeHRM system running on localhost.

## MCP Configuration

To use this server with an MCP client (like Claude for Desktop), add the following configuration:

### Windows

```json
{
  "mcpServers": {
    "login-server": {
      "command": "node",
      "args": ["C:\\ABSOLUTE\\PATH\\TO\\PROJECT\\build\\index.js"]
    }
  }
}
```

### macOS/Linux

```json
{
  "mcpServers": {
    "login-server": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/PROJECT/build/index.js"]
    }
  }
}
```

## Integration with Playwright MCP Server

This server is designed to work alongside the Playwright MCP server for complete browser automation. The `perform_login` tool provides the necessary information and steps that can be executed by the Playwright MCP server.

### Example Workflow

1. Use the `test_connection` tool to verify the target URL is accessible
2. Use the `perform_login` tool to get login instructions
3. Use Playwright MCP server tools to execute the browser automation steps

## Development

### Project Structure

```
src/
├── index.ts          # Main server implementation
├── types.ts          # TypeScript type definitions (if any)
build/                # Compiled JavaScript output
.github/              # GitHub configuration
├── copilot-instructions.md  # Copilot development guidelines
```

### Building

```bash
npm run build
```

### Scripts

- `npm run build` - Compile TypeScript to JavaScript
- `npm start` - Run the compiled server
- `npm run dev` - Build and run in development mode
- `npm run clean` - Clean build directory

## Dependencies

- `@modelcontextprotocol/sdk` - MCP SDK for TypeScript
- `zod` - Runtime type validation
- `typescript` - TypeScript compiler

## Error Handling

The server includes comprehensive error handling for:

- Connection failures
- Invalid credentials
- Network timeouts
- MCP protocol errors

## Security

- Credentials are stored as constants in the code
- No sensitive data is logged to stdout (only to stderr for debugging)
- Connection testing uses safe HTTP HEAD requests

## Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Test thoroughly
5. Submit a pull request

## License

ISC License

TDQS

A3.9/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: get_login_credentials retrieves stored credentials, perform_login executes the login process, navigate_to_pim handles post-login navigation, and test_connection checks URL accessibility. There is no overlap or ambiguity between these functions.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (get_login_credentials, navigate_to_pim, perform_login, test_connection) with clear, descriptive names that uniformly use snake_case. No deviations or mixed conventions are present.

Tool Count5/5

With 4 tools, this server is well-scoped for its login automation purpose. Each tool earns its place by covering distinct aspects: credential management, login execution, navigation, and connectivity testing, without being overly sparse or bloated.

Completeness4/5

The tool set covers core login workflows (testing, credential retrieval, login, post-login navigation) effectively. A minor gap exists in logout functionality, but agents can work around this, and the surface is largely complete for the stated domain.

Maintenance

ActivityInactive
ResponsivenessNo issues