MCP Login Server
# 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
Scored across 4 tools
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.
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.
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.
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.