From f7501f71a488144caee1d530f59fa07e3fecf33c Mon Sep 17 00:00:00 2001 From: DanStough Date: Wed, 16 Apr 2025 21:55:38 -0400 Subject: [PATCH 1/2] docs: polish readme --- README.md | 101 ++++++++++++++++++++-------- assets/polygon_banner_darkmode.png | Bin 0 -> 15066 bytes assets/polygon_banner_lightmode.png | Bin 0 -> 16056 bytes 3 files changed, 74 insertions(+), 27 deletions(-) create mode 100644 assets/polygon_banner_darkmode.png create mode 100644 assets/polygon_banner_lightmode.png diff --git a/README.md b/README.md index 718f562..32316b5 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,17 @@ + +
+ + + + Polygon.io logo + +
+
+
+ +> [!IMPORTANT] +> :test_tube: This project is experimental and could be subject to breaking changes. + # Polygon.io MCP Server A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that provides access to [Polygon.io](https://polygon.io) financial market data API through an LLM-friendly interface. @@ -19,26 +33,57 @@ This server exposes all Polygon.io API endpoints as MCP tools, providing access ### Prerequisites - Python 3.8+ -- A Polygon.io API key ([Get one here](https://polygon.io)) +- A Polygon.io API key +
+[![Button]][Link] +- [Astral UV](https://docs.astral.sh/uv/getting-started/installation/) + - For existing installs, check that you have a version that supports the `uvx` command. -### Direct Installation +### Claude Code -```bash -# Install dependencies -uv sync - -# Run the server -POLYGON_API_KEY=your_api_key_here uv run mcp_polygon -``` - -### Integration with Claude - -For Claude users, you can add the Polygon MCP server: +Use the following command to add the Polygon MCP server to your local environment. ```bash # Claude CLI claude mcp add polygon -e POLYGON_API_KEY=your_api_key_here -- uv run /path/to/mcp_polygon/entrypoint.py ``` +This command will install the MCP server in your current project. +If you want to install it globally, you can run the command with `-s ` flag. +See `claude mcp add --help` for more options. + +You can also run `claude mcp add-from-claude-desktop` if the MCP server is installed already for Claude Desktop. + +### Claude Desktop + +1. Follow the [Claude Desktop MCP installation instructions](https://modelcontextprotocol.io/quickstart/user) to complete the initial installation and find your configuration file. +1. Use the following example as reference to add Polygon's MCP server. +Make sure you complete the various fields. + 1. Path find your path to `uvx`, run `which uvx` in your terminal. + 2. Replace `` with your actual Polygon.io API key. + 3. Replace `` with your home directory path, e.g., `/home/username` (Mac/Linux) or `C:\Users\username` (Windows). + +
+ claude_desktop_config.json + +```json +{ + "mcpServers": { + "polygon": { + "command": "/uvx", + "args": [ + "--from", + "git+https://github.com/polygon-io/mcp_polygon@master", + "mcp_polygon" + ], + "env": { + "POLYGON_API_KEY": "", + "HOME": "" + } + } + } +} +``` +
## Usage Examples @@ -66,22 +111,18 @@ This MCP server implements all Polygon.io API endpoints as tools, including: Each tool follows the Polygon.io SDK parameter structure while converting responses to standard JSON that LLMs can easily process. -## Configuration - -### Environment Variables - -- `POLYGON_API_KEY` (required): Your Polygon.io API key - ## Development -### Building and Publishing +### Running Locally + +Check to ensure you have the [Prerequisites](#prerequisites) installed. ```bash # Sync dependencies uv sync -# Build package distributions -uv build +# Run the server +POLYGON_API_KEY=your_api_key_here uv run mcp_polygon ``` ### Debugging @@ -94,12 +135,18 @@ npx @modelcontextprotocol/inspector uv --directory /path/to/mcp_polygon run mcp_ This will launch a browser interface where you can interact with your MCP server directly and see input/output for each tool. -## License - -[License information] - ## Links - - [Polygon.io Documentation](https://polygon.io/docs) - [Model Context Protocol](https://modelcontextprotocol.io) - [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) + +## Contributing +If you found a bug or have an idea for a new feature, please first discuss it with us by submitting a new issue. +We will respond to issues within at most 3 weeks. +We're also open to volunteers if you want to submit a PR for any open issues but please discuss it with us beforehand. +PRs that aren't linked to an existing issue or discussed with us ahead of time will generally be declined. + + +[Link]: https://polygon.io 'Polygon.io Home Page' + +[Button]: https://img.shields.io/badge/Get_One_For_Free-5F5CFF?style=for-the-badge&logoColor=white diff --git a/assets/polygon_banner_darkmode.png b/assets/polygon_banner_darkmode.png new file mode 100644 index 0000000000000000000000000000000000000000..bf24123eb362b0e32534d99d2f868133f3d48a8a GIT binary patch literal 15066 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 literal 0 HcmV?d00001 diff --git a/assets/polygon_banner_lightmode.png b/assets/polygon_banner_lightmode.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba5f0e5d473ecaa9c6983b432114ad3dab51202 GIT binary patch literal 16056 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≠$6!h3Mu>&)Kz%KQt612%pGuVyIll=~Ab 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 literal 0 HcmV?d00001 From c5ae472eafdd113db4b2083c3f6007f9bc9e2285 Mon Sep 17 00:00:00 2001 From: DanStough Date: Wed, 16 Apr 2025 21:55:54 -0400 Subject: [PATCH 2/2] docs: add license --- LICENSE | 21 +++++++++++++++++++++ README.md | 4 +--- 2 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..bef45d5 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Polygon.io + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 32316b5..9da92be 100644 --- a/README.md +++ b/README.md @@ -33,9 +33,7 @@ This server exposes all Polygon.io API endpoints as MCP tools, providing access ### Prerequisites - Python 3.8+ -- A Polygon.io API key -
-[![Button]][Link] +- A Polygon.io API key
[![Button]][Link] - [Astral UV](https://docs.astral.sh/uv/getting-started/installation/) - For existing installs, check that you have a version that supports the `uvx` command.