Skip to content
§01 · MCP

MCP Server

Query this portfolio from an AI assistant instead of scraping it — a public, read-only MCP server over the project catalogue.

Quick setup

Pick your AI assistant and paste the config below.

claude mcp add --transport http portfolio https://jeffersongoncalves.dev.br/mcp
  1. Open Settings → Connectors → Add custom connector.
  2. Paste the endpoint URL below and confirm.
  3. The server is public — no token or login needed to authorize the connection.
https://jeffersongoncalves.dev.br/mcp

.cursor/mcp.json

{
  "mcpServers": {
    "portfolio": {
      "url": "https://jeffersongoncalves.dev.br/mcp"
    }
  }
}

.vscode/mcp.json

{
  "servers": {
    "portfolio": {
      "type": "http",
      "url": "https://jeffersongoncalves.dev.br/mcp"
    }
  }
}

~/.codex/config.toml

[mcp_servers.portfolio]
url = "https://jeffersongoncalves.dev.br/mcp"

~/.gemini/settings.json

{
  "mcpServers": {
    "portfolio": {
      "httpUrl": "https://jeffersongoncalves.dev.br/mcp"
    }
  }
}

This site publishes a public, read-only MCP (Model Context Protocol) server over the same catalogue you see on /projects, /articles and /links — so an AI assistant (Claude, etc.) can search and read these pages directly, no HTML scraping needed.

#Endpoint

https://jeffersongoncalves.dev.br/mcp

HTTP transport (Streamable HTTP), no auth — the content is already public. Throttled to 60 requests/min per IP. Ready-to-copy config for your AI assistant is further down this page.

#Test it locally with the MCP Inspector

php artisan mcp:inspector mcp/portfolio

#What it exposes

  • search_projects — search projects, articles and curated links by free text (query, also matches the tech stack and topics, not just the name), section (section: projects/articles/links), an exact category (category, e.g. filament_plugin, laravel_package, starter_kit), the summary's language (locale: pt_BR/en/es, defaults to en) and a result limit (limit, 1-50). Returns a Markdown list with each page's name, canonical URL, category and a one-line summary.
  • get_page — fetch one published page by its slug (the same one search_projects returns) and optionally locale (pt_BR/en/es) for the summary's language: category, whichever outbound links exist (GitHub, Packagist, npm, Docker Hub, docs, demo), stars, downloads, license, package type, language, supported Filament versions, stack and topics, plus a plain-text README excerpt (up to 3000 characters, already sanitized and stripped of markup).
  • get_site_stats — aggregate numbers across the whole portfolio: repo and catalogue-page counts, downloads by registry (Packagist/npm/JetBrains/Docker), stars, GitHub followers and sponsors, package counts by category, the busiest languages/topics, and links to support the work (GitHub Sponsors, Buy Me a Coffee). No arguments.
  • Resource site://llms.txt — the same plain-text page map served at /llms.txt: every public page on the site with its URL, meant to let an assistant discover the whole catalogue in one read.

#Technical notes

All three tools are read-only: search_projects and get_page query the exact same rows and published() scope that /projects, /articles and /links use, and get_site_stats reads the same cached aggregate the site's own stat cards use — nothing hidden, nothing mutable. The server runs on Laravel MCP over Streamable HTTP transport; no session or handshake beyond the MCP protocol itself.

New version available.