Agent Stack Directory
# Agent Stack Directory: MCP server and open dataset
An open dataset of infrastructure tools for AI agents (cloud browsers, sandboxes, memory, search APIs, email,
integrations, payments, voice, observability, frameworks and auth) plus a small MCP server so AI coding tools can
query it while you build.
- Remote endpoint: `https://agentstackdirectory.com/mcp` (Streamable HTTP, stateless, read-only, no key)
- Live data: https://agentstackdirectory.com/data.json
- Snapshot in this repo: [`data/`](data/) (JSON and CSV)
- Website: https://agentstackdirectory.com/mcp/
## Tools
| Tool | Input | Returns |
| --- | --- | --- |
| `search_tools` | `query?`, `category?`, `open_source?`, `limit?` (1 to 50, default 10) | Matching tools ranked by keyword match |
| `get_tool` | `tool` (slug or name) | Summary, official site, open-source flag, last link check, alternatives in the same category |
| `compare` | `tools` (2 to 4 slugs or names) | Side-by-side table, notable differences, head-to-head page URL when one exists |
| `list_categories` | none | Every category with key, description and tool counts |
Every tool is read-only. Results come back as readable text plus `structuredContent` JSON.
Example prompts:
- "Which sandboxes for running agent code are open source?"
- "Compare E2B and Daytona."
- "What are the alternatives to Browserbase?"
Listed in the [official MCP Registry](https://registry.modelcontextprotocol.io/v0.1/servers?search=com.agentstackdirectory) as `com.agentstackdirectory/agent-stack-directory`. Server card: https://agentstackdirectory.com/.well-known/mcp/server-card.json
## Install (remote, nothing to run locally)
### Claude Code
```sh
claude mcp add --transport http agent-stack-directory https://agentstackdirectory.com/mcp
```
### Cursor
`.cursor/mcp.json` in your project, or `~/.cursor/mcp.json` for all projects:
```json
{
"mcpServers": {
"agent-stack-directory": {
"url": "https://agentstackdirectory.com/mcp"
}
}
}
```
### VS Code
`.vscode/mcp.json` in your workspace:
```json
{
"servers": {
"agent-stack-directory": {
"type": "http",
"url": "https://agentstackdirectory.com/mcp"
}
}
}
```
Or from a terminal:
```sh
code --add-mcp '{"name":"agent-stack-directory","type":"http","url":"https://agentstackdirectory.com/mcp"}'
```
## Install (local, stdio)
Needs Node 18 or newer. `npx` builds the server from this repository on first run.
### Claude Code
```sh
claude mcp add agent-stack-directory -- npx -y github:gmansystems/agent-stack-directory
```
### Cursor
```json
{
"mcpServers": {
"agent-stack-directory": {
"command": "npx",
"args": ["-y", "github:gmansystems/agent-stack-directory"]
}
}
}
```
### VS Code
```json
{
"servers": {
"agent-stack-directory": {
"type": "stdio",
"command": "npx",
"args": ["-y", "github:gmansystems/agent-stack-directory"]
}
}
}
```
### From a clone
```sh
git clone https://github.com/gmansystems/agent-stack-directory
cd agent-stack-directory
npm install
node dist/stdio.js
```
Environment variables (optional):
| Variable | Default | Purpose |
| --- | --- | --- |
| `AGENT_STACK_DATA_URL` | `https://agentstackdirectory.com/data.json` | Where to fetch the dataset |
| `AGENT_STACK_DATA_FILE` | unset | Read a local JSON file instead, for offline use, e.g. `data/agent-stack-directory.json` |
The stdio server caches the dataset in memory for 10 minutes and keeps serving the last good copy if a refresh fails.
## Dataset
`data/agent-stack-directory.json` holds `categories` and `listings`. Each listing has:
| Field | Meaning |
| --- | --- |
| `slug` | Stable identifier, used in directory URLs |
| `name` | Product name |
| `url` | Official site |
| `category` | Category key (see `categories`) |
| `summary` | One plain sentence on what it does, written from the vendor's own site |
| `tagline` | The vendor's own tagline |
| `open_source` | `true` when the product is marked open source |
| `added` | Date added to the directory |
| `verified` | Date the official link was last checked |
CSV copies: `data/agent-stack-directory.csv` and `data/categories.csv`. Refresh the snapshot with `npm run snapshot`.
Sponsorship never changes the data or the search ranking. The dataset has no sponsored fields.
## Development
```sh
npm install
npm test # unit tests plus MCP client tests over stdio and Streamable HTTP
npm run test:remote # live check of https://agentstackdirectory.com/mcp with the MCP client
npm run build:worker # bundle src/worker.ts for the Cloudflare Pages Function
```
Layout:
- `src/core.ts`: data loading and the tool logic, no I/O
- `src/server.ts`: MCP server definition (official TypeScript SDK)
- `src/stdio.ts`: stdio entry point (`agent-stack-directory-mcp` bin)
- `src/worker.ts`: stateless Streamable HTTP handler for Cloudflare Workers or Pages Functions
To host your own remote copy on Cloudflare, bundle `src/worker.ts` and call `handleMcpRequest(request, loader)` from a Worker.
## License
- Code: MIT, see [`LICENSE`](LICENSE).
- Data: CC BY 4.0, see [`DATA-LICENSE.md`](DATA-LICENSE.md). Please credit Agent Stack Directory with a link to https://agentstackdirectory.com.
Corrections and new tools: https://agentstackdirectory.com/submit/ or open an issue.
TDQS
Scored across 4 tools
The four tools occupy clearly distinct roles: search_tools for discovery, get_tool for single-item detail, compare for side-by-side evaluation, and list_categories for taxonomy browsing. There is no functional overlap, so an agent can select unambiguously.
Three tools follow a clean verb_noun pattern (search_tools, get_tool, list_categories) in consistent snake_case. The lone 'compare' is a bare verb that breaks the pattern slightly, but it remains readable and idiomatic.
Four tools is well-scoped for a read-only directory server, with each tool earning its place. It is on the lean side but not thin enough to feel incomplete for the domain.
The surface covers the core directory workflows: browse categories, search/filter tools, fetch full listings, and compare tools. Minor gaps like global cross-category listing or browsing alternatives without a specific category exist, but agents can work around them.