Skip to main content
Glama
lfdantoni

Personal Code Skills MCP Server

by lfdantoni
README.md
# my-personal-code-mcp

An MCP (Model Context Protocol) server that provides AI assistants with access to best practice skills stored as markdown files in a GitHub repository.

## Features

- **list_skills**: Returns a list of all available skill names from the configured repository
- **get_skill**: Retrieves the content of a specific skill by name

## Installation

```bash
# Clone the repository
git clone https://github.com/lfdantoni/my-personal-code-mcp.git
cd my-personal-code-mcp

# Install dependencies
npm install

# Build
npm run build
```

## Configuration

### Environment Variables

| Variable | Description | Required |
|----------|-------------|----------|
| `SKILLS_REPO_OWNER` | GitHub repository owner (username or organization) | Yes |
| `SKILLS_REPO_NAME` | GitHub repository name | Yes |
| `SKILLS_PATH` | Subdirectory containing skill files (default: root) | No |
| `GITHUB_TOKEN` | GitHub personal access token (required for private repos) | No |

### Skills Repository Structure

Your skills repository should contain markdown files (`.md`) with best practices:

```
your-skills-repo/
├── typescript-best-practices.md
├── react-patterns.md
├── testing-guidelines.md
└── ...
```

Or with a subdirectory:

```
your-skills-repo/
└── skills/
    ├── typescript-best-practices.md
    ├── react-patterns.md
    └── ...
```

## MCP Client Configuration

### Cursor

Add the following to your Cursor MCP settings file (`~/.cursor/mcp.json` or via Settings > MCP):

```json
{
  "mcpServers": {
    "my-personal-code-mcp": {
      "command": "node",
      "args": ["C:/path/to/my-personal-code-mcp/dist/index.js"],
      "env": {
        "SKILLS_REPO_OWNER": "your-github-username",
        "SKILLS_REPO_NAME": "your-skills-repo",
        "SKILLS_PATH": "",
        "GITHUB_TOKEN": "ghp_your_token_here"
      }
    }
  }
}
```

### Claude Desktop

Add the following to your Claude Desktop configuration file:

**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "my-personal-code-mcp": {
      "command": "node",
      "args": ["C:/path/to/my-personal-code-mcp/dist/index.js"],
      "env": {
        "SKILLS_REPO_OWNER": "your-github-username",
        "SKILLS_REPO_NAME": "your-skills-repo",
        "SKILLS_PATH": "",
        "GITHUB_TOKEN": "ghp_your_token_here"
      }
    }
  }
}
```

### Claude Code CLI

Add to your Claude Code settings (`~/.claude/settings.json`):

```json
{
  "mcpServers": {
    "my-personal-code-mcp": {
      "command": "node",
      "args": ["/path/to/my-personal-code-mcp/dist/index.js"],
      "env": {
        "SKILLS_REPO_OWNER": "your-github-username",
        "SKILLS_REPO_NAME": "your-skills-repo"
      }
    }
  }
}
```

## Available Tools

### list_skills

Returns a list of all available skill names.

**Input**: None

**Output**:
```json
{
  "skills": ["typescript-best-practices", "react-patterns", "testing-guidelines"]
}
```

### get_skill

Returns the content of a specific skill.

**Input**:
```json
{
  "skill_name": "typescript-best-practices"
}
```

**Output**: The markdown content of the skill file.

## Development

```bash
# Build
npm run build

# Watch mode
npm run dev

# Run the server
npm start
```

## License

ISC

TDQS

B3.1/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: get_skill retrieves detailed content for a specific skill, while list_skills provides an overview of all available skills. There is no overlap or ambiguity between them, making it easy for an agent to select the correct tool based on the task.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern (get_skill and list_skills), using snake_case throughout. The naming is predictable and readable, with no deviations or mixed conventions.

Tool Count2/5

With only 2 tools, the server feels thin for a 'Personal Code Skills' domain that implies management of skills. While basic read operations are covered, the lack of create, update, or delete tools suggests an incomplete surface for skill management, making the count too low for the apparent scope.

Completeness2/5

The server only provides read operations (get and list), with no ability to create, update, or delete skills. This is a significant gap for a skills management domain, as agents cannot modify or add new skills, leading to potential dead ends in workflows that require full lifecycle management.

Maintenance

ActivityInactive
ResponsivenessNo issues