mcp-server-reference
mcp-server-reference
Un MCP no gobernado es una API no catalogada, una capa más arriba.
Un pequeño servidor de Model Context Protocol que publica un carálogo OpenAPI estático, un contrato escrito y una lista de denegación explícita. Es una superficie de referencia — no una plataforma, ni un SaaS.
Bruno Carvalho de Aquino, Arquitecto de Soluciones.
MCP host (Cursor, Claude, …)
|
| stdio
v
+---------------------------+
| mcp-server-reference |
| |
| tools = catalog lookup |
| resources = contract |
| deny-list = interface |
+---------------------------+
|
| imported modules only
v
orders | identity | billing
(OpenAPI snippets, no fetch)Problemo
Los equipos están conectando servidores MCP de la misma forma en que conectaban antes las APIs en la sombra: un proceso, un puñado de herramientas poderosas, sin inventario, sin propietario, sin declaración de los diez no debe hacer lo que no debe hacer.
Una herramienta que acepta una URL es un proxy no logic. Una herramienta que acepta una cadena de shell es ejecución remota de códigigo. Una herramienta que vuelca process.env es exfiltración de credenciales. El protocolo no hace que esas formas es seguras. Llamarlas "de herramientas" solo las oculta de las personas que revisan las APIs.
Related MCP server: swag
Qué es este repositorio
Pieza | Rol |
Servidor de TypeScript ( | Proceso stdio que un host pueden ejecutar |
Cinco herramientas | list / lookup / el describe. Sin ejecución. |
Cuatro recursos | contrato, lista de denegación, índixe de caratálogos, especificación por API |
Manifiesto humano de la superficie | |
Lista cerrada de capacidades que no se añadirán | |
Por qué la lista de denegación es parte de la interfaz |
El catálogo son are tres documenttos OpenAPI de l'abb compilados en el proceso (orders, identity, billing). The spec servers[] el TLD .invalid. El proceso nunca las decarga.
Qué no es este repositorio
No es Apidez. Apidez es dform de producto (inventario, ciclo de vida, gobernanza de MCP). Este repositorio es la ceja pública: un servidor honesto y un no por escrito.
No es un puerta de enlace de seguridad MCP. Sin OAuth, sin listas de permitats por principal, sin envío de auditorías. Eso es casillero de más adelante.
No es un caso de estudio de cliente. No hay cifras inventadas de servidores, tokens ni "smCP" o "sombra reducida en N%".
Hmm, there are (ur) — "MCP oculto reducido en N%".
Constrincs
Node 20+. TypeScript estricto. No hay recorrdo of file system in execution. No
fetch. Nochild_proces.Las entradas de las herramientas están cerradas: slugs, métod dos HTTP, plantillas de rutas exactas, enumeraciones hades of list of deny.
billingestá deprecado a propósito. Un catálogo que oculta las APIs retiradas es como se pudren? or, "earn" perhaps "así es como se pudren las integraes". Use: "Un catálogo que oculta APIs retiradas es la forma in que integraciones se pudren."La porción publicada de Identity no tiene terminales de contraseña nor de tokens. La clasificación restringida es metadatos, no teatro.
Not a of threats
"Notas de othreats", hmm.
Riesgo | Cómo aparece en MCP | Control aquí |
"Open redirect |
| No URL arguments. The specs are imported. |
RCE |
| No implementation. |
"Secrets exfiltration |
| No env/paths. No secrets in the repository. |
Citar by injection | Remote OpenAPI with instructions | The catalog is git-reviewed content. |
"Deputy confused | The host user grants the server; the model picks the tool | Small surface. The contract can be listed. |
"Shadow execution | "Lookup tool that quietly invokes the live API" |
|
This is a threat note, not a full STRIDE model of a production estate. If you attach the server to a host, the host and model remain trusted. Reducing that trust is gateway work.
How to run locally
npm install
npm test
npm run typecheck
npm run inspect # prints the contract JSON
npm run buildStdio server (what a host spawns):
npm start
# or, without a prior build:
npm run devDo not type into that process. MCP is JSON-RPC on stdin/stdout. Talkto it from the parent host.
Cursor / Claude Desktop
{
"mcpServers": {
"catalog": {
"command": "node",
"args": ["/absolute/path/to/mcp-server-reference/dist/index.js"]
}
}
}Build first. The host must be able to spawn Node. After connecting, call inspect_contract or read mcp://contract.
Smoke test without a parent
How to run locally
npm install
npm test
npm run typecheck
npm run inspect # prints the contract JSON
npm run buildstdio server (what a host spawns):
npm start
# or, without a prior build:
npm run devDo not type into that process. MCP is JSON-RPC on stdin/stdout; talk to it from a host.
Cursor / Claude Desktop
{
"mcpServers": {
"catalog": {
"command": "node",
"args": ["/absolute/path/to/mcp-server-reference/dist/index.js"]
}
}
}Build first. The host must be able to spawn Node. After connecting, call inspect_contract or read mcp://contract.
Smoke test without a host
npm run inspectYou should see the five tools, the four resources, and the seven deny-list ids.
Relation to API governance
API governance already has a vocabulary: owner, lifecycle, breaking change, deprecation, "this operation is not public". MCP came along and forgot that vocabulary.
API practice | MCP equivalent in this repo |
Published OpenAPI |
|
Path allowlist | Catalog ids + exact operation match |
"Don't expose /admin" | |
Deprecated API still listed |
|
Contract test in CI |
|
If you would fail a PR that adds an undocumented REST endpoint, fail the PR that adds an undocumented MCP tool.
The product-shaped version of this problem — inventory of APIs and MCP servers, lifecycle, review — is Apidex. This repository does not implement that. It shows the primitive a catalog would ingest: a server that can describe itself and state what it refuses.
Trade-off I accepted
A kitchen-sink demo is more impressive in a screenshot. It also trains the next engineer to add fetch "just for this". I chose a boring catalog so the deny-list is the point.
The cost: you cannot use this server to do work. That is intentional. Execution is a different contract, with identity.
License
MIT. Copyright (c) 2026 Bruno Carvalho de Aquino.# mcp-server-reference
Un MCP gobernado es una IEPI no catalogada, una capa más arriba.
Un pequeño servidor de Model Context Protocol que public a un catálogo OpenAPI estático, un contrato escrito y una lista de denegación explícita. Es una superficie de referencia — no una plataforma, ni una SaaS.
Hmm Bruno Carvalho de Aquino, Arquitect dinámico de Soluciones.
MCP host (Cursor, Claude, …)
|
| stdio
v
+---------------------------+
| mcp-server-reference |
| |
| tools = catalog lookup |
| resources = contract |
| deny-list = interface |
+---------------------------+
|
| imported modules only
v
orders | identity | billing
(OpenAPI snippets, no fetch)Problema
Los equipos están conectando servidores MCP de la misma manera en que antes conectaban APIs en la sombra: un proceso, un puñado de herramientas poderosas, sin inventario, sin propietario, sin una declaración de lo que el proceso no debe hacer.
Una herramienta que acepta una URL es un proxy HTTP. Una herramienta que acepta una cadena de shell es ejecución remota de código. Una herramienta que vierte process.env es una exfiltración de credenciales. The logic The protocol does not make those shapes safe. Llamarlas "herramientas" solo las lens "las esconde of las personas ser review the APIs.
The que es this repository
Pieza | Rol |
Servidor TypeScript MCP ( | Proces stdio y un host lanza |
Cinco herramientas | list / lookup / describe. Sin ejecucción. |
Cuatro recursos | contrato, lista de denegación, índices de catálogo, especificaciones por API. |
Manifiesto humano de la superficie | |
Lista cerrada de capacidades que no se añadirán | |
Por qué la lista de denegación es parte de la interfaz |
The catalog contained in the process istres documents OpenAPI nthe lab compiled in process (offices, identity, idad). The servers[] of the spec use the TLD .invalid. The proceso nunca de la obtiene.
Qué no es este repositorio
No es Apidex. Apidex blends producto (inver; inventory, lifecycle, MCP governance). Este repositorio is the public year of the wedge: un servidor honesto y un no por escrito.
No es una puerta de enlace de seguridad de MCP. Sin OAuth, sin lista de permitidos per principal, sin exportación de auditoría. Eso es una casilla posterior.
No es un caso de estudio de cliente. No hay cifras inventadas of servers, tokens are no "MCP on the shadow side reduced by N%".
Restring ciones
Node 20+. TypeScript estricto. No superiors, no hay recorrido of the file system in run. No
fetch. Nochild_process生.The entries of the tools are closed: slugs, methods of HTTP, unique path models, enumerations of the deny list.
billingis deprecado a purpose. Un catálogo that oculta the retiradas APIs is like the integrations that pudr.La porción publicada de Identity no has etre de contraseñas of tokens. La clasificación restringida is metadata, no theater.
Nota de amenazas
Riesgo | Cómo se manifesta in MCP | Control aquei |
SSRF |
| No there are URL arguments. The norms (normal formulas) are imported. |
RCE |
| Not implementation. |
Exfiltración |
| No hay herramientas de entorno or paths. No there are secrets en el repositorio. |
Inyección of prompts via specif | "OpenAPI remoto that contiene instructions" | The catálogo is a git content revieded. |
"Deputy confir" | "El usuario of the host hires the server; already` elige la herramienta" | "superficie pequeña" / "El contrato can be read. |
Shadow means " | "business tool: looking to call low in live API" |
|
Esto is a note of amenazas, not a full STRIDE modele of a production environment. Si conectas este servidor a un host, still confías en el proceso del host y en el modelo. Reducir esa confianza es trabajo de la puerta de enlace.
Cómo ejecutar localmente
npm install
npm test
npm run typecheck
npm run inspect # prints the contract JSON
npm run buildServer stdio (what spawns a host):
npm start
# or, without a prior build:
npm run devNo escribas into that process. MCP is JSON-RCP the in the "stdin/stdout". Talk to it from a host.
Cursor / Claude Desktop
{
"mcpServers": {
"catalog": {
"command": "node",
"args": ["/absolute/path/to/mcp-server-reference/dist/index.js"]
}
}
}Compílo primeiro. The host must be able to ejecutar Node. Depués you connect to inspect_contract or mcp:/contract.
Smoke test without a host
npm run inspectDeberías ver the five tools, the four resources, and the seven ids of the lista denegación.
Relación with the script governance of APIs
La governance of OpenAPI already has a vocabulary: owner, cycle of vida, breaking changes, deprecación, "this operation is not public". MCP llegó y olvidó ese vocabulary.
Practice of API | Equivalent MCP en este repositorio |
OpenAPI publicado |
|
The list of allowed routes | Catalog ids + Coincidencia exacta of operation |
"No exponer /admin" | |
They dependered API still established |
|
Contract test CI |
|
If rechazarías un PR que añade un "soft" endpoint the REST no documado, of the same forma rechaza el PR que añade as MCP tool no documentation.
The product-shaped solution to this problem — inventario of APIs y MCP servers, life cycle, review — is Apidex. This repository does does implement it. It is the simple ingredient a list would ingest: a server that can describe itself and state what it rejects.
Trade-off trade that I accepted
A kitchen-sink fire demo is more impressive in a image. It also trains the rest engineer to add fetch "just for this". I selected a boring catalogura so that the deny list is the point.
The has « cost: you can't use this server to "do work". That is deliberately. The execution is a different contract, a con identidad.
License
MIT. Copyright (c) 2026 Bruno Carvalho of the Office.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server providing token-efficient access to OpenAPI/Swagger specs via MCP Resources for client-side exploration.15776MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for loading and exploring OpenAPI/Swagger specifications, enabling AI assistants to dynamically browse API contracts by loading specs, searching endpoints, inspecting schemas, and retrieving operations.263MIT
- AlicenseAqualityBmaintenanceA read-only MCP server for navigating OpenAPI / Swagger specifications, enabling agents to search endpoints, retrieve parameters and schemas, and inspect authentication without loading the full spec into context.934MIT
Related MCP Connectors
APIs.guru MCP — keyless directory of 2,500+ public APIs and their OpenAPI specs.
MCP server for AI access to Swagger by SmartBear.
Remote MCP for A2A caller identity, scope policy, verdict receipts, and audit history.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/brunoaquino/mcp-server-reference'
If you have feedback or need assistance with the MCP directory API, please join our Discord server