Skip to main content
Glama
franckyo

franckelson-mcp

by franckyo

franckelson-mcp

npm CI

My portfolio, as an MCP server. Install it and ask your AI assistant who I am, what I've built, what I charge, and whether I'm available.

claude mcp add franckelson -- npx -y franckelson-mcp

Then just ask:

What has Franckelson built? Is he available, and what would an MCP server for our API cost?

I build MCP servers for a living, so this is the most direct demo I can give you: you're evaluating my work through my work.


Tools

Tool

Returns

get_profile

Who I am, where, languages, summary

list_skills

Skills by area

list_projects

Every project, one line each

get_project

Full detail on one project and why it matters

get_services

Fixed-price offers and delivery times

get_availability

Whether I'm free, hours/week, earliest start

get_contact

How to reach me

All read-only. No network access, no credentials, nothing stored.

Claude Desktop — add to claude_desktop_config.json:

{ "mcpServers": { "franckelson": { "command": "npx", "args": ["-y", "franckelson-mcp"] } } }

Related MCP server: Portfolio MCP Server

Make it yours

Every tool reads from a single file, profile.json. To turn this into your own portfolio server:

  1. Fork the repo

  2. Edit profile.json

  3. Change name in package.json

  4. npm publish

The test suite includes a check that fails if profile.json contains something that looks like a phone number or street address — a portfolio is public, and it's easy to paste in more than you meant to.


Also by me

evm-recon-mcp — an MCP server for EVM contract analysis: disassembly with invalid-jump detection, storage-slot derivation, calldata decoding across 14 chains. npx evm-recon-mcp

License

MIT

Available Tools

7 tools
get_availabilityAvailabilityA
Read-only

Whether this person is available now, hours per week, and how soon they can start.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals that this is a safe read operation. The description adds value beyond the annotation by specifying the actual information returned: availability now, hours per week, and how soon the person can start. Since there is no output schema, this content disclosure is the primary behavioral signal available.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence with no filler. It is slightly awkward grammatically ('Whether this person...'), but every part carries meaning and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read-only tool with no output schema, the description covers the essential semantic content well. It could be more explicit about the exact response fields or format, but nothing critical is missing for an agent deciding to invoke this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description does not need to explain parameter meaning because there are no inputs to configure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource (the person's availability) and the specific information provided: current availability, hours per week, and start readiness. It does not use an explicit verb like 'retrieves', but the meaning is clear and it is readily distinguishable from sibling tools like get_profile or list_projects by topic.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use case is implied rather than explicit: an agent would infer to call this when it needs to know current availability, weekly hours, or start timing. However, the description does not mention when not to use it or suggest alternatives, such as get_profile for general background.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_contactHow to get in touchA
Read-only

Preferred contact method, email, and expected response time.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already communicates the read-only nature, and the description does not contradict it. The description adds no extra behavioral traits such as authentication, rate limits, or data source, so it stays at a baseline adequate level.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one compact sentence with no filler, and the three key outputs are front-loaded. Every word contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool with no output schema, the description fully enumerates the expected content: contact method, email, and response time. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema already covers all input needs. The description need not explain parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact data returned: preferred contact method, email, and expected response time, making it clear this is a read-only lookup of contact details. It does not explicitly contrast get_contact with get_profile, so it falls short of strong sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool rather than get_profile or get_services. The purpose is inferable from the name, but the description offers no context, exclusions, or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_profileWho this isA
Read-only

Name, headline, location, time zone, languages and a summary of what this person does.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds value by listing the specific data fields returned, but it does not disclose any other behavioral traits (e.g., that the profile is for the current user or that it may be cached). No contradictions with annotations, but limited additional disclosure beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, efficient sentence that front-loads the key output fields. Every word contributes value, and the description is neither verbose nor under-specified. It is optimally concise for its purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, a readOnlyHint annotation, and no output schema, the description provides exactly what an agent needs: the list of fields returned. There is nothing missing for an agent to correctly invoke and interpret the tool's result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema is trivially fully covered. Per the rubric, a 0-parameter tool gets a baseline of 4. The description adds no parameter-specific details because none exist, and it correctly focuses on the output content.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns a person's profile: name, headline, location, time zone, languages, and a summary. This is a specific verb+resource (get profile) and distinguishes it from sibling tools like list_skills or get_contact by enumerating the exact fields returned. No ambiguity or tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. It implies usage for fetching profile information, but there is no guidance on scenarios where a sibling like list_projects or get_availability would be more appropriate. Context is minimal but not misleading.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_projectProject detailA
Read-only

Full detail on one project: what it is, how it was built, and why it matters.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProject id. One of: evm-recon-mcp, fuzzing-harnesses, assert-oracle, threshold-ecdsa

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, so the agent knows this is a safe read operation. The description additionally describes the kind of content returned, which is useful context, but it does not go beyond that into edge-case behavior such as failure modes or authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-structured sentence with no filler. The main purpose and scope appear first, and every phrase adds meaningful content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-id tool with a fully documented parameter and a read-only annotation, the description is nearly complete. It indicates the depth of information returned, though it does not enumerate the response structure; given the lack of an output schema, slightly more explicit return details could make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage of the single parameter, including the project id and its allowed values. The description adds no new parameter-level meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource and operation: 'Full detail on one project' and clarifies the kind of detail ('what it is, how it was built, and why it matters'). This clearly distinguishes it from list_projects, which would return multiple projects, and from profile/services siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description's 'on one project' makes the scope clear and implies this is the tool for a single project's details rather than a collection. It does not explicitly state alternatives or exclusions, but the context is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_servicesServices and pricingA
Read-only

What can be hired, at what fixed price, and how long it takes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, and the description adds useful context by indicating that prices are fixed and that duration information is included. However, it does not disclose response shape, ordering, or other behavioral traits; for a simple read-only catalog this gap is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single 13-word sentence that front-loads the resource and its key attributes with no filler. Every word earns its place and the structure is immediately parsable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read-only tool, the description is largely sufficient: it names the return content (services, fixed price, duration). Additional details like currency or list format would improve precision, but the low complexity means nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the description has no parameter semantics to clarify. It instead explains what the output covers, which satisfies the baseline for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete resource (services) and defines it by three output facets: what can be hired, at what fixed price, and how long it takes. This is clear and distinguishes it from siblings like list_skills or get_profile, even though no sibling names are mentioned.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrasing 'what can be hired' implies use when a user is asking about services or pricing, but there is no explicit when-to-use guidance or comparison to alternative tools. The usage context is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsList projectsA
Read-only

One-line summary of each project with its id. Use get_project for full detail.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation. The description adds valuable behavioral context by clarifying the output is a summary (one-line) and includes ids, which is not derivable from the annotation or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences convey the purpose, output format, and the alternative tool with no filler. The core behavior is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, zero-parameter tool with no output schema, the description is fully sufficient: it explains what is returned, and the annotation covers the safety profile. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, there is nothing to document, and the baseline for 0 params is 4. The description correctly avoids inventing parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific behavior: returning a one-line summary of each project with its id. It also distinguishes itself from the sibling get_project by noting that the latter provides full detail, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly names an alternative and the condition for choosing it: 'Use get_project for full detail.' This clearly implies this tool is for quick summaries, effectively telling an agent when to select it over the relevant sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_skillsSkillsC
Read-only

Skills grouped by area.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation. The description adds the detail that results are grouped by area, which is useful context, but it does not disclose the output format, pagination, or any filtering behavior. Given the annotation, a moderate score is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with a single short phrase. It is appropriately sized and front-loaded, though it may be too terse to convey necessary context. However, conciseness itself is strong.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (no parameters, no output schema), the description should still clarify what the agent can expect from the response, such as a list of skills and their associated areas. 'Skills grouped by area' is too vague and leaves the agent without enough information to interpret the result or use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. There is nothing for the description to explain about parameters, and the schema confirms this. The description adds no parameter-related meaning because none exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the resource (skills) and a grouping criterion (by area), but it lacks an explicit verb like 'list' or 'return'. It is distinguishable from sibling tools by the resource type, but the phrasing is a noun phrase rather than a clear action statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. The description does not mention any conditions, exclusions, or related tools like list_projects or get_services, leaving the agent to infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.1.1
    • First observedget_availability
    • First observedget_contact
    • First observedget_profile
    • First observedget_project
    • First observedget_services
    • First observedlist_projects
    • First observedlist_skills

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct aspect of the person's professional profile: identity, skills, projects, services, availability, and contact. The list_projects/get_project pairing is clearly differentiated through explicit summary-vs-detail descriptions.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern, with get_ for single resources and list_ for collections. This is a clean, predictable convention across the entire set.

Tool Count5/5

Seven tools is well-scoped for a personal professional profile server. Each tool represents a meaningful section a client would want to query, and none feels redundant or unnecessary.

Completeness5/5

The tool surface covers the full lifecycle of exploring a professional profile: who the person is, what they know, what they've done, what they offer, availability, and how to reach them. There are no obvious dead ends or missing critical operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes a public, read-only professional profile with tools to search resume evidence, fetch curated links, and generate career briefs for LLM agents.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables searching and retrieving portfolio data including experience, skills, and contact information through natural language queries.
    5
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes personal portfolio data as tools for Claude to answer questions about the developer, including profile, skills, experience, projects, and contact information.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants and LLM clients to query a professional CV and portfolio, including work history, technical skills, projects, job compatibility evaluation, education, and contact details.
    MIT