Ask Me

io.github.tounsilsPublished by GitHub account tounsilsv0.1.0Updated Oct 24, 2026

Ask about an operator's work, reusable patterns, availability and offer. Typed tools, eval-gated.

VerifiedStreamable HTTPWeb executableKnowledge & MemoryBusiness & Commerce

Overview

AI-generated overview

A remote persona server that lets an assistant answer questions about one operator's work, reusable engineering patterns, availability and consulting offer.

What you can do
Answer questions about the operator's current focus, active engagements and vertical wedge, with confidence labels and source citations from public grounding data. Summarize specific past engagements at a public-safe level. Keyword-search a catalog of reusable engineering patterns. Check open Playbook and Retainer slots and the earliest next-open date. Retrieve the current bundled offer details. Give booking instructions and prep guidance for a discovery call, without scheduling it.
When to use it
Useful when you want an assistant to answer questions about this particular consultant's background, shipped patterns, availability or offer, for example when evaluating a potential engagement or booking a discovery call.
Requirements
Remote MCP endpoint over Streamable HTTP with OAuth 2.1; the manifest declares OAuth as required. Connect through a client that supports OAuth, or add the endpoint URL in a client config. Local stdio development needs Node.js 20+ and the repository source.
Before you install
The server is a sales and marketing channel for the operator's consulting services and includes a pitch for a paid engagement. It refuses to negotiate price and does not auto-schedule calls. Answers are limited to the operator's public grounding data, so treat them as self-reported. OAuth is required for the hosted endpoint.

Installation

In SourceWeft

  1. Open Ask Me in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.tounsils%2Fask-me-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "ask-me": {
      "type": "http",
      "url": "https://ask-me-mcp-xi.vercel.app/api/mcp"
    }
  }
}

README

ask-me-mcp

A persona MCP server. Ask Claude / ChatGPT / Grok about the operator's work, patterns, availability, and offer — grounded in their public résumé, projects index, and offer page.

Reference implementation of the MCP-Server Harness pattern. This repo is a working example of the same architecture the operator sells as a productized 6-week engagement. If you like the shape, that's the sales pitch — see The pattern at the bottom.

What it does

Six typed tools any AI-assistant user can call:

ToolWhat it returns
get_current_focusCurrent allocation, active engagements, and the primary vertical wedge in progress.
get_engagement_summaryA specific engagement (NXT Robotics, AIMIA, Hydrostasis, Digital QR Card) described at a public-safe level.
search_reusable_patternsKeyword search over the operator's 12+ reusable engineering-patterns catalog.
check_availabilityHow many Playbook / Retainer slots are open + earliest next-open date.
get_offer_detailsCurrent bundled offer: MCP-Server Playbook + Fractional CTO Retainer.
book_discovery_callInstructions + prep guidance for booking a discovery call. Does not auto-schedule. Explicitly refuses to negotiate price.

Every response ships with a confidence label and a source citation. The server never invents; if the grounding data doesn't say it, the server doesn't say it.

Install (as a user)

The remote endpoint speaks MCP Streamable HTTP + OAuth 2.1. Three ways to connect:

1. Claude Desktop — connector directory ("Connect" button)

Add via the Claude Desktop UI: Settings → Connectors → Add custom connector → URL: https://ask-me-mcp-xi.vercel.app/api/mcp. Click Connect. The desktop client discovers OAuth metadata, registers as a client, exchanges tokens, and mounts the tools. No manual config.

2. Claude Desktop / Claude Code — config file (skip OAuth)

Add to claude_desktop_config.json — location varies by OS; see Claude Desktop config docs:

jsonc
{  "mcpServers": {    "ask-me": {      "url": "https://ask-me-mcp-xi.vercel.app/api/mcp"    }  }}

3. Claude Code CLI

bash
claude mcp add --scope user ask-me https://ask-me-mcp-xi.vercel.app/api/mcp

Local stdio (development)

For local stdio dev (no HTTP, no OAuth — auth doesn't apply to stdio):

jsonc
{  "mcpServers": {    "ask-me": {      "command": "node",      "args": ["/absolute/path/to/ask-me-mcp/dist/src/server.js"]    }  }}

Then in any Claude Code session:

what's Ilyes's current focus? what patterns has he shipped for LLM evaluation? is he available for a Playbook engagement in October?

Develop (as a maintainer)

Requirements

  • Node.js 20+
  • npm (or pnpm / yarn — package.json is npm-first)

Setup

bash
git clone https://github.com/tounsils/ask-me-mcp.gitcd ask-me-mcpnpm install

Run locally as a stdio server

bash
npm run dev

Point Claude Code or the MCP Inspector at the resulting process.

Build for production

bash
npm run build

Outputs to dist/.

Deploy to Vercel

bash
# Set the JWT signing secret (one-time; required for OAuth).vercel env add MCP_JWT_SECRET production# Paste a long random string. Generate one: `openssl rand -base64 48`.
vercel deploy --prod

The api/mcp.ts handler serves the Streamable HTTP transport with OAuth 2.1 protection — the format Claude's connector directory and ChatGPT's Apps SDK both use. See docs/oauth-flow.md for the full architecture.

Run the eval corpus

bash
npm run eval           # 15 tool cases against handlers directly (no HTTP)npm run eval:oauth     # 6-step end-to-end OAuth flow (needs MCP_JWT_SECRET)

The tool corpus fails the build if fewer than a threshold percentage of expected answers match. Pass or nothing ships.

The OAuth flow test exercises register → authorize → token → protected /api/mcp → 401 challenge → refresh — all in-process against Vercel-shaped mock req/res objects.

Repository layout

ask-me-mcp/├── src/│   ├── server.ts               # shared MCP server (used by both stdio + HTTP)│   ├── tools/                  # six typed tool implementations│   │   ├── getCurrentFocus.ts│   │   ├── getEngagementSummary.ts│   │   ├── searchReusablePatterns.ts│   │   ├── checkAvailability.ts│   │   ├── getOfferDetails.ts│   │   └── bookDiscoveryCall.ts│   ├── grounding/│   │   ├── data.json           # pre-extracted structured facts (v0)│   │   └── index.ts            # loaders + search helpers│   └── rails/│       └── confidence.ts       # confidence + source-citation wrapper; refusal helper│   └── oauth/                  # OAuth 2.1 + PKCE + anonymous DCR│       ├── config.ts           # issuer, scopes, TTLs, endpoint paths│       ├── jwt.ts              # HS256 sign/verify (via `jose`)│       ├── clientRegistry.ts   # client_id = signed JWT (no DB)│       └── codeGrant.ts        # auth code + access/refresh token + PKCE S256├── api/│   ├── mcp.ts                          # Vercel serverless entry (Streamable HTTP + Bearer auth)│   ├── health.ts                       # diagnostic (unauthenticated)│   ├── register.ts                     # RFC 7591 DCR│   ├── authorize.ts                    # authorization endpoint (auto-approves)│   ├── token.ts                        # token exchange with PKCE│   ├── oauth-protected-resource.ts     # RFC 9728 metadata│   └── oauth-authorization-server.ts   # RFC 8414 metadata├── eval/│   ├── corpus.json             # 15 tool cases + expected answers│   ├── runner.ts               # replays tool corpus, threshold-gated│   └── oauth-flow.ts           # 6-step OAuth end-to-end test├── docs/│   └── oauth-flow.md           # OAuth architecture + how to swap for real user identity├── package.json├── tsconfig.json├── vercel.json└── README.md

The pattern: the MCP-Server Harness

This project is a reference implementation of a pattern the operator ships to clients as a productized 6-week engagement — the MCP-Server Product Playbook.

The shape:

  1. Typed tool contract. Six JSON-schema-strict tools. Nothing free-form. The model can only invoke these, only with these arguments.
  2. Coordinator + specialists (extensible). v0 has one coordinator (the MCP server routing tool calls). v1 will add elicitation + supervisor agents inside more complex tools.
  3. Typed signal vector. Structured facts extracted from the grounding data. Not free-text.
  4. Versioned reasoning specification. The tool implementations ARE the reasoning spec — versioned in the code, not in a prompt.
  5. Rails + confidence. Every response carries confidence + sources + optional disclaimers. The model can display them.
  6. External grounding. The server queries src/grounding/data.json; the model never invents.
  7. Evaluation corpus + eval runner + certification. eval/corpus.json has expected answers; npm run eval replays them. Ships or doesn't.

If you're building a product that fits this shape (career guidance, medical triage, legal intake, financial planning, coaching, expert-system anything), the operator sells a 6-week fixed-scope engagement to ship it. See get_offer_details or email [email protected].

License

MIT. See LICENSE.

Attribution

Built by Ilyes Tounsi · Carlsbad, CA · tounsils.github.io.

Source: README.md at commit 6c3af7c

Tools

0
This server asks you to sign in, so SourceWeft could not read its tools without an account and has not indexed them. What a connected account sees can depend on that account and its permissions.

Version history

1
  1. v0.1.0LatestSep 16, 2026

Score

85% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts