# Protocols.io MCP Server A Model Context Protocol (MCP) server that enables MCP clients like Claude Desktop to interact with [protocols.io](https://www.protocols.io), a popular platform for sharing scientific protocols and methods. ## Available Tools The server provides the following tools that can be used by MCP clients: ### Search and Retrieval - `search_public_protocols` - Search for public protocols by keyword - `get_protocol` - Get basic protocol information by ID - `get_protocol_steps` - Get detailed steps for a specific protocol - `get_my_protocols` - Retrieve all protocols from your account ### Protocol Creation and Management - `create_protocol` - Create a new protocol with title and description - `update_protocol_title` - Update the title of an existing protocol - `update_protocol_description` - Update the description of an existing protocol ### Step Management - `set_protocol_steps` - Replace all steps in a protocol - `add_protocol_step` - Add a single step to the end of a protocol - `delete_protocol_step` - Delete a specific step from a protocol ## Requirements - Python 3.10 or higher - protocols.io account with API credentials - MCP client (such as Claude Desktop) ### Obtain Protocols.io API Credentials 1. Visit [protocols.io/developers](https://www.protocols.io/developers) 2. Sign in to your account 3. Navigate to the **API Clients** section 4. Click **ADD CLIENT** to create a new application 5. Configure and copy the credentials based on your use case: - **Client Access Token**: Copy the generated token for simple authentication (suitable for local STDIO transport) - **Client ID** and **Client Secret**: For OAuth 2.0 authentication (suitable for remote HTTP/SSE transport): - Set the redirect URL to `{your_mcp_base_url}/auth/callback` - Copy the Client ID and Client Secret ## Installation ### Quick Start with Docker ```bash docker run -d -p 8000:8000 -e PROTOCOLS_IO_CLIENT_ID="your_client_id" -e PROTOCOLS_IO_CLIENT_SECRET="your_client_secret" -e PROTOCOLS_IO_MCP_BASE_URL="https://example.com" --name protocols-io-mcp --restart always ghcr.io/hqn21/protocols-io-mcp:latest ``` The server will be accessible at `http://0.0.0.0:8000/mcp` with HTTP transport ### Install via pip ```bash pip install protocols-io-mcp ``` #### Set Environment Variables ##### STDIO Transport ```bash export PROTOCOLS_IO_CLIENT_ACCESS_TOKEN="your_client_access_token" ``` ##### HTTP/SSE Transport ```bash export PROTOCOLS_IO_CLIENT_ID="your_client_id" export PROTOCOLS_IO_CLIENT_SECRET="your_client_secret" export PROTOCOLS_IO_MCP_BASE_URL="https://example.com" ``` ## Usage ### Command Line Interface Run the MCP server with various transport options: ```bash # Default: STDIO transport protocols-io-mcp # HTTP transport protocols-io-mcp --transport http --host 127.0.0.1 --port 8000 # SSE transport protocols-io-mcp --transport sse --host 127.0.0.1 --port 8000 ``` #### CLI Options ``` Usage: protocols-io-mcp [OPTIONS] Run the protocols.io MCP server. Options: --transport [stdio|http|sse] Transport protocol to use [default: stdio] --host TEXT Host to bind to when using http and sse transport [default: 127.0.0.1] --port INTEGER Port to bind to when using http and sse transport [default: 8000] --help Show this message and exit. ``` ### Integration with Claude Desktop To use this server with Claude Desktop, add the following configuration to your `claude_desktop_config.json`: ```json { "mcpServers": { "protocols-io": { "command": "protocols-io-mcp", "env": { "PROTOCOLS_IO_CLIENT_ACCESS_TOKEN": "your_client_access_token" } } } } ``` #### Troubleshooting ##### MCP protocols-io: spawn protocols-io-mcp ENOENT This error indicates that Claude Desktop cannot find the `protocols-io-mcp` command. To resolve this: 1. Make sure you have installed the `protocols-io-mcp` package globally using pip. 2. Change the `command` field in your `claude_desktop_config.json` to the full path of the `protocols-io-mcp` executable. You can find the path by running: ```bash which protocols-io-mcp ``` 3. Your final configuration should look like: ```json { "mcpServers": { "protocols-io": { "command": "/full/path/to/protocols-io-mcp", "env": { "PROTOCOLS_IO_CLIENT_ACCESS_TOKEN": "your_client_access_token" } } } } ``` ## Development ### Running Tests Ensure you have set the `PROTOCOLS_IO_CLIENT_ACCESS_TOKEN` environment variable, then run: ```bash pytest ``` ## License This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.