Mock
FreeNot checkedA minimal local HTTP MCP mock server for development and testing, providing predictable tool responses with OAuth token support and zero dependencies.
About
A minimal local HTTP MCP mock server for development and testing, providing predictable tool responses with OAuth token support and zero dependencies.
README
Minimal local HTTP MCP mock server for development integration.
Why this exists
- fast local connector testing
- zero dependencies and setup
- deterministic tool responses for dev and demos
Requirements
- Node.js 18+
Run
npm start
Defaults:
- host:
0.0.0.0 - port:
8787 - MCP endpoint:
http://localhost:8787/mcp - OAuth token endpoint:
http://localhost:8787/oauth/token - OAuth authorize endpoint:
http://localhost:8787/oauth/authorize - Direct email/password login endpoint:
http://localhost:8787/oauth/login
Optional overrides:
HOST=0.0.0.0 PORT=8787 npm start
Code structure
server.mjs: HTTP bootstrap and route wiringsrc/config.mjs: environment-driven config and client loadingsrc/http.mjs: shared HTTP/response/body parsing helperssrc/auth.mjs: token issuing + Bearer validationsrc/tools.mjs: mock tool catalog + implementationssrc/rpc.mjs: MCP JSON-RPC dispatcher + cancellation handling
Health check
GET /health
Example:
curl http://127.0.0.1:8787/health
MCP methods supported
initializenotifications/initializedtools/listtools/call$/cancelRequestnotifications/cancelledresources/list(returns empty)prompts/list(returns empty)
Auth flow
POST /mcp requires Authorization: Bearer <access_token>.
Default OAuth client:
client_id:demo-clientclient_secret:demo-secret- scopes:
crm.read crm.write crm.enrich
Default mock users:
[email protected]/alice-passwordwithcrm.read crm.write crm.enrich[email protected]/bob-passwordwithcrm.read
Client credentials token
Use this for machine-to-machine testing:
curl -X POST http://localhost:8787/oauth/token ^
-H "Content-Type: application/x-www-form-urlencoded" ^
-d "grant_type=client_credentials&client_id=demo-client&client_secret=demo-secret&scope=crm.read%20crm.write%20crm.enrich"
Mock OAuth authorization code login
Open the authorize URL in a browser. The mock server renders a login page, accepts one of the default mock users, then redirects to redirect_uri with a temporary code.
http://localhost:8787/oauth/authorize?response_type=code&client_id=demo-client&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback&scope=crm.read%20crm.write&state=demo-state
Exchange the returned code for an access token:
curl -X POST http://localhost:8787/oauth/token ^
-H "Content-Type: application/x-www-form-urlencoded" ^
-d "grant_type=authorization_code&client_id=demo-client&client_secret=demo-secret&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback&code=<code>"
Direct mock email/password login
Use this when you want a token response directly from the mock server without browser redirects:
curl -X POST http://localhost:8787/oauth/login ^
-H "Content-Type: application/json" ^
-d "{\"client_id\":\"demo-client\",\"email\":\"[email protected]\",\"password\":\"alice-password\",\"scope\":\"crm.read crm.write\"}"
Tools exposed
crm.search_contacts- input:
{ "query": "alice" }
- input:
crm.create_deal- input:
{ "title": "Pilot", "amount": 25000, "contactId": "c_1001" }
- input:
Quick test payloads
Initialize:
curl -X POST http://127.0.0.1:8787/mcp ^
-H "Authorization: Bearer <access_token>" ^
-H "Content-Type: application/json" ^
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{}}"
List tools:
curl -X POST http://127.0.0.1:8787/mcp ^
-H "Authorization: Bearer <access_token>" ^
-H "Content-Type: application/json" ^
-d "{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\",\"params\":{}}"
Call crm.search_contacts:
curl -X POST http://127.0.0.1:8787/mcp ^
-H "Authorization: Bearer <access_token>" ^
-H "Content-Type: application/json" ^
-d "{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":\"crm.search_contacts\",\"arguments\":{\"query\":\"alice\"}}}"
Cancel a running request:
curl -X POST http://127.0.0.1:8787/mcp ^
-H "Authorization: Bearer <access_token>" ^
-H "Content-Type: application/json" ^
-d "{\"jsonrpc\":\"2.0\",\"id\":99,\"method\":\"$/cancelRequest\",\"params\":{\"requestId\":3,\"reason\":\"user aborted\"}}"
Connector UI values (tfGPT Desktop)
- type:
mcp - transport:
http - server_url:
http://127.0.0.1:8787/mcp
Installing Mock
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/it370/mock-mcpFAQ
Is Mock MCP free?
Yes, Mock MCP is free — one-click install via Unyly at no cost.
Does Mock need an API key?
No, Mock runs without API keys or environment variables.
Is Mock hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Mock in Claude Desktop, Claude Code or Cursor?
Open Mock on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Mock with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
