yellow-pages
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@yellow-pagessearch for API operations about country holidays"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
YellowPages
Discover and execute API operations. Your agent stays in control.
YellowPages is an MCP (Model Context Protocol) server that exposes two tools: discover (RAG over an OpenAPI schema, returns matching operations with their schema) and execute (runs an operation by ID with given params). No LLM inside the server—your caller agent chooses which operation and parameters to use.
Why it exists
APIs are everywhere, but using them usually means reading specs, copying URLs, and wiring parameters. YellowPages inverts that: you load an OpenAPI schema once and index it, then your MCP host (e.g. Cursor) can call discover with a natural-language query to get matching operations (with IDs and JSON schema), then call execute with the chosen operation and params. The server does RAG for discovery and runs the HTTP call; the caller agent decides what to call and with what arguments.
Related MCP server: OpenAPI MCP Server
How it works
There are two applications:
Indexer – Build the vector DB once (or when the schema changes). Run
uv run python -m src.indexerwith your OpenAPI schema path and Chroma directory (env or--schema-path/--chroma-dir). This flattens the schema into operations and indexes them in Chroma with local embeddings (sentence-transformers/all-MiniLM-L6-v2 by default).MCP server – Run
uv run main.pyto start the server. It loads the existing Chroma index and schema (the indexer must have been run first). The server exposes two tools: discover_operations (RAG only; returns matching operations with ID and schema) and execute_operation (runs an operation by name with path/query/body params). No LLM inside the server; the caller agent chooses what to execute.
So: build the index once; then the caller uses discover then execute. The server expects the Chroma directory to already exist.
Quick start
UV is the recommended package manager. From the project root:
uv sync
# Build the vector index from your OpenAPI schema (once, or when schema changes)
uv run python -m src.indexer
# Start the MCP server (no API key needed; uses local embeddings)
uv run main.pyOr run the server as uv run python -m src.mcp.server (same effect). The server uses stdio by default so hosts like Cursor can launch it as a subprocess. For remote use, set YELLOW_PAGES_TRANSPORT=streamable-http and run uv run main.py.
Without UV: pip install -e ., then run the indexer once (python -m src.indexer), then python main.py (or python -m src.mcp.server).
Environment variables
Variable | Description |
| OpenAPI schema file (JSON or YAML). Default: |
| Chroma vector DB directory. Default: |
| HuggingFace/sentence-transformers model name. Default: |
|
|
Adding to Cursor
In your MCP settings, add a server entry for YellowPages (UV recommended):
{
"mcpServers": {
"yellow-pages": {
"command": "uv",
"args": ["run", "/path/to/yellow-pages/main.py"]
}
}
}Without UV: "command": "python", "args": ["/path/to/yellow-pages/main.py"].
Use discover_operations with a natural-language query to get matching API operations (with name, method, url, parameters), then use execute_operation with the chosen operation name and params. No API key required for the MCP server.
Schema format
The server expects a standard OpenAPI 3.x file with a servers block. It converts each operation into a simplified shape: name, tags, url, method, parameters, responses. The bundled sample_schema.json (Nager.Date holiday API) is there so you can try it immediately.
Website deployment
The repository now includes a Vite + React website in website/ and a GitHub Actions workflow that publishes the built app to GitHub Pages from the main branch.
Branch and path conventions:
mainis the deploy branch.The website source lives under
website/.The published site root is the build output in
website/dist/.When adding pages or routes, keep them under
website/src/and prefer route-based navigation over hard-coded file paths.
Available Tools
2 toolsdiscover_operationsA
Discover which API operations match a natural-language query. Uses RAG over the
loaded OpenAPI schema; returns a list of operation entries (operation name, method,
url, parameters with name/type/required). Use this to find tool IDs, then call
execute_operation with the chosen operation_name and params. No execution happens here.
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses the internal mechanism (RAG over the OpenAPI schema), states what is returned (operation entries with specific fields), and explicitly notes that no execution happens. While it doesn't mention potential permissions or errors, it gives sufficient transparency for a read-only discovery operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place: purpose, output details, and usage guidance. It is front-loaded with the key action and avoids unnecessary fluff, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 params) and has an output schema, so the description doesn't need to detail return values. It explains the tool's role in the overall workflow, what it returns, and the next step. The only gap is the undocumented 'k' parameter, which slightly reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The description clarifies 'query' as a natural-language query, but makes no mention of the 'k' parameter. Given 'k' has a default of 5 and is likely the number of results, the description should explain this but does not, leaving a significant semantic gap for the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific action—'Discover which API operations match a natural-language query'—and clearly identifies the resource (API operations). It distinguishes itself from the sibling tool 'execute_operation' by explicitly stating 'No execution happens here' and framing this as a discovery step for finding tool IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent exactly when to use this tool: 'Use this to find tool IDs, then call execute_operation with the chosen operation_name and params.' It also clarifies the boundary by stating no execution occurs, which helps the agent avoid using it for execution purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_operationA
Execute one API operation by name. Use operation_name from discover_operations;
provide path_params, query_params, and optionally body_data as required by the schema.
Returns the API response body or an error string.
| Name | Required | Description | Default |
|---|---|---|---|
| body_data | No | ||
| path_params | No | ||
| query_params | No | ||
| operation_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description bears the full burden of behavioral disclosure. It only states that the tool returns the API response body or an error string, but it does not disclose potential side effects, required permissions, idempotency, or whether the operation could be destructive. As a generic operation executor, this ambiguity is significant. The return type is mentioned, but broader behavioral traits are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the main action ('Execute one API operation by name'). It consists of two sentences and every clause contributes necessary guidance—how to get the operation name, what parameters to provide, and what the tool returns. No superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a generic executor with an output schema (though not detailed in the description), the description covers the essential workflow: source the operation name, supply parameters, and receive a response or error. It references discover_operations and the operation schema, which provides context for dynamically resolving details. It does not explain error handling formats or authentication, but for a wrapper tool this is a reasonable level of completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions are completely absent (0% coverage), so the description must compensate. It mentions path_params, query_params, and body_data by name and says they are provided 'as required by the schema,' but it does not explain their formats or how they map to the operation's requirements. The term 'optionally' for body_data is useful, but overall the description adds minimal semantic value beyond what the parameter names already imply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool executes a single API operation by name, which is a specific verb+resource combination. It distinguishes itself from the sibling tool discover_operations by explicitly referencing operation names obtained from that tool, making the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by telling the agent to use operation_name from discover_operations and to supply path_params, query_params, and optionally body_data as required by the schema. It does not explicitly mention when not to use this tool, but the reference to discover_operations implies a prerequisite and differentiates the two tools. No explicit alternatives or exclusions are given, so this is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v0.1.0- First observed
discover_operations - First observed
execute_operation
TDQS
The two tools have clearly distinct roles: discover_operations is for discovery only, while execute_operation is for execution. There is no overlap, and the dependency between them is explicit and unambiguous.
Both tool names follow the consistent verb_noun pattern: 'discover_operations' and 'execute_operation'. The naming is clean, predictable, and uses the same style throughout.
The server has only two tools, which is slightly below the typical 3-15 range, but it is justified by the narrow scope of the server: discovering and executing operations. Each tool is essential and the pair is sufficient for the stated purpose.
For a generic API executor, the two-step lifecycle of discover then execute is fully covered. The discover tool provides enough information (operation name, method, URL, parameters) to call execute_operation without any obvious gaps.
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 Connectors
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
Discover and call AI agents via MCP. Supports A2A agents and platform agents with async tasks.
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
471Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceDynamically generates MCP tools from Swagger/OpenAPI specifications by extracting swagger.json files at runtime. Enables natural language interaction with any REST API that has Swagger documentation.-
- AlicenseNot gradedqualityDmaintenanceExposes OpenAPI specifications as MCP tools, enabling AI assistants to explore and understand API structures, endpoints, schemas, and documentation through semantic queries.19MIT
- AlicenseNot gradedqualityDmaintenanceExposes OpenAPI endpoints as MCP tools, enabling LLMs to discover and interact with REST APIs through the MCP protocol.16MIT
- FlicenseNot gradedqualityCmaintenanceEnables agents to query real-time OpenAPI documentation of backend services, providing tools to list services, endpoints, and schemas via MCP.-
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/ethank64/yellow-pages'
If you have feedback or need assistance with the MCP directory API, please join our Discord server