neuromancer-mcp

neuromancer-mcp

Publish yourself as a remote MCP server, exposing your résumé via tools so company agents can evaluate and contact you.

Category
访问服务器

README

neuromancer-mcp

Your résumé, as a remote MCP server.

Most job-search tooling built on the Model Context Protocol points one way. A candidate's agent auto-applies to job boards, or a recruiter's agent screens a stack of résumés. This flips the direction. You publish yourself as a remote MCP server, and a company's agent connects with one command to learn about you and, if there's a fit, reach out.

claude mcp add --transport http you https://mcp.example.com/api/mcp

Then, inside their agent:

"Look up this candidate. What have they shipped with agents? If they fit our staff engineer role, get in touch."

The agent calls about_me, reads get_experience and list_projects, runs the role past fit_for_role, checks availability, and if it adds up, calls contact_me. You get an email.

Honest expectations

No recruiter has to use this, and there is no discovery layer that routes agents to personal MCP servers today. But anyone who would bother to connect is exactly the kind of person worth hearing from, and making yourself addressable by an agent is itself the signal. Treat this as a high-signal, low-volume channel and a working reference implementation, not a traffic firehose.

What it exposes

Eight tools and one resource. Everything is read-only except contact_me. Every tool returns human/LLM-readable text and machine-parseable structuredContent (validated against an outputSchema), so both frontier agents and simpler programmatic clients get value.

Tool Input What it does
about_me none Short bio, education, and key links. The entry point.
get_profile none The entire profile in one call (text + structured). Use when you want everything at once.
get_experience area? Work history, filtered at the bullet level by tag (e.g. agents returns only the agent bullets, not the whole role).
list_projects tag? Public, shipped work with links. Proof, not claims.
search query Free-text keyword search across experience, projects, and skills.
fit_for_role job_description Returns the full background framed against the role for the calling agent to judge. The server runs no model — a non-LLM client gets context, not a verdict.
availability none What the owner is open to, so an agent can self-qualify before reaching out.
contact_me from, message, context? Notifies the owner by email that someone wants to connect, and returns a booking link. Inbound only, rate-limited, and idempotent (dedupes accidental repeats).

Plus a resource, profile://me, which returns the whole profile as one document for clients that prefer to ground on a resource instead of calling tools. (Tools-only clients that don't support resources can use get_profile instead.)

A JSON liveness check is at GET /api/health (and GET /health locally).

Use it (connecting)

Any MCP client works (Claude Code, Claude Desktop, Cursor, Windsurf, or your own agent). With Claude Code:

claude mcp add --transport http <name> https://<host>/api/mcp
# talk to your agent, then remove it with:
claude mcp remove <name>

To explore it visually, point the MCP Inspector at the same URL:

npx @modelcontextprotocol/inspector
# Transport: Streamable HTTP, URL: https://<host>/api/mcp

(Running locally, the endpoint is http://localhost:3000/mcp via the Express dev server.)

Make it your own (the template)

This repo is built to be forked. The whole profile lives in one file.

  1. Fork the repo and edit src/profile.ts. It is the single source of truth. The server never invents or fetches anything; it only reads from this file. Keep it to public, share-anything facts. Private contact details stay out of the file by design (see below).
  2. Copy .env.example to .env and fill in the values you want (see Configuration).
  3. Run it locally to check, then deploy it anywhere that runs Node, and put your claude mcp add line on your site.

Run and test it locally

Start the dev server (Express, Streamable HTTP):

npm install
npm run dev          # serves http://localhost:3000/mcp

MCP Inspector (visual)

The fastest way to poke every tool by hand. With the dev server running:

npx @modelcontextprotocol/inspector

It opens a browser UI. Set Transport: Streamable HTTP, URL: http://localhost:3000/mcp, click Connect, and you'll see all six tools plus the profile://me resource, each callable from a form.

curl (raw JSON-RPC)

Note the Accept header must list both application/json and text/event-stream.

# list tools
curl -s http://localhost:3000/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

# call a tool
curl -s http://localhost:3000/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"about_me","arguments":{}}}'

# read the resource
curl -s http://localhost:3000/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":3,"method":"resources/read","params":{"uri":"profile://me"}}'

A real agent (local)

Point Claude Code or Codex at the local server, drive it conversationally, then remove it:

# Claude Code
claude mcp add --transport http rahul-local http://localhost:3000/mcp
claude mcp remove rahul-local

# Codex
codex mcp add rahul-local --url http://localhost:3000/mcp
codex mcp remove rahul-local

Configuration

All optional. With nothing set, the server runs and contact_me falls back to a dry run that logs the message instead of sending it, so the project works the moment you clone it.

Variable Purpose
PORT Local port. Defaults to 3000.
RESEND_API_KEY Resend API key, so contact_me can send email.
CONTACT_TO_EMAIL Where contact_me notifications are delivered (your inbox).
CONTACT_FROM_EMAIL Sender address. Must be verified in Resend. Defaults to Resend's test sender, which delivers to your own account email.

How it works

  • Transport. Streamable HTTP in stateless mode (sessionIdGenerator: undefined). Every message is a POST /mcp and the server replies with plain JSON. A fresh server and transport are built per request, so concurrent callers never collide on message IDs, and the same code drops onto serverless without changes.
  • No reasoning on the server. fit_for_role does not score or keyword-match. It hands the calling agent the full background plus the role and asks for an honest verdict. The frontier model on the other end does the semantic judgment, which is better than anything a matcher in this repo could do.
  • One side effect, inbound only. contact_me notifies the owner. It never emails third parties on the owner's behalf. Inputs are length-capped and validated by the schema before the handler runs, and a small per-IP rate limit guards the endpoint.
  • Your inbox is not in the code. Outreach is delivered via CONTACT_TO_EMAIL from the environment, so a public repo never exposes a scrapable address.

Deploy

Production runs on Vercel as a serverless function (api/mcp.ts), while local dev uses the Express server. Both register the same tools via src/capabilities.ts. See DEPLOY.md for the full walkthrough: import, environment variables, custom domain, and turning off Deployment Protection.

License

MIT. See LICENSE.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选