Official agent skill

fp-go MCP Server Setup

by IBM in IBM/fp-go

Configures and queries the fp-go MCP server so Claude Code, Claude Desktop or another MCP client can search fp-go's examples and skills directly.

OfficialApache-2.0Auto-check passedAgent Workflows

Install fp-go MCP Server Setup

skills CLI
$ npx skills add IBM/fp-go --skill fp-go-mcp -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install IBM/fp-go fp-go-mcp --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/IBM/fp-go.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/fp-go-mcp .claude/skills/fp-go-mcp && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
fp-go-mcp
GitHub stars
2k
Token cost
~3.3k tokens
SKILL.md length
1,096 words
Files
1
Skills in repo
10
Repo updated
First seen
Licence
Apache-2.0

At a glance

Configures and queries the fp-go MCP server so Claude Code, Claude Desktop or another MCP client can search fp-go's examples and skills directly.

  • Works in 4 steps: list_skills → use_skill → search_examples → …
  • Setting up the fp-go MCP server for Claude Code or Claude Desktop
  • SKILL.md covers Overview, Installation, Configuration and Available Tools, plus 5 more sections
  • Calls go and claude

What it does

The server lives inside the fp-go repository and is launched over stdio, so no global install is needed, only a go.mod in the working directory listing the generator as a tool dependency. For Claude Code it's added with a single command; for Claude Desktop it's added to the desktop app's own JSON config file, with separate paths given for macOS and Windows, followed by a restart to pick it up.

Once connected it exposes four tools: listing every available fp-go skill with its name, description and path, retrieving one skill's full content by name, searching Go examples with full-text search, and fetching one specific example by its symbol name. Any other MCP client just needs to run the same command over stdio, optionally with a verbose flag for debugging.

When your agent uses it

  • Setting up the fp-go MCP server for Claude Code or Claude Desktop
  • Searching fp-go's bundled Go examples by keyword
  • Retrieving the full content of a specific fp-go skill

Example prompts

  • “Add the fp-go MCP server to this project's Claude Code config.”
  • “Search fp-go examples for anything related to Option chaining.”
  • “List all the fp-go skills available through the MCP server.”

Requirements

  • Go 1.24+
  • A `go.mod` listing the fp-go generator as a tool dependency

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. list_skills
  2. use_skill
  3. search_examples
  4. get_example

What it can do on your machine

Read from SKILL.md and the folder at commit 446fd0a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • go
    • claude

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • modelcontextprotocol.io
    • pkg.go.dev
    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

fp-go MCP Server Setup loads about 3.3k tokens when it runs. Until then it costs about 116 tokens; SKILL.md has 1,096 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~116
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from IBM/fp-go at commit 446fd0a, republished under its Apache-2.0 licence (© IBM). 1,096 words, ~3,250 tokens.

Download SKILL.mdSave it as .claude/skills/fp-go-mcp/SKILL.md (or your agent's skills folder).
name
fp-go-mcp
description
Use this skill when working with the fp-go MCP (Model Context Protocol) server located in github.com/IBM/fp-go/gen/v2. Trigger on mentions of MCP server, fp-go MCP tools, list_skills, use_skill, search_examples, get_example, configuring fp-go for Claude Desktop, or when the user needs to access fp-go examples and skills programmatically. This skill explains how to configure and use the MCP server to access fp-go documentation, examples, and skills.

fp-go MCP Server

Overview

The fp-go MCP (Model Context Protocol) server provides programmatic access to fp-go skills, examples, and documentation. It's located in github.com/IBM/fp-go/gen/v2 and can be integrated into any MCP-compatible client such as Claude Desktop.

Prerequisite: the working directory must contain a go.mod that lists github.com/IBM/fp-go/gen/v2 as a tool dependency (added via go get -tool). The server is launched with go tool gen mcp and uses stdio transport, so no global installation is needed.

The fp-go MCP server exposes four tools:

  1. list_skills — List all available fp-go skills
  2. use_skill — Retrieve the full content of a specific skill
  3. search_examples — Search for Go examples using full-text search
  4. get_example — Retrieve a specific example by symbol name

Installation

Add the fp-go generator as a tool dependency in your project:

bash
go get -tool github.com/IBM/fp-go/gen/v2

This makes the tool available via go tool gen without requiring global installation.

Configuration

For Claude Code

Run in the project directory (the one whose go.mod has the tool dependency):

bash
claude mcp add fp-go -- go tool gen mcp
For Claude Desktop (Anthropic)

Add to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

json
{
  "mcpServers": {
    "fp-go": {
      "command": "go",
      "args": ["tool", "gen", "mcp"],
      "env": {}
    }
  }
}

After configuration, restart Claude Desktop to activate the server.

For Other MCP Clients

The server uses stdio transport and follows the MCP specification. Configure your client to:

  • Execute: go tool gen mcp
  • Use stdio for communication
  • Optionally add --verbose flag for debugging

Available Tools

1. list_skills

Description: List all available fp-go skills with their names, descriptions, and paths.

Parameters: None

Returns:

json
{
  "skills": [
    {
      "name": "fp-go",
      "description": "Core fp-go patterns and best practices",
      "path": "fp-go"
    },
    {
      "name": "fp-go-pipe-flow",
      "description": "Pipe and Flow composition patterns",
      "path": "fp-go-pipe-flow"
    }
  ]
}

Example Usage:

User: List all available fp-go skills
Assistant: [calls list_skills tool]

Use Cases:

  • Discover available skills
  • Find skills for specific topics
  • Get an overview of fp-go documentation
2. use_skill

Description: Retrieve the full content of a specific skill by name.

Parameters:

  • name (required): The skill name from list_skills (e.g., "fp-go", "fp-go-pipe-flow")

Returns:

json
{
  "name": "fp-go",
  "description": "Core fp-go patterns and best practices",
  "content": "# fp-go v2 — Functional Programming for Go\n\n..."
}

Example Usage:

User: Show me the fp-go-pipe-flow skill
Assistant: [calls use_skill with name="fp-go-pipe-flow"]

Use Cases:

  • Load detailed documentation for a specific topic
  • Get best practices and examples
  • Reference API patterns

Note: The content excludes the YAML frontmatter header — only the markdown content is returned.

3. search_examples

Description: Search for Go examples using full-text search across example names, symbols, packages, documentation comments, and code.

Parameters:

  • query (required): a SQLite FTS5 MATCH expression, passed verbatim — not free text and not Go syntax (see Query Rules below)
  • package_filter (optional): Filter by package, the path relative to the module root (e.g., "option", "either", "samples/mostly-adequate")

Returns:

json
{
  "examples": [
    {
      "id": "option::ExampleMap",
      "package": "github.com/IBM/fp-go/v2/option",
      "symbol": "Map",
      "name": "ExampleMap",
      "doc_comment": "// ExampleMap demonstrates mapping over an Option",
      "code": "func ExampleMap() {\n\t...\n}",
      "output": "Some(42)\n",
      "imports": "import O \"github.com/IBM/fp-go/v2/option\"",
      "file": "option/option_test.go"
    }
  ],
  "count": 1
}

Query Rules (violating them yields fts5: syntax error or no such column):

  1. Bare words only. Identifiers and plain words such as TraverseArray or Curry1 reader.
  2. No dots, no package qualifiers. P.And or reader.Curry1 is a syntax error. Drop the qualifier and put the package into package_filter: query="And", package_filter="predicate".
  3. No unquoted punctuation. . : , ( ) [ ] - + ^ are FTS5 operators or invalid (foo-bar is read as column bar). Wrap such text in double quotes to make it a phrase: the query "reader.Curry1" (quotes included) matches the adjacent words reader Curry1.
  4. Words are ANDed. And predicate negation Not requires all four words in one example and usually finds nothing. Use 1–3 identifiers, or widen with OR: Not OR And.
  5. Whole-word, case-insensitive matching. Curry does not match Curry1; use the prefix wildcard Curry*.
  6. Operators AND, OR, NOT must be uppercase; NOT is binary (Map NOT Option), it cannot start a query.

Search Syntax (the values below are the raw query strings):

  • Simple terms: Map — finds examples mentioning Map
  • Phrases: "point free" — exact phrase match (the double quotes are part of the query)
  • Boolean: Map AND Option — both terms required (same as Map Option)
  • Alternatives: Chain OR FlatMap — either term
  • Wildcards: Trav* — matches Traverse, TraverseArray, etc.
  • Package filter: query="Map", package_filter="option" — only option package
Instead ofUse
P.And predicate negation Notquery="And OR Not", package_filter="predicate"
reader.Curry1 Curry curried methodquery="Curry*" (add package_filter="reader" only if that package has matching examples)
O.Mapquery="Map", package_filter="option"
to-optionquery="ToOption"

package_filter must equal the package path relative to the module root exactly (option, array, samples/mostly-adequate); if a filtered search returns nothing, retry without the filter — not every package has examples for every function.

For an exact lookup of a known symbol, get_example is simpler than search_examples.

Example Usage:

User: Find examples of using Map with Option
Assistant: [calls search_examples with query="Map Option", package_filter="option"]

User: Show me examples of TraverseArray
Assistant: [calls search_examples with query="TraverseArray"]

Use Cases:

  • Find examples for specific functions
  • Discover usage patterns
  • Learn from working code
  • Find examples in a specific package

Limits: Returns up to 10 results, ranked by relevance.

Show full SKILL.md (410 more words)Show less
4. get_example

Description: Retrieve examples by symbol name. Matches the symbol or example function name exactly or as a substring, across all packages.

Parameters:

  • symbol (required): Symbol name without package qualifier (e.g., "Map", "Type.Method") or example function name (e.g., "ExampleMap"). "Map" also returns MapLeft, BiMap, … from every package; use search_examples with package_filter to narrow to one package.

Returns:

json
{
  "examples": [
    {
      "id": "option::ExampleMap",
      "package": "github.com/IBM/fp-go/v2/option",
      "symbol": "Map",
      "name": "ExampleMap",
      "doc_comment": "// ExampleMap demonstrates mapping over an Option",
      "code": "func ExampleMap() {\n\t...\n}",
      "output": "Some(42)\n",
      "imports": "import O \"github.com/IBM/fp-go/v2/option\"",
      "file": "option/option_test.go"
    }
  ],
  "count": 1
}

Example Usage:

User: Get the example for Option.Map
Assistant: [calls get_example with symbol="Map"]

User: Show me the ExampleTraverseArray example
Assistant: [calls get_example with symbol="ExampleTraverseArray"]

Use Cases:

  • Get a specific example by name
  • Retrieve all examples for a symbol
  • Access complete example code with imports and output

Note: A package-qualified name such as Array.Map or O.Map matches nothing, because the stored symbol is Map.

Workflow Examples

Discovering and Using Skills
1. User: "What fp-go skills are available?"
   → Assistant calls list_skills
   → Returns: fp-go, fp-go-pipe-flow, fp-go-context, fp-go-http, fp-go-logging, fp-go-lens, fp-go-effect, fp-go-pattern-matching, fp-go-pr-review, fp-go-mcp

2. User: "Show me the fp-go-pipe-flow skill"
   → Assistant calls use_skill(name="fp-go-pipe-flow")
   → Returns full skill content with examples and best practices

3. User: "Now help me refactor this code using Pipe"
   → Assistant uses the loaded skill to provide guidance
Finding Examples
1. User: "How do I use TraverseArray?"
   → Assistant calls search_examples(query="TraverseArray")
   → Returns ranked examples with code

2. User: "Show me more examples from the array package"
   → Assistant calls search_examples(query="Traverse", package_filter="array")
   → Returns array-specific examples

3. User: "Get the example for array Map"
   → Assistant calls search_examples(query="Map", package_filter="array")
   → Returns the array examples with full code
Combined Workflow
1. User: "I need to work with Option types"
   → Assistant calls list_skills to find relevant skills
   → Loads fp-go skill with use_skill(name="fp-go")

2. User: "Show me examples of Option.Map"
   → Assistant calls search_examples(query="Map", package_filter="option")
   → Returns examples with code and output

3. User: "How do I compose multiple Option operations?"
   → Assistant references the loaded skill content
   → Calls search_examples(query="Flow Option") for examples
   → Provides guidance based on skill + examples

Troubleshooting

Server Won't Start

Issue: Tool not found or not working

Solution: Ensure the tool is installed in your project:

bash
go get -tool github.com/IBM/fp-go/gen/v2

Then run with:

bash
go tool gen mcp
No Skills Found

Issue: list_skills returns empty list

Solution: The skills are embedded at build time. Update the tool:

bash
go get -tool github.com/IBM/fp-go/gen/v2@latest
Search Returns No Results

Issue: search_examples finds nothing

Solution:

  1. Check your search query syntax against the Query Rules (SQLite FTS5): no dots, no punctuation, few words
  2. Try broader terms (e.g., "Map" with package_filter="option" instead of "Option.Map"), or a prefix (Curry*)
  3. Verify the examples database is embedded (rebuild if needed)
Verbose Logging

Enable verbose mode to see detailed execution:

bash
go tool gen mcp --verbose

Logs go to stderr and include:

  • Tool registration
  • Tool calls with parameters
  • Query execution
  • Result counts

Best Practices

For AI Assistants
  1. Start with list_skills — Discover available skills before loading
  2. Load skills on demand — Use use_skill when needed, not preemptively
  3. Search before get — Use search_examples to find relevant examples, then get_example for details
  4. Cache skill content — Skills don't change during a session
  5. Use package filters — Narrow search results with package_filter
For Users
  1. Keep the server running — Configure it in your MCP client for persistent access
  2. Use verbose mode for debugging — Helps diagnose issues
  3. Update after changes — Run go get -tool github.com/IBM/fp-go/gen/v2@latest when fp-go or skills are updated
  4. Combine tools — Use skills for concepts, examples for code

Security Considerations

  • Read-only operations — All tools are marked as read-only
  • Embedded data only — Skills and examples are compiled into the binary; tools never read or write project files
  • No network access — Operates entirely offline
  • One temporary file — The embedded examples database is written to the OS temp directory at startup and removed on exit
  • Stdio transport — No network ports or external connections

References

© IBM, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/fp-go-mcp of IBM/fp-go.

Open the folder on GitHubat commit 446fd0a

Compare with similar skills

fp-go MCP Server Setup next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

fp-go MCP Server Setup compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
fp-go MCP Server Setup this skillIBM/fp-go2k—~3.3kAutomated safety check: PassApache-2.0
Skill Seekers Builderyusufkaraaslan/Skill_Seekers15k—~760Automated safety check: PassMIT
MCP Apps Builderawslabs/cli-agent-orchestrator1.4k—~1.7kAutomated safety check: PassApache-2.0
Local DevSmilyOrg/photofield608—~2.4kAutomated safety check: PassMIT
Releasejgravelle/jcodemunch-mcp2.7k—~6.5kAutomated safety check: PassCustom licence
Open PRArcadeAI/arcade-mcp1k—~2.9kAutomated safety check: PassMIT

Similar skills

  • Skill Seekers Builder

    yusufkaraaslan/Skill_Seekers

    Detects the type of a knowledge source and uses the Skill Seekers MCP tools to turn docs, repos, PDFs or videos into packaged AI skills.

    15k GitHub stars~760 tokensUpdated 10 days ago
    Agent WorkflowsAuto-check passed
  • MCP Apps Builder

    awslabs/cli-agent-orchestrator

    Official

    Load the official MCP Apps builder skills (create-mcp-app, migrate-oai-app, add-app-to-server, convert-web-app) from github.com/modelcontextprotocol/ext-apps.

    1.4k GitHub stars~1.7k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Local Dev

    SmilyOrg/photofield

    Run, test, and debug the photofield server locally. An agent skill from SmilyOrg/photofield.

    608 GitHub stars~2.4k tokensUpdated 1 mo ago
    Agent WorkflowsAuto-check passed
  • Release

    jgravelle/jcodemunch-mcp

    Publishing a jMunch release (jcodemunch-mcp, jdocmunch-mcp, jdatamunch-mcp, jragmunch-cli), reviewing/merging/closing PRs, and responding to the community.

    2.7k GitHub stars~6.5k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Open PR

    ArcadeAI/arcade-mcp

    Prepare arcade-mcp changes for review by verifying intended behavior, filling the repository PR template, and creating or updating the PR.

    1k GitHub stars~2.9k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Triage Security Advisories

    activepieces/activepieces

    Triage the GitHub privately-reported vulnerability backlog for Activepieces — pull repository security advisories from the Security tab, scope-check against SECURITY.md, deeply validate each…

    25k GitHub stars~3.9k tokensUpdated today
    Agent WorkflowsAuto-check passed

More from IBM/fp-go

All 10 skills in this repo
  • Official

    Covers handling Go's context.Context idiomatically in fp-go code: reading and scoping context through operators, timeouts, cancellation and converting ctx-first functions.

    2k GitHub stars~4.2k tokensUpdated today
    Auto-check passed
  • Teaches an agent to write fp-go v2 services with the Effect type, carrying dependencies in its type parameter instead of in context.Context or parameters.

    2k GitHub stars~4.3k tokensUpdated today
    Auto-check passed
  • Official

    Shows how to build composable, context-aware HTTP pipelines in Go using fp-go's ReaderIOResult monad instead of raw net/http calls.

    2k GitHub stars~4.4k tokensUpdated today
    Auto-check passed
  • Official

    Generates or hand-writes composable lenses for the fp-go library so nested Go structs can be read and updated immutably.

    2k GitHub stars~4.3k tokensUpdated today
    Auto-check passed
  • Official

    Adds logging to fp-go functional pipelines with Tap operators, entry and exit logs and error context, so that logging never changes the value or error flowing through.

    2k GitHub stars~3.7k tokensUpdated today
    Auto-check passed
  • Official

    Guides writing or reviewing point-free, first-match-wins case lists in fp-go v2 Go code instead of switch statements and if-else chains.

    2k GitHub stars~2.8k tokensUpdated today
    Auto-check passed

Categories

Questions about fp-go MCP Server Setup

What does fp-go MCP Server Setup do?

Configures and queries the fp-go MCP server so Claude Code, Claude Desktop or another MCP client can search fp-go's examples and skills directly. mod in the working directory listing the generator as a tool dependency. For Claude Code it's added with a single command; for Claude Desktop it's added to the desktop app's own JSON config file, with separate paths given for macOS and Windows, followed by a restart to pick it up.

When should I use fp-go MCP Server Setup?

fp-go MCP Server Setup fits situations like: setting up the fp-go MCP server for Claude Code or Claude Desktop; searching fp-go's bundled Go examples by keyword; retrieving the full content of a specific fp-go skill.

How do I install fp-go MCP Server Setup in Claude Code?

Run `npx skills add IBM/fp-go --skill fp-go-mcp -a claude-code`. Or copy the skill folder (skills/fp-go-mcp in IBM/fp-go) into .claude/skills/fp-go-mcp in your project. Claude Code loads it when a task matches its description.

How do I install fp-go MCP Server Setup in Codex?

Run `npx skills add IBM/fp-go --skill fp-go-mcp -a codex`. Or copy the skill folder (skills/fp-go-mcp in IBM/fp-go) into .agents/skills/fp-go-mcp in your project. Codex loads it when a task matches its description.

Can I use fp-go MCP Server Setup in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add IBM/fp-go --skill fp-go-mcp -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fp-go-mcp, .gemini/skills/fp-go-mcp, .github/skills/fp-go-mcp and .opencode/skills/fp-go-mcp in your project.

What does fp-go MCP Server Setup need to run?

Going by SKILL.md and its folder, fp-go MCP Server Setup needs the command-line tools its instructions call (go and claude). Our summary lists: Go 1.24+; A `go.mod` listing the fp-go generator as a tool dependency.

Does fp-go MCP Server Setup access the network?

SKILL.md names 3 domains. As links in the text: modelcontextprotocol.io, pkg.go.dev and github.com. This is read from the text; nothing was executed.

Is fp-go MCP Server Setup safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does fp-go MCP Server Setup use?

fp-go MCP Server Setup is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does fp-go MCP Server Setup use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to fp-go MCP Server Setup?

Skills that share tags, products or a category with fp-go MCP Server Setup: Skill Seekers Builder (yusufkaraaslan/Skill_Seekers, 15k stars), MCP Apps Builder (awslabs/cli-agent-orchestrator, 1.4k stars), Local Dev (SmilyOrg/photofield, 608 stars) and Release (jgravelle/jcodemunch-mcp, 2.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains fp-go MCP Server Setup?

IBM (a GitHub organization, an official publisher) maintains it in IBM/fp-go, which has 2,030 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on October 10, 2026.

Source: IBM/fp-go on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.