MCP Client for Testing
A minimalistic MCP (Model Context Protocol) client for testing tool calls in MCP servers.
Usage
Install uv and test a tool call in an MCP server like this:
uvx mcp-client-for-testing \
--config '
[
{
"name": "name of mcp server",
"command": "uv",
"args": [
"--directory",
"path/to/root/dir/",
"run",
"server.py"
],
"env": {}
}
]
' \
--client_log_level "WARNING" \
--server_log_level "INFO" \
--tool_call '{"name": "tool-name", "arguments": {}}'
To use it in code, install the package:
uv pip install mcp-client-for-testing
and use it like this:
import asyncio
from mcp_client_for_testing.client import execute_tool
async def main():
config = [
{
"name": "name of mcp server",
"command": "uv",
"args": [
"--directory",
"path/to/root/dir/",
"run",
"server.py"
],
"env": {}
}
]
tool_call = {"name": "tool-name", "arguments": {}}
await execute_tool(config, tool_call)
if __name__ == "__main__":
asyncio.run(main())
Example
Use the echo-mcp-server-for-testing with uvx to test the MCP client.
uvx mcp-client-for-testing \
--config '
[
{
"name": "echo-mcp-server-for-testing",
"command": "uvx",
"args": [
"echo-mcp-server-for-testing"
],
"env": {
"SECRET_KEY": "123456789"
}
}
]
' \
--client_log_level "WARNING" \
--server_log_level "INFO" \
--tool_call '{"name": "echo_tool", "arguments": {"message": "Hello, world!"}}'
Development
Installation from source
- Clone the repo
git clone git@github.com:piebro/mcp-client-for-testing.git. - Go into the root dir
cd mcp-client-for-testing. - Install in development mode:
uv pip install -e .
Formatting and Linting
The code is formatted and linted with ruff:
uv run ruff format
uv run ruff check --fix
Building with uv
Build the package using uv:
uv build
Releasing a New Version
To release a new version of the package to PyPI, create and push a new Git tag:
-
Checkout the main branch and get the current version:
git checkout main git pull origin main git describe --tags
-
Create and push a new Git tag:
git tag v0.2.0 git push origin v0.2.0
The GitHub Actions workflow will automatically build and publish the package to PyPI when a new tag is pushed. The python package version number will be derived directly from the Git tag.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Release files for mcp-client-for-testing 0.1.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mcp_client_for_testing-0.1.8.tar.gz | 20.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_client_for_testing-0.1.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.5 kB
Release files / mcp_client_for_testing-0.1.8.tar.gz
| Download URL | mcp_client_for_testing-0.1.8.tar.gz |
|---|---|
| Size | 20.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a16c3f18086704cfe70a4a33ec31e79a95e2672976313e3f064e1cce11ed872e
|
|
BLAKE2b-256 checksum How to use checksums |
cd717fb8f3ba48c208d5dce540dc4b7c4925521b0ddcac43ef4a32f5209ff10e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 5, 2025.
Transparency logRelease files / mcp_client_for_testing-0.1.8-py3-none-any.whl
| Download URL | mcp_client_for_testing-0.1.8-py3-none-any.whl |
|---|---|
| Size | 6.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8d8ac38c339b06e531412348631fd9530c08595c8c506ea851394ea6a57cfa65
|
|
BLAKE2b-256 checksum How to use checksums |
cc8212accca5c9d03923c11d5fe748181052e6dc07bc83ca504784074b9cbd87
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 5, 2025.
Transparency log