streamable-httpMITupdated 12d ago
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.
What can you do with Ask Me?
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:
| Tool | What it returns |
|---|---|
get_current_focus |
Current allocation, active engagements, and the primary vertical wedge in progress. |
get_engagement_summary |
A specific engagement (NXT Robotics, AIMIA, Hydrostasis, Digital QR Card) described at a public-safe level. |
search_reusable_patterns |
Keyword search over the operator's 12+ reusable engineering-patterns catalog. |
check_availability |
How many Playbook / Retainer slots are open + earliest next-open date. |
get_offer_details |
Current bundled offer: MCP-Server Playbook + Fractional CTO Retainer. |
book_discovery_call |
Instructions + 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:
{
"mcpServers": {
"ask-me": {
"url": "https://ask-me-mcp-xi.vercel.app/api/mcp"
}
}
}
3. Claude Code CLI
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):
{
"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
git clone https://github.com/tounsils/ask-me-mcp.git
cd ask-me-mcp
npm install
Run locally as a stdio server
npm run dev
Point Claude Code or the MCP Inspector at the resulting process.
Build for production
npm run build
Outputs to dist/.
Deploy to Vercel
# 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
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:
- Typed tool contract. Six JSON-schema-strict tools. Nothing free-form. The model can only invoke these, only with these arguments.
- Coordinator + specialists (extensible). v0 has one coordinator (the MCP server routing tool calls). v1 will add elicitation + supervisor agents inside more complex tools.
- Typed signal vector. Structured facts extracted from the grounding data. Not free-text.
- Versioned reasoning specification. The tool implementations ARE the reasoning spec โ versioned in the code, not in a prompt.
- Rails + confidence. Every response carries
confidence+sources+ optionaldisclaimers. The model can display them. - External grounding. The server queries
src/grounding/data.json; the model never invents. - Evaluation corpus + eval runner + certification.
eval/corpus.jsonhas expected answers;npm run evalreplays 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 tounsils@gmail.com.
License
MIT. See LICENSE.
Attribution
Built by Ilyes Tounsi ยท Carlsbad, CA ยท tounsils.github.io.
Install
Add Ask Me to your client. Pick the one you use.
claude mcp add --transport http ask-me https://ask-me-mcp-xi.vercel.app/api/mcpcodex mcp add ask-me --url https://ask-me-mcp-xi.vercel.app/api/mcp{
"mcpServers": {
"ask-me": {
"url": "https://ask-me-mcp-xi.vercel.app/api/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"ask-me": {
"type": "http",
"url": "https://ask-me-mcp-xi.vercel.app/api/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"ask-me": {
"url": "https://ask-me-mcp-xi.vercel.app/api/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"ask-me": {
"serverUrl": "https://ask-me-mcp-xi.vercel.app/api/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance19/25
- Trust13/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 4 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint โ no local install
Version history
| Versions | Published |
|---|---|
| 0.1.0Latest | Aug 27, 2026 |