DEV Community

Fernando Paladini
Fernando Paladini

Posted on

Give Your AI Assistant a Local Profile with mcp-me

Every new AI coding session starts with the same small interview: What languages do you use? Which projects do you maintain? What kind of writing do you prefer? Repeating that context is tedious, and putting a complete personal profile into every prompt is difficult to maintain.

mcp-me takes a different approach. It stores a structured profile as local YAML files and exposes that profile through the Model Context Protocol. An MCP-compatible assistant can then read resources such as me://skills, me://projects, and me://career when the request benefits from personal context.

This tutorial shows a small, reproducible setup. You will install the released mcp-me package, initialize a profile, validate it, configure an MCP server, and add an instruction file that tells an agent when to consult the profile.

TL;DR

Install mcp-me with Node.js 20 or later, run mcp-me init, validate the generated YAML, and register this MCP server with your assistant:

{
  "mcpServers": {
    "me": {
      "command": "npx",
      "args": ["-y", "mcp-me", "serve"]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Then add an AGENTS.md file that tells your agent to call ask_about_me before answering requests where your background matters.

Prerequisites

You need:

  • Node.js 20 or later
  • An MCP-compatible assistant, such as Claude Desktop, Cursor, Windsurf, or VS Code with GitHub Copilot
  • A writable local directory for your profile

The package declares Node.js >=20.0.0 and uses the MIT license in its current package metadata. The commands below use the current npm release, mcp-me@0.6.0, which matches the repository's current main package metadata.

Check your Node.js version first:

node -v
Enter fullscreen mode Exit fullscreen mode

Install and initialize the profile

For a globally available CLI, install the package with npm:

npm install -g mcp-me@0.6.0
Enter fullscreen mode Exit fullscreen mode

The project also supports npx when you want to try it without a global install:

npx mcp-me@0.6.0 --help
Enter fullscreen mode Exit fullscreen mode

Create the default profile directory and its templates:

mcp-me init
Enter fullscreen mode Exit fullscreen mode

By default, the profile lives in ~/.mcp-me. The command creates .mcp-me.yaml plus YAML files for identity, career, skills, interests, personality, goals, projects, and frequently asked questions. You can initialize another directory by passing it as the command argument:

mcp-me init ./my-profile
Enter fullscreen mode Exit fullscreen mode

Open the generated .mcp-me.yaml and uncomment only the sources you want to use. A minimal configuration can look like this:

generators:
  github: your-username
  devto: your-username

plugins:
  github:
    enabled: true
    username: your-username
Enter fullscreen mode Exit fullscreen mode

The generator section describes data to collect when you run generate. The plugin section describes live integrations used while the MCP server is running. Keeping these concepts separate helps you decide whether a value should be a local snapshot or a live lookup.

Generate and validate local data

With the configuration in place, generate your profile:

mcp-me generate
Enter fullscreen mode Exit fullscreen mode

The README documents public sources such as GitHub and DEV.to, along with many optional generators. Most generators do not need API keys, but the source-specific requirements still apply. For integrations that require credentials, read the generated comments and the project documentation before enabling them.

Validate the profile before connecting an assistant:

mcp-me validate
Enter fullscreen mode Exit fullscreen mode

The command checks the profile YAML files against the project's schemas. A successful run ends with All profile files are valid!. Validation catches malformed YAML and schema problems before an assistant receives incomplete or unexpected context.

If you prefer not to install the CLI globally, use the same commands through npx and pass the profile directory explicitly:

npx -y mcp-me@0.6.0 validate ./my-profile
Enter fullscreen mode Exit fullscreen mode

Connect the MCP server

The server defaults to ~/.mcp-me, so the simplest MCP configuration does not need a profile path. Add the following entry to the configuration used by your client:

{
  "mcpServers": {
    "me": {
      "command": "npx",
      "args": ["-y", "mcp-me", "serve"]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

For a manually installed CLI, you can use mcp-me as the command instead of npx. If the profile is stored elsewhere, set MCP_ME_PROFILE_DIR in the client environment or pass the directory to mcp-me serve.

The project documents client-specific differences. For example, VS Code uses a servers key in its MCP configuration, while the configuration above uses mcpServers. Check the configuration guidance in the repository before copying the entry into a particular client.

Teach the agent when to use your profile

Connecting the server makes the resources available, but an agent still needs a reason to consult them. Add an AGENTS.md file to the project where you want this behavior:

# Agent Instructions

You have access to an MCP server called `me` that exposes my personal profile.

Always use `ask_about_me` or read the MCP resources below before answering any
request that could benefit from knowing who I am, including writing, code review,
documentation, career questions, and open-source contributions.
Enter fullscreen mode Exit fullscreen mode

The repository includes a longer template at templates/AGENTS.md. You can copy it after a global npm installation:

cp "$(npm root -g)/mcp-me/templates/AGENTS.md" ./AGENTS.md
Enter fullscreen mode Exit fullscreen mode

This file is guidance for the agent, not a security boundary. A model may still choose the wrong tool or misunderstand a request. Keep the instructions narrow, review them like any other project configuration, and avoid putting secrets into profile files.

Verify the result

Restart or reload your MCP client after changing its configuration. Then ask a question that requires profile context, such as:

Draft a short README section that reflects my TypeScript projects and open-source work.
Enter fullscreen mode Exit fullscreen mode

The expected result is not a specific sentence. The useful verification is that the assistant can consult the me server and produce an answer grounded in the profile instead of asking you to restate the same background.

You can also verify the local server directly:

mcp-me serve
Enter fullscreen mode Exit fullscreen mode

The server is intended to run as an MCP process, so a terminal may appear idle while it waits for protocol messages. Stop it with Ctrl+C after confirming that the process starts without a profile or configuration error.

Why this works

The profile is organized into stable resources rather than one large prompt. Identity, skills, career, projects, and other categories can be read independently. That gives an assistant a smaller, more targeted context surface for each request.

The same separation also makes updates local and reviewable. You can edit skills.yaml without rewriting an instruction file, regenerate public-source data when needed, and keep project-specific rules next to the project that owns them. The MCP server then provides a consistent interface for compatible clients.

Failure modes and limitations

If mcp-me is not found, confirm that Node.js 20 or later is installed and that the global npm binary directory is on your PATH. If you use npx, include -y in non-interactive setup scripts.

If validation fails, read the file and line reported by mcp-me validate. Do not assume that valid YAML is valid profile data. The schemas define the accepted structure.

If generation fails for one source, disable that source and test the remaining configuration. Some services require tokens or have rate limits. The README says that most generators use public APIs without keys, not that every source is unauthenticated.

The local-first design reduces unnecessary cloud transfer, but it does not make the profile harmless. Your local files can contain personal and career information, and an MCP client can expose that information to the model you connect. Use filesystem permissions, keep secrets out of YAML, and understand the data handling policy of your assistant before enabling the server.

The project is also not a memory system that guarantees perfect recall. It provides structured context and tools. The assistant still decides when to use them, and the profile is only as accurate as its files and generators.

FAQ

Does mcp-me store my profile in the cloud?

The project documents the profile as local YAML data and says the MCP server reads from disk. Your assistant still receives whatever profile content it requests, so local storage does not eliminate model-provider data handling.

Can I use a custom profile directory?

Yes. Pass a directory to init, validate, or serve, or set MCP_ME_PROFILE_DIR for the default profile path used by the server.

Do I need an API key for GitHub or DEV.to?

The documented generators use public APIs for many sources and do not require keys in the common case. Optional live plugins can have different authentication requirements.

Can I use mcp-me with more than one assistant?

Yes. Configure the same local MCP server in each compatible client. Review each client's configuration format and data-sharing behavior separately.

Takeaway

mcp-me turns repeated personal context into a local, structured MCP profile. Start with a few accurate YAML files, validate them, connect the server, and add agent instructions only after you understand what data should be available.

This tutorial was prepared with AI assistance. The repository documentation, package metadata, live package metadata, and the commands shown here were checked during preparation; the prose was reviewed for accuracy and limitations.

What personal context would save you the most repetition in an AI coding workflow: skills, project history, career details, or something else?

Top comments (0)