From 3cbb43f2d6d9605583e71b69f2ca2c84e3371510 Mon Sep 17 00:00:00 2001 From: longhao Date: Tue, 27 May 2025 11:32:15 +0800 Subject: [PATCH] docs: update README with standard MCP server configuration - Add comprehensive configuration examples for Claude Desktop, Cline, Cursor, and Windsurf - Include proper uvx installation and usage instructions - Add environment variables documentation - Include practical usage examples and conversation patterns - Follow standard Python MCP server documentation format - Add pypi-query-mcp-server script entry point for uvx compatibility --- .gitignore | 5 + README.md | 150 ++++++++++++++++-- ...pi_query_mcp_server-0.1.0-py3-none-any.whl | Bin 17400 -> 17896 bytes dist/pypi_query_mcp_server-0.1.0.tar.gz | Bin 12932 -> 13529 bytes pyproject.toml | 1 + 5 files changed, 142 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 599c4b4..94d3633 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,9 @@ target/* /coverage.xml /.zip/ .env +dist/ +.vscode/ +.ruff_cache/ +.mypy_cache/ +.pytest_cache/ diff --git a/README.md b/README.md index b00aea9..b2b08d5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # PyPI Query MCP Server +[![PyPI version](https://img.shields.io/pypi/v/pypi-query-mcp-server.svg)](https://pypi.org/project/pypi-query-mcp-server/) + A Model Context Protocol (MCP) server for querying PyPI package information, dependencies, and compatibility checking. ## Features @@ -11,31 +13,127 @@ A Model Context Protocol (MCP) server for querying PyPI package information, dep - ⚡ Fast async operations with caching - 🛠️ Easy integration with MCP clients -## Quick Start +## Installation -### Installation +### Using uvx (recommended) ```bash -# Install from PyPI (coming soon) -pip install pypi-query-mcp-server +# Run directly with uvx +uvx pypi-query-mcp-server -# Or install from source -git clone https://github.com/loonghao/pypi-query-mcp-server.git -cd pypi-query-mcp-server -poetry install +# Or install and run with specific script +uvx --from pypi-query-mcp-server pypi-query-mcp ``` -### Usage +### Using pip ```bash -# Start the MCP server -pypi-query-mcp +# Install from PyPI +pip install pypi-query-mcp-server -# Or run directly with Python +# Run the server python -m pypi_query_mcp.server ``` -### Available MCP Tools +### From source + +```bash +git clone https://github.com/loonghao/pypi-query-mcp-server.git +cd pypi-query-mcp-server +uv sync +uv run pypi-query-mcp +``` + +## Configuration + +### Claude Desktop + +Add to your Claude Desktop configuration file: + +**MacOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` +**Windows**: `%APPDATA%/Claude/claude_desktop_config.json` + +```json +{ + "mcpServers": { + "pypi-query": { + "command": "uvx", + "args": ["--from", "pypi-query-mcp-server", "pypi-query-mcp"], + "env": { + "PYPI_INDEX_URL": "https://pypi.org/simple/", + "CACHE_TTL": "3600" + } + } + } +} +``` + +### Cline + +Add to your Cline MCP settings (`cline_mcp_settings.json`): + +```json +{ + "mcpServers": { + "pypi-query": { + "command": "uvx", + "args": ["--from", "pypi-query-mcp-server", "pypi-query-mcp"], + "env": { + "PYPI_INDEX_URL": "https://pypi.org/simple/", + "CACHE_TTL": "3600" + } + } + } +} +``` + +### Cursor + +Add to your Cursor MCP configuration (`.cursor/mcp.json`): + +```json +{ + "mcpServers": { + "pypi-query": { + "command": "uvx", + "args": ["--from", "pypi-query-mcp-server", "pypi-query-mcp"], + "env": { + "PYPI_INDEX_URL": "https://pypi.org/simple/", + "CACHE_TTL": "3600" + } + } + } +} +``` + +### Windsurf + +Add to your Windsurf MCP configuration (`~/.codeium/windsurf/mcp_config.json`): + +```json +{ + "mcpServers": { + "pypi-query": { + "command": "uvx", + "args": ["--from", "pypi-query-mcp-server", "pypi-query-mcp"], + "env": { + "PYPI_INDEX_URL": "https://pypi.org/simple/", + "CACHE_TTL": "3600" + } + } + } +} +``` + +### Environment Variables + +- `PYPI_INDEX_URL`: PyPI index URL (default: https://pypi.org/simple/) +- `CACHE_TTL`: Cache time-to-live in seconds (default: 3600) +- `PRIVATE_PYPI_URL`: Private PyPI repository URL (optional) +- `PRIVATE_PYPI_USERNAME`: Private PyPI username (optional) +- `PRIVATE_PYPI_PASSWORD`: Private PyPI password (optional) + +## Available MCP Tools The server provides the following MCP tools: @@ -45,7 +143,31 @@ The server provides the following MCP tools: 4. **check_package_python_compatibility** - Check Python version compatibility 5. **get_package_compatible_python_versions** - Get all compatible Python versions -### Example Usage with MCP Client +## Usage Examples + +Once configured in your MCP client (Claude Desktop, Cline, Cursor, Windsurf), you can ask questions like: + +- "What are the dependencies of Django 4.2?" +- "Is FastAPI compatible with Python 3.9?" +- "Show me all versions of requests package" +- "What Python versions does numpy support?" +- "Get detailed information about the pandas package" + +### Example Conversations + +**User**: "Check if Django 4.2 is compatible with Python 3.9" + +**AI Assistant**: I'll check Django 4.2's compatibility with Python 3.9 for you. + +*[Uses get_package_info and check_package_python_compatibility tools]* + +**User**: "What are the main dependencies of FastAPI?" + +**AI Assistant**: Let me get the dependency information for FastAPI. + +*[Uses get_package_dependencies tool]* + +### Programmatic Usage ```python # Example: Check if Django is compatible with Python 3.9 diff --git a/dist/pypi_query_mcp_server-0.1.0-py3-none-any.whl b/dist/pypi_query_mcp_server-0.1.0-py3-none-any.whl index 2141a30ce29398973b508e62c65dcd483ece68d3..841b1c57b24d95f3a7e78defe7449bd32a2599a8 100644 GIT binary patch delta 2914 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 MLly?_KmY&$0E+2(cK`qY delta 2433 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 z zvb7sW@n*6)Q^%qVCR^&wkq>$qy=59%qs2kFbn;4%58CQhAPV*6_K85xy|3IgIcxmB zk1%=lF9fxcti+%aaI?KD5DXs1$W)ELngkQ5ODdHTBK{OJ$KbxVxL%$hSOjt zi$Kvzv|A!2gnN*J3jaAZ?V^R9^N%s!7xetL7Dyk73|D0mrKde^soK$Jx`JUYd=>5G zA&F6D`Y98EtJ)_f6zB^wg(ULUNlF%!G?9gdNuP_@cZ1uFy!rFqcbYT4>ZnMbd2+0) zP=s$5^WRj#SNgrFGnfIOFWAlE*RcZwH|4uG$EXAZMB=Q8i+83F*<&~z9+4r^lA>@T6L(O7?wp;2_*ECIR+f+Fp7%!> zeinK&Dzjv#5aPkz-X1!Ck6dvm+|#5wtDwb6;Hok*rF>#gec$gbGIlZTpF-G(qas0t zMI_TzS`1DTC6nUQ4HhG$zurpsB+0nL1FoorNzUoe{v%eAnDn9Xp_-0T+#~=INI{`Y z2vn>UAtdsnW3OP-Ai3wE$7aZl8t-bq<>!}aEe@hT+Ocnh0#xS>x1c02d+&nzA|bqj z;nhqU)o3^#dKy1rYRG8$x7VS97j4*ZCOMQVOb!x4UWeu{ZL1jmD*lT;7xRYN81l;{<3f$Ad@z`<4i-lFjHSP}Gj05;yuBrWbIOyI}R zD&6-*<@7M{L#{*fD9HSM@S_r7ZRn?jRTw8uh5S?;1TYG&K4gTlHy)&u&27vz?Ggq) z0nL>vV0s)s4q>?;Oy3KOpMdj@%XeZjua?u0%v12kxh^e^bjojUyl_3&P2~BHFlqSO zrzRI}BpbO0-?v`pfxfVR*yLPbM{8PUtKoe~4{h-Z-3XY?*HCn*|FY1^HkI=P>A5jw zZQ&}JXJ`rv(sZ36NO|nJ7HN6TNK!%rs3J~H;#&P|tEyV5N9k1UjGzBHfUTd>8rF?4_#>&>6F+bv1<6_wlq7|BGVlMrH2v^M6!0;{ zyD1O=_0WN;$-Vq;KC{n4oK)jkhk<{KMAy;}TvP(aT(sNGmv1F?H))#*k{8D78qaMF ze?A>>S~1>KibmA=xzG7n4yzF>bPi@VOpLII6;4&{1l*M%jA*HLt-UwJYU`*qQN%1C z@0kk}c@OPFbc}VQ5IXuA)$)$V{+x9^pd_;*s5aipvbmlq9>vl^-=ls9u=?1bkOKi;tQ1@k28 zfC*PQ#ul{2`I${%f^U*ig6n3}gnxwehX~FK59gS*y=gvJT+L*&Bt)9zG%`9SI|)h% z#?J56mhZm2y|C21Kykp*UvBtLE%F{nkiBpJQ(%cvz{)r@ned0pDeycmo>A?`=wMfS z3W)sB7wM4zJ$B<%W;7kyaY?`ugjKV7iUGMr=Azh%?UpG}+I<)`H;Vw6Zx{uY!2VE% zFLI2Q)T8`k>ymN)y!oM++50H|;FYr%c#F0pn&`%WG`gJ&<29wVV@+!p&;@CBKs(RX zZ9bnIsp&c2_1|b3L9Ckwpd;12gPp_AWI!V@8d(H<(BaQ$Els#)uB2o~S`zyr^WhSI#AnL{v0KJT>Sl<;P9SzQrVcZw<4*QRwm`#g_Ghz&O9knO9ojl3OK zE}`@FYzxN$J+-6Oig42BFj2)?#6vt8d|Y{ke!d@1Ew`nJ#hu4s&8xHN+#I(z%34dM zIA(b)%|GlPHs$XZt!BsARnt_uu4$Sj>&&5OL#-lZ#h!x0g=WNY=p>wOb)*-p*?dY8MsOgnE`E=4c1|#|&m@ ze@wAyGGm@lo@AZ?eA51F0_-gDt0|Dd44}RJ+7y0iMmzJ{Y+Eq*tI3xqW^Uxeg^_6f k-=W7#UH@9gr{=*wy?`30|A)CF|M?Nt