{"id":33236725,"url":"https://github.com/40ants/mcp","last_synced_at":"2026-01-16T20:21:48.554Z","repository":{"id":300463425,"uuid":"1003255496","full_name":"40ants/mcp","owner":"40ants","description":"40ANTS-MCP is a framework for building Model Context Protocol servers in Common Lisp","archived":false,"fork":false,"pushed_at":"2025-06-29T11:59:23.000Z","size":181,"stargazers_count":27,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-29T12:21:17.974Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://40ants.com/mcp/","language":"Common Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/40ants.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-16T21:41:33.000Z","updated_at":"2025-06-29T12:04:17.000Z","dependencies_parsed_at":"2025-06-21T21:38:46.967Z","dependency_job_id":null,"html_url":"https://github.com/40ants/mcp","commit_stats":null,"previous_names":["40ants/mcp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/40ants/mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/40ants%2Fmcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/40ants%2Fmcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/40ants%2Fmcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/40ants%2Fmcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/40ants","download_url":"https://codeload.github.com/40ants/mcp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/40ants%2Fmcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28482267,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-11-16T19:00:28.304Z","updated_at":"2026-01-16T20:21:48.542Z","avatar_url":"https://github.com/40ants.png","language":"Common Lisp","readme":"\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-40README-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n# 40ants-mcp - The framework for building MCP servers and clients in Common Lisp.\n\n\u003ca id=\"40-ants-mcp-asdf-system-details\"\u003e\u003c/a\u003e\n\n## 40ANTS-MCP ASDF System Details\n\n* Description: The framework for building `MCP` servers and clients in Common Lisp.\n* Licence: Unlicense\n* Author: Alexander Artemenko \u003csvetlyak.40wt@gmail.com\u003e\n* Homepage: [https://40ants.com/mcp/][7318]\n* Bug tracker: [https://github.com/40ants/mcp/issues][6ed2]\n* Source control: [GIT][e31f]\n* Depends on: [alexandria][8236], [bordeaux-threads][3dbf], [cl-ppcre][49b9], [clack][482d], [clack-sse][b0a4], [jsonrpc][a9bd], [lack][63d7], [lack-request][6a02], [lack-response][521b], [local-time][46a1], [log4cl][7f8b], [log4cl-extras][691c], [openrpc-client][b8fd], [openrpc-server][c8e7], [sento][626d], [serapeum][c41d], [sse-server][0027], [trivial-gray-streams][588d], [uuid][d6b3], [yason][aba2]\n\n[![](https://github-actions.40ants.com/40ants/mcp/matrix.svg?only=ci.run-tests)][04f0]\n\n![](http://quickdocs.org/badge/40ants-mcp.svg)\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-40ABOUT-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n## About\n\nA comprehensive framework for building [Model Context Protocol (MCP)][473e] servers in Common Lisp. This library provides a complete implementation of the `MCP` specification with an easy-to-use `API` for creating servers that can interact with `AI` assistants like Claude Desktop.\n\n**Active development is ongoing and the interface is likely to change.**\n\n\u003ca id=\"features\"\u003e\u003c/a\u003e\n\n### Features\n\n* ✅ **`STDIO` Transport**: Native support for `STDIO`-based communication\n* ✅ **Streamable`HTTP` Transport**: Allowing to create remotely hosted `MCP` servers\n* ✅ **Tools System**: Register and execute custom tools with `JSON` Schema validation\n* ✅ **Built on Open`RPC`**: Leverages the robust [40ants OpenRPC library][348e]\n* ✅ **`CLOS`-based**: Object-oriented design with proper encapsulation\n* ✅ **Easy Integration**: Simple `API` for adding functionality\n* ✅ **Error Handling**: Comprehensive error management with proper `JSON-RPC` error codes\n* ✅ **Interactive Editing**: `MCP` tools can be edited and updated on the fly, using `REPL` driven approach\n\n\u003ca id=\"roadmap\"\u003e\u003c/a\u003e\n\n### Roadmap\n\n* 🔄 **Full `MCP` Specification Support**: Complete implementation of `MCP` protocol version 2025-06-18\n* 🔄 **Resources System**: Serve dynamic and static resources via `URI`\n* 🔄 **Prompts System**: Provide prompt templates with argument interpolation\n* 🔄 **`MCP` Client Protocol**: Implement client-side protocol for connecting to `MCP` servers\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-40INSTALLATION-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n## Installation\n\nYou can install this library from Quicklisp, but you want to receive updates quickly, then install it from Ultralisp.org:\n\n```\n(ql-dist:install-dist \"http://dist.ultralisp.org/\"\n                      :prompt nil)\n(ql:quickload :40ants-mcp)\n```\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-40USAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n## Usage\n\nHere's a quick example of how to create an `MCP` server with custom tools:\n\n```lisp\n(defpackage #:my-mcp-server\n  (:use #:cl)\n  (:import-from #:40ants-mcp/content/text\n                #:text-content)\n  (:import-from #:openrpc-server))\n\n(in-package #:my-mcp-server)\n\n;; Define your API\n(openrpc-server:define-api (my-tools :title \"My Custom Tools\"))\n\n;; Define a tool that adds two numbers\n(40ants-mcp/tools:define-tool (my-tools add) (a b)\n  (:summary \"Adds two numbers and returns the result.\")\n  (:param a integer \"First number to add.\")\n  (:param b integer \"Second number to add.\")\n  (:result (soft-list-of text-content))\n  (list (make-instance 'text-content\n                      :text (format nil \"The sum of ~A and ~A is: ~A\"\n                                  a b (+ a b)))))\n\n;; Start the server\n(40ants-mcp/server/definition:start-server my-tools)\n```\n\u003ca id=\"running-as-a-script\"\u003e\u003c/a\u003e\n\n### Running as a Script\n\nFor production use, you can create a Roswell script. Create a file `my-mcp.ros`:\n\n```lisp\n#!/bin/sh\n#|-*- mode:lisp -*-|#\n#|\nexec ros -Q -- $0 \\\"$@\\\"\n|#\n\n(ql:quickload '(:40ants-mcp :alexandria) :silent t)\n\n;; Your package and tool definitions here...\n\n(defun main (\u0026rest argv)\n  (declare (ignore argv))\n  (40ants-mcp/server/definition:start-server my-tools))\n```\nBuild and run the script:\n\n```bash\n# Build the script\nros build my-mcp.ros\n\n# Run the server\n./my-mcp\n\n# With remote debugging support\nSLYNK_PORT=4005 ./my-mcp\n```\nEach tool you define should return a list of content items. The most common content type is `text-content`, but you can also return other types defined in the `MCP` specification.\n\nFor more examples, check the `examples/` directory in the source code.\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-40API-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n## API\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-4040ANTS-MCP-2FCONTENT-2FBASE-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n### 40ANTS-MCP/CONTENT/BASE\n\n\u003ca id=\"x-28-23A-28-2823-29-20BASE-CHAR-20-2E-20-2240ANTS-MCP-2FCONTENT-2FBASE-22-29-20PACKAGE-29\"\u003e\u003c/a\u003e\n\n#### [package](8770) `40ants-mcp/content/base`\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-7C-4040ANTS-MCP-2FCONTENT-2FBASE-3FClasses-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n#### Classes\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-4040ANTS-MCP-2FCONTENT-2FBASE-24CONTENT-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n##### CONTENT\n\n\u003ca id=\"x-2840ANTS-MCP-2FCONTENT-2FBASE-3ACONTENT-20CLASS-29\"\u003e\u003c/a\u003e\n\n###### [class](16e7) `40ants-mcp/content/base:content` ()\n\n**Readers**\n\n\u003ca id=\"x-2840ANTS-MCP-2FCONTENT-2FBASE-3ACONTENT-TYPE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-MCP-2FCONTENT-2FBASE-3ACONTENT-29-29\"\u003e\u003c/a\u003e\n\n###### [reader](36c1) `40ants-mcp/content/base:content-type` (content) (:TYPE = \"unknown\")\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-4040ANTS-MCP-2FCONTENT-2FTEXT-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n### 40ANTS-MCP/CONTENT/TEXT\n\n\u003ca id=\"x-28-23A-28-2823-29-20BASE-CHAR-20-2E-20-2240ANTS-MCP-2FCONTENT-2FTEXT-22-29-20PACKAGE-29\"\u003e\u003c/a\u003e\n\n#### [package](7315) `40ants-mcp/content/text`\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-7C-4040ANTS-MCP-2FCONTENT-2FTEXT-3FClasses-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n#### Classes\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-4040ANTS-MCP-2FCONTENT-2FTEXT-24TEXT-CONTENT-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n##### TEXT-CONTENT\n\n\u003ca id=\"x-2840ANTS-MCP-2FCONTENT-2FTEXT-3ATEXT-CONTENT-20CLASS-29\"\u003e\u003c/a\u003e\n\n###### [class](dba4) `40ants-mcp/content/text:text-content` (content)\n\n**Readers**\n\n\u003ca id=\"x-2840ANTS-MCP-2FCONTENT-2FTEXT-3ACONTENT-TEXT-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-MCP-2FCONTENT-2FTEXT-3ATEXT-CONTENT-29-29\"\u003e\u003c/a\u003e\n\n###### [reader](1fe7) `40ants-mcp/content/text:content-text` (text-content) (:text)\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-4040ANTS-MCP-2FHTTP-TRANSPORT-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n### 40ANTS-MCP/HTTP-TRANSPORT\n\n\u003ca id=\"x-28-23A-28-2825-29-20BASE-CHAR-20-2E-20-2240ANTS-MCP-2FHTTP-TRANSPORT-22-29-20PACKAGE-29\"\u003e\u003c/a\u003e\n\n#### [package](8b0d) `40ants-mcp/http-transport`\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-7C-4040ANTS-MCP-2FHTTP-TRANSPORT-3FClasses-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n#### Classes\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-4040ANTS-MCP-2FHTTP-TRANSPORT-24HTTP-TRANSPORT-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n##### HTTP-TRANSPORT\n\n\u003ca id=\"x-2840ANTS-MCP-2FHTTP-TRANSPORT-3AHTTP-TRANSPORT-20CLASS-29\"\u003e\u003c/a\u003e\n\n###### [class](ba98) `40ants-mcp/http-transport:http-transport` ()\n\n`HTTP` transport implementation for `MCP` (Model Context Protocol) communication.\nThis class handles `JSON-RPC` message exchange via `HTTP` `POST` requests.\n\n**Readers**\n\n\u003ca id=\"x-2840ANTS-MCP-2FHTTP-TRANSPORT-3ATRANSPORT-LACK-APP-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-MCP-2FHTTP-TRANSPORT-3AHTTP-TRANSPORT-29-29\"\u003e\u003c/a\u003e\n\n###### [reader](a3ce) `40ants-mcp/http-transport:transport-lack-app` (http-transport) ()\n\nLack application instance\n\n\u003ca id=\"x-2840ANTS-MCP-2FHTTP-TRANSPORT-3ATRANSPORT-MESSAGE-HANDLER-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-MCP-2FHTTP-TRANSPORT-3AHTTP-TRANSPORT-29-29\"\u003e\u003c/a\u003e\n\n###### [reader](3bd6) `40ants-mcp/http-transport:transport-message-handler` (http-transport) ()\n\nFunction to handle incoming messages\n\n\u003ca id=\"x-2840ANTS-MCP-2FHTTP-TRANSPORT-3ATRANSPORT-PORT-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-MCP-2FHTTP-TRANSPORT-3AHTTP-TRANSPORT-29-29\"\u003e\u003c/a\u003e\n\n###### [reader](64fe) `40ants-mcp/http-transport:transport-port` (http-transport) (:port = 8080)\n\nPort number to listen on.\n\n\u003ca id=\"x-2840ANTS-MCP-2FHTTP-TRANSPORT-3ATRANSPORT-RUNNING-P-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-MCP-2FHTTP-TRANSPORT-3AHTTP-TRANSPORT-29-29\"\u003e\u003c/a\u003e\n\n###### [reader](03e8) `40ants-mcp/http-transport:transport-running-p` (http-transport) (= t)\n\nFlag indicating if transport is active\n\n\u003ca id=\"x-2840ANTS-MCP-2FHTTP-TRANSPORT-3ATRANSPORT-SERVER-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-MCP-2FHTTP-TRANSPORT-3AHTTP-TRANSPORT-29-29\"\u003e\u003c/a\u003e\n\n###### [reader](04cb) `40ants-mcp/http-transport:transport-server` (http-transport) ()\n\nClack server instance\n\n**Accessors**\n\n\u003ca id=\"x-2840ANTS-MCP-2FHTTP-TRANSPORT-3ATRANSPORT-LACK-APP-20-2840ANTS-DOC-2FLOCATIVES-3AACCESSOR-2040ANTS-MCP-2FHTTP-TRANSPORT-3AHTTP-TRANSPORT-29-29\"\u003e\u003c/a\u003e\n\n###### [accessor](a3ce) `40ants-mcp/http-transport:transport-lack-app` (http-transport) ()\n\nLack application instance\n\n\u003ca id=\"x-2840ANTS-MCP-2FHTTP-TRANSPORT-3ATRANSPORT-MESSAGE-HANDLER-20-2840ANTS-DOC-2FLOCATIVES-3AACCESSOR-2040ANTS-MCP-2FHTTP-TRANSPORT-3AHTTP-TRANSPORT-29-29\"\u003e\u003c/a\u003e\n\n###### [accessor](3bd6) `40ants-mcp/http-transport:transport-message-handler` (http-transport) ()\n\nFunction to handle incoming messages\n\n\u003ca id=\"x-2840ANTS-MCP-2FHTTP-TRANSPORT-3ATRANSPORT-RUNNING-P-20-2840ANTS-DOC-2FLOCATIVES-3AACCESSOR-2040ANTS-MCP-2FHTTP-TRANSPORT-3AHTTP-TRANSPORT-29-29\"\u003e\u003c/a\u003e\n\n###### [accessor](03e8) `40ants-mcp/http-transport:transport-running-p` (http-transport) (= t)\n\nFlag indicating if transport is active\n\n\u003ca id=\"x-2840ANTS-MCP-2FHTTP-TRANSPORT-3ATRANSPORT-SERVER-20-2840ANTS-DOC-2FLOCATIVES-3AACCESSOR-2040ANTS-MCP-2FHTTP-TRANSPORT-3AHTTP-TRANSPORT-29-29\"\u003e\u003c/a\u003e\n\n###### [accessor](04cb) `40ants-mcp/http-transport:transport-server` (http-transport) ()\n\nClack server instance\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-4040ANTS-MCP-2FSERVER-2FDEFINITION-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n### 40ANTS-MCP/SERVER/DEFINITION\n\n\u003ca id=\"x-28-23A-28-2828-29-20BASE-CHAR-20-2E-20-2240ANTS-MCP-2FSERVER-2FDEFINITION-22-29-20PACKAGE-29\"\u003e\u003c/a\u003e\n\n#### [package](b734) `40ants-mcp/server/definition`\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-7C-4040ANTS-MCP-2FSERVER-2FDEFINITION-3FClasses-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n#### Classes\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-4040ANTS-MCP-2FSERVER-2FDEFINITION-24MCP-SERVER-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n##### MCP-SERVER\n\n\u003ca id=\"x-2840ANTS-MCP-2FSERVER-2FDEFINITION-3AMCP-SERVER-20CLASS-29\"\u003e\u003c/a\u003e\n\n###### [class](73aa) `40ants-mcp/server/definition:mcp-server` (api)\n\n**Readers**\n\n\u003ca id=\"x-2840ANTS-MCP-2FSERVER-2FDEFINITION-3ASERVER-TOOLS-COLLECTIONS-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-MCP-2FSERVER-2FDEFINITION-3AMCP-SERVER-29-29\"\u003e\u003c/a\u003e\n\n###### [reader](1c7b) `40ants-mcp/server/definition:server-tools-collections` (mcp-server) (collections = nil)\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-7C-4040ANTS-MCP-2FSERVER-2FDEFINITION-3FFunctions-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n#### Functions\n\n\u003ca id=\"x-2840ANTS-MCP-2FSERVER-2FDEFINITION-3ASTART-SERVER-20FUNCTION-29\"\u003e\u003c/a\u003e\n\n##### [function](3fe9) `40ants-mcp/server/definition:start-server` tools-collections \u0026key (transport :stdio) (port 8080)\n\nStart the `MCP` server with specified transport.\n`TRANSPORT` can be :stdio or :http.\n`PORT` is only used when transport is :http.\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-4040ANTS-MCP-2FSERVER-2FERRORS-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n### 40ANTS-MCP/SERVER/ERRORS\n\n\u003ca id=\"x-28-23A-28-2824-29-20BASE-CHAR-20-2E-20-2240ANTS-MCP-2FSERVER-2FERRORS-22-29-20PACKAGE-29\"\u003e\u003c/a\u003e\n\n#### [package](8107) `40ants-mcp/server/errors`\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-7C-4040ANTS-MCP-2FSERVER-2FERRORS-3FClasses-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n#### Classes\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-4040ANTS-MCP-2FSERVER-2FERRORS-24TOOL-ERROR-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n##### TOOL-ERROR\n\n\u003ca id=\"x-2840ANTS-MCP-2FSERVER-2FERRORS-3ATOOL-ERROR-20CONDITION-29\"\u003e\u003c/a\u003e\n\n###### [condition](0fe0) `40ants-mcp/server/errors:tool-error` ()\n\nYou should signal this error in case if the tool can't accomplish it's job.\n\n**Readers**\n\n\u003ca id=\"x-2840ANTS-MCP-2FSERVER-2FERRORS-3ATOOL-ERROR-CONTENT-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-MCP-2FSERVER-2FERRORS-3ATOOL-ERROR-29-29\"\u003e\u003c/a\u003e\n\n###### [reader](0fe0) `40ants-mcp/server/errors:tool-error-content` (tool-error) (:content)\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-4040ANTS-MCP-2FSTDIO-TRANSPORT-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n### 40ANTS-MCP/STDIO-TRANSPORT\n\n\u003ca id=\"x-28-23A-28-2826-29-20BASE-CHAR-20-2E-20-2240ANTS-MCP-2FSTDIO-TRANSPORT-22-29-20PACKAGE-29\"\u003e\u003c/a\u003e\n\n#### [package](d51f) `40ants-mcp/stdio-transport`\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-7C-4040ANTS-MCP-2FSTDIO-TRANSPORT-3FClasses-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n#### Classes\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-4040ANTS-MCP-2FSTDIO-TRANSPORT-24STDIO-TRANSPORT-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n##### STDIO-TRANSPORT\n\n\u003ca id=\"x-2840ANTS-MCP-2FSTDIO-TRANSPORT-3ASTDIO-TRANSPORT-20CLASS-29\"\u003e\u003c/a\u003e\n\n###### [class](73ef) `40ants-mcp/stdio-transport:stdio-transport` ()\n\n`STDIO` transport implementation for `MCP` (Model Context Protocol) communication.\nThis class handles `JSON-RPC` message exchange via standard input/output streams.\nIt is designed to work with the `MCP` protocol specification for `AI` model communication.\n\n**Readers**\n\n\u003ca id=\"x-2840ANTS-MCP-2FSTDIO-TRANSPORT-3ATRANSPORT-INPUT-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-MCP-2FSTDIO-TRANSPORT-3ASTDIO-TRANSPORT-29-29\"\u003e\u003c/a\u003e\n\n###### [reader](0025) `40ants-mcp/stdio-transport:transport-input` (stdio-transport) (:input-stream = \\*standard-input\\*)\n\nInput stream for reading `JSON-RPC` messages. Defaults to *standard-input*.\n\n\u003ca id=\"x-2840ANTS-MCP-2FSTDIO-TRANSPORT-3ATRANSPORT-OUTPUT-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-MCP-2FSTDIO-TRANSPORT-3ASTDIO-TRANSPORT-29-29\"\u003e\u003c/a\u003e\n\n###### [reader](1665) `40ants-mcp/stdio-transport:transport-output` (stdio-transport) (:output-stream = \\*standard-output\\*)\n\nOutput stream for writing `JSON-RPC` responses. Defaults to *standard-output*.\n\n\u003ca id=\"x-2840ANTS-MCP-2FSTDIO-TRANSPORT-3ATRANSPORT-RUNNING-P-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-MCP-2FSTDIO-TRANSPORT-3ASTDIO-TRANSPORT-29-29\"\u003e\u003c/a\u003e\n\n###### [reader](cfbe) `40ants-mcp/stdio-transport:transport-running-p` (stdio-transport) (= t)\n\nFlag indicating if transport is active and processing messages.\n\n**Accessors**\n\n\u003ca id=\"x-2840ANTS-MCP-2FSTDIO-TRANSPORT-3ATRANSPORT-INPUT-20-2840ANTS-DOC-2FLOCATIVES-3AACCESSOR-2040ANTS-MCP-2FSTDIO-TRANSPORT-3ASTDIO-TRANSPORT-29-29\"\u003e\u003c/a\u003e\n\n###### [accessor](0025) `40ants-mcp/stdio-transport:transport-input` (stdio-transport) (:input-stream = \\*standard-input\\*)\n\nInput stream for reading `JSON-RPC` messages. Defaults to *standard-input*.\n\n\u003ca id=\"x-2840ANTS-MCP-2FSTDIO-TRANSPORT-3ATRANSPORT-OUTPUT-20-2840ANTS-DOC-2FLOCATIVES-3AACCESSOR-2040ANTS-MCP-2FSTDIO-TRANSPORT-3ASTDIO-TRANSPORT-29-29\"\u003e\u003c/a\u003e\n\n###### [accessor](1665) `40ants-mcp/stdio-transport:transport-output` (stdio-transport) (:output-stream = \\*standard-output\\*)\n\nOutput stream for writing `JSON-RPC` responses. Defaults to *standard-output*.\n\n\u003ca id=\"x-2840ANTS-MCP-2FSTDIO-TRANSPORT-3ATRANSPORT-RUNNING-P-20-2840ANTS-DOC-2FLOCATIVES-3AACCESSOR-2040ANTS-MCP-2FSTDIO-TRANSPORT-3ASTDIO-TRANSPORT-29-29\"\u003e\u003c/a\u003e\n\n###### [accessor](cfbe) `40ants-mcp/stdio-transport:transport-running-p` (stdio-transport) (= t)\n\nFlag indicating if transport is active and processing messages.\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-7C-4040ANTS-MCP-2FSTDIO-TRANSPORT-3FGenerics-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n#### Generics\n\n\u003ca id=\"x-2840ANTS-MCP-2FTRANSPORT-2FBASE-3ARECEIVE-MESSAGE-20GENERIC-FUNCTION-29\"\u003e\u003c/a\u003e\n\n##### [generic-function](0a8f) `40ants-mcp/transport/base:receive-message` transport\n\nReceive a `JSON-RPC` message, returns a message or `NIL`.\n\n\u003ca id=\"x-2840ANTS-MCP-2FTRANSPORT-2FBASE-3ASEND-MESSAGE-20GENERIC-FUNCTION-29\"\u003e\u003c/a\u003e\n\n##### [generic-function](99bb) `40ants-mcp/transport/base:send-message` transport message\n\nSend a `JSON-RPC` message, returns no values.\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-4040ANTS-MCP-2FTOOLS-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n### 40ANTS-MCP/TOOLS\n\n\u003ca id=\"x-28-23A-28-2816-29-20BASE-CHAR-20-2E-20-2240ANTS-MCP-2FTOOLS-22-29-20PACKAGE-29\"\u003e\u003c/a\u003e\n\n#### [package](13e2) `40ants-mcp/tools`\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-7C-4040ANTS-MCP-2FTOOLS-3FMacros-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n#### Macros\n\n\u003ca id=\"x-2840ANTS-MCP-2FTOOLS-3ADEFINE-TOOL-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29\"\u003e\u003c/a\u003e\n\n##### [macro](a989) `40ants-mcp/tools:define-tool` name args \u0026body body\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-4040ANTS-MCP-2FTRANSPORT-2FBASE-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n### 40ANTS-MCP/TRANSPORT/BASE\n\n\u003ca id=\"x-28-23A-28-2825-29-20BASE-CHAR-20-2E-20-2240ANTS-MCP-2FTRANSPORT-2FBASE-22-29-20PACKAGE-29\"\u003e\u003c/a\u003e\n\n#### [package](f6f6) `40ants-mcp/transport/base`\n\n\u003ca id=\"x-2840ANTS-MCP-DOCS-2FINDEX-3A-3A-7C-4040ANTS-MCP-2FTRANSPORT-2FBASE-3FGenerics-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29\"\u003e\u003c/a\u003e\n\n#### Generics\n\n\u003ca id=\"x-2840ANTS-MCP-2FTRANSPORT-2FBASE-3ARECEIVE-MESSAGE-20GENERIC-FUNCTION-29\"\u003e\u003c/a\u003e\n\n##### [generic-function](0a8f) `40ants-mcp/transport/base:receive-message` transport\n\nReceive a `JSON-RPC` message, returns a message or `NIL`.\n\n\u003ca id=\"x-2840ANTS-MCP-2FTRANSPORT-2FBASE-3ASEND-MESSAGE-20GENERIC-FUNCTION-29\"\u003e\u003c/a\u003e\n\n##### [generic-function](99bb) `40ants-mcp/transport/base:send-message` transport message\n\nSend a `JSON-RPC` message, returns no values.\n\n\u003ca id=\"x-2840ANTS-MCP-2FTRANSPORT-2FBASE-3ASTART-LOOP-20GENERIC-FUNCTION-29\"\u003e\u003c/a\u003e\n\n##### [generic-function](6c2d) `40ants-mcp/transport/base:start-loop` transport message-handler\n\nStarts message processing using given transport.\n\n\u003ca id=\"x-2840ANTS-MCP-2FTRANSPORT-2FBASE-3ASTOP-LOOP-20GENERIC-FUNCTION-29\"\u003e\u003c/a\u003e\n\n##### [generic-function](08ee) `40ants-mcp/transport/base:stop-loop` transport\n\nStops message processing using given transport.\n\n\n[7318]: https://40ants.com/mcp/\n[348e]: https://40ants.com/openrpc/\n[e31f]: https://github.com/40ants/mcp\n[04f0]: https://github.com/40ants/mcp/actions\n[8770]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/content/base.lisp#L1\n[16e7]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/content/base.lisp#L8\n[36c1]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/content/base.lisp#L9\n[7315]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/content/text.lisp#L1\n[dba4]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/content/text.lisp#L11\n[1fe7]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/content/text.lisp#L12\n[8b0d]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/http-transport.lisp#L1\n[ba98]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/http-transport.lisp#L33\n[64fe]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/http-transport.lisp#L34\n[a3ce]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/http-transport.lisp#L38\n[04cb]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/http-transport.lisp#L40\n[3bd6]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/http-transport.lisp#L42\n[03e8]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/http-transport.lisp#L44\n[b734]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/server/definition.lisp#L1\n[3fe9]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/server/definition.lisp#L104\n[73aa]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/server/definition.lisp#L38\n[1c7b]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/server/definition.lisp#L39\n[8107]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/server/errors.lisp#L1\n[0fe0]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/server/errors.lisp#L10\n[d51f]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/stdio-transport.lisp#L1\n[73ef]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/stdio-transport.lisp#L19\n[0025]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/stdio-transport.lisp#L20\n[1665]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/stdio-transport.lisp#L24\n[cfbe]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/stdio-transport.lisp#L28\n[13e2]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/tools.lisp#L1\n[a989]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/tools.lisp#L10\n[f6f6]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/transport/base.lisp#L1\n[6c2d]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/transport/base.lisp#L10\n[08ee]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/transport/base.lisp#L14\n[0a8f]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/transport/base.lisp#L18\n[99bb]: https://github.com/40ants/mcp/blob/b93902fc438c14f4cf2624ed18fa8a560f8f4bd4/src/transport/base.lisp#L22\n[6ed2]: https://github.com/40ants/mcp/issues\n[473e]: https://modelcontextprotocol.io/\n[8236]: https://quickdocs.org/alexandria\n[3dbf]: https://quickdocs.org/bordeaux-threads\n[49b9]: https://quickdocs.org/cl-ppcre\n[482d]: https://quickdocs.org/clack\n[b0a4]: https://quickdocs.org/clack-sse\n[a9bd]: https://quickdocs.org/jsonrpc\n[63d7]: https://quickdocs.org/lack\n[6a02]: https://quickdocs.org/lack-request\n[521b]: https://quickdocs.org/lack-response\n[46a1]: https://quickdocs.org/local-time\n[7f8b]: https://quickdocs.org/log4cl\n[691c]: https://quickdocs.org/log4cl-extras\n[b8fd]: https://quickdocs.org/openrpc-client\n[c8e7]: https://quickdocs.org/openrpc-server\n[626d]: https://quickdocs.org/sento\n[c41d]: https://quickdocs.org/serapeum\n[0027]: https://quickdocs.org/sse-server\n[588d]: https://quickdocs.org/trivial-gray-streams\n[d6b3]: https://quickdocs.org/uuid\n[aba2]: https://quickdocs.org/yason\n\n* * *\n###### [generated by [40ANTS-DOC](https://40ants.com/doc/)]\n","funding_links":[],"categories":["📚 Projects (1974 total)","MCP servers"],"sub_categories":["MCP Servers"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F40ants%2Fmcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F40ants%2Fmcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F40ants%2Fmcp/lists"}