diff --git a/README.md b/README.md index 5c9495d..76bfa55 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Claude Code, Cursor CLI, OpenAI Codex, Gemini CLI, Kiro CLI, OpenCode, and Ollam Terminal, process manager, git, file search, HTTP client, environment variables, network diagnostics, cron jobs, and system info all callable by the LLM. -### 13 MCP Servers +### 15 MCP Servers -Connect GitHub, Brave Search, Puppeteer, PostgreSQL, MongoDB, Redis, Elasticsearch, AWS, GCP, Cloudflare, Vercel, Atlassian, and Supabase as external tools via the Model Context Protocol. +Connect GitHub, Brave Search, Puppeteer, PostgreSQL, MongoDB, Redis, Elasticsearch, AWS, GCP, Cloudflare, Vercel, Atlassian, Supabase, CircleCI, and Postman as external tools via the Model Context Protocol. ### Session Logging @@ -175,11 +175,13 @@ txtcode integrates with the **Model Context Protocol** to connect external tool ### Developer Tools -| Server | Transport | Description | -| :--------------- | :-------- | :-------------------------------------------- | -| **GitHub** | stdio | Repos, issues, PRs, code search, Actions | -| **Brave Search** | stdio | Web, image, video, and news search | -| **Puppeteer** | stdio | Browser automation, screenshots, form filling | +| Server | Transport | Description | +| :--------------- | :-------- | :-------------------------------------------------------- | +| **GitHub** | stdio | Repos, issues, PRs, code search, Actions | +| **Brave Search** | stdio | Web, image, video, and news search | +| **Puppeteer** | stdio | Browser automation, screenshots, form filling | +| **CircleCI** | stdio | Build logs, flaky tests, pipeline status, rerun workflows | +| **Postman** | stdio | Collections, workspaces, API specs, code generation | ### Databases diff --git a/src/data/mcp_servers.json b/src/data/mcp_servers.json index fdc0725..6db1676 100644 --- a/src/data/mcp_servers.json +++ b/src/data/mcp_servers.json @@ -176,6 +176,32 @@ "requiresToken": true, "tokenPrompt": "Enter Supabase Access Token:", "keychainKey": "mcp-supabase" + }, + { + "id": "circleci", + "name": "CircleCI", + "description": "Build logs, flaky tests, pipeline status, config validation, rerun workflows", + "category": "developer", + "transport": "stdio", + "command": "npx", + "args": ["-y", "@circleci/mcp-server-circleci@latest"], + "requiresToken": true, + "tokenPrompt": "Enter CircleCI Personal API Token:", + "tokenEnvKey": "CIRCLECI_TOKEN", + "keychainKey": "mcp-circleci" + }, + { + "id": "postman", + "name": "Postman", + "description": "Collections, workspaces, environments, API specs, monitors, code generation", + "category": "developer", + "transport": "stdio", + "command": "npx", + "args": ["-y", "@postman/postman-mcp-server"], + "requiresToken": true, + "tokenPrompt": "Enter Postman API Key:", + "tokenEnvKey": "POSTMAN_API_KEY", + "keychainKey": "mcp-postman" } ], "categories": { diff --git a/test/unit/mcp-catalog-loader.test.ts b/test/unit/mcp-catalog-loader.test.ts index 3a34d63..5a65f43 100644 --- a/test/unit/mcp-catalog-loader.test.ts +++ b/test/unit/mcp-catalog-loader.test.ts @@ -16,11 +16,11 @@ describe("MCP Catalog Loader", () => { expect(catalog.servers).toBeDefined(); expect(Array.isArray(catalog.servers)).toBe(true); - expect(catalog.servers.length).toBe(13); + expect(catalog.servers.length).toBe(15); expect(catalog.categories).toBeDefined(); }); - it("returns all 13 expected servers", () => { + it("returns all 15 expected servers", () => { const catalog = loadMCPServersCatalog(); const ids = catalog.servers.map((s) => s.id); @@ -37,6 +37,8 @@ describe("MCP Catalog Loader", () => { expect(ids).toContain("vercel"); expect(ids).toContain("atlassian"); expect(ids).toContain("supabase"); + expect(ids).toContain("circleci"); + expect(ids).toContain("postman"); }); it("stdio servers have command field", () => {