diff --git a/src/sqlite/README.md b/src/sqlite/README.md index 36b1958b..5e8e569e 100644 --- a/src/sqlite/README.md +++ b/src/sqlite/README.md @@ -37,12 +37,18 @@ The server offers six core tools: ## Installation ```bash -# Required: Python 3.10+ -python -m pip install mcp-sqlite-server - -# Run with default settings -mcp-sqlite-server - -# Run with custom database and Anthropic integration -mcp-sqlite-server --db-path ~/analysis.db --anthropic-key sk-xxx +# Add the server to your claude_desktop_config.json +"mcpServers": { + "sqlite": { + "command": "uv", + "args": [ + "--directory", + "parent_of_servers_repo/servers/src/sqlite", + "run", + "sqlite", + "--db-path", + "~/test.db" + ] + } + } ``` diff --git a/src/sqlite/pyproject.toml b/src/sqlite/pyproject.toml index 3934f119..b0b1b2b6 100644 --- a/src/sqlite/pyproject.toml +++ b/src/sqlite/pyproject.toml @@ -6,7 +6,6 @@ readme = "README.md" requires-python = ">=3.11" dependencies = [ "mcp>=0.9.1", - "anthropic>=0.39.0", ] [build-system] diff --git a/src/sqlite/src/sqlite/__init__.py b/src/sqlite/src/sqlite/__init__.py index 0a7591f7..d2246942 100644 --- a/src/sqlite/src/sqlite/__init__.py +++ b/src/sqlite/src/sqlite/__init__.py @@ -10,12 +10,9 @@ def main(): parser.add_argument('--db-path', default="./sqlite_mcp_server.db", help='Path to SQLite database file') - parser.add_argument('--anthropic-api-key', - default=os.environ.get('ANTHROPIC_API_KEY'), - help='Anthropic API key (can also be set via ANTHROPIC_API_KEY environment variable)') args = parser.parse_args() - asyncio.run(server.main(args.db_path, args.anthropic_api_key)) + asyncio.run(server.main(args.db_path)) # Optionally expose other important items at package level diff --git a/src/sqlite/src/sqlite/server.py b/src/sqlite/src/sqlite/server.py index ae7fb717..8836cf45 100644 --- a/src/sqlite/src/sqlite/server.py +++ b/src/sqlite/src/sqlite/server.py @@ -7,14 +7,12 @@ from mcp.server.models import InitializationOptions import mcp.types as types from mcp.server import NotificationOptions, Server, AnyUrl import mcp.server.stdio -from anthropic import Anthropic # Set up logging to file log_file = Path('mcp_server.log') handler = RotatingFileHandler(log_file, maxBytes=10*1024*1024, backupCount=5) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) - logger = logging.getLogger('mcp_sqlite_server') logger.setLevel(logging.DEBUG) logger.addHandler(handler) @@ -25,23 +23,6 @@ class McpServer(Server): """Initialize connection to the SQLite database""" logger.debug("Initializing database connection") with closing(sqlite3.connect(self.db_path)) as conn: -<<<<<<< HEAD - with closing(conn.cursor()) as cursor: - cursor.execute(""" - CREATE TABLE IF NOT EXISTS notes ( - name TEXT PRIMARY KEY, - content TEXT NOT NULL - ) - """) - # Add example note if table is empty - cursor.execute("SELECT COUNT(*) FROM notes") - if cursor.fetchone()[0] == 0: - cursor.execute( - "INSERT INTO notes (name, content) VALUES (?, ?)", - ("example", "This is an example note."), - ) - conn.commit() -======= conn.row_factory = sqlite3.Row conn.close() @@ -53,81 +34,17 @@ class McpServer(Server): insights = "\n".join(f"- {insight}" for insight in self.insights) - if self.anthropic_api_key is None: - memo = "📊 Business Intelligence Memo 📊\n\n" - memo += "Key Insights Discovered:\n\n" - memo += insights - - if len(self.insights) > 1: - memo += "\nSummary:\n" - memo += f"Analysis has revealed {len(self.insights)} key business insights that suggest opportunities for strategic optimization and growth." - - logger.debug("Generated basic memo format") - return memo - else: - try: - logger.debug("Requesting memo generation from Anthropic") - prompt = """ - You are tasked with summarizing a set of business insights into a formal business memo. The insights are typically 1-2 sentences each and cover various aspects of the business. Your goal is to create a concise, well-organized memo that effectively communicates these insights to the recipient. ->>>>>>> 67b071f (new SQLite server for demo and Getting started guide. Added contributing.md and pull_request_template.md) + memo = "📊 Business Intelligence Memo 📊\n\n" + memo += "Key Insights Discovered:\n\n" + memo += insights + + if len(self.insights) > 1: + memo += "\nSummary:\n" + memo += f"Analysis has revealed {len(self.insights)} key business insights that suggest opportunities for strategic optimization and growth." + + logger.debug("Generated basic memo format") + return memo - Here are the business insights you need to summarize: - - - {insights} - - -<<<<<<< HEAD - def _add_note(self, name: str, content: str): - """Helper method to add or update a note in the database""" - with closing(sqlite3.connect(self.db_path)) as conn: - with closing(conn.cursor()) as cursor: - cursor.execute( - "INSERT OR REPLACE INTO notes (name, content) VALUES (?, ?)", - (name, content), -======= - To create the memo, follow these steps: - - 1. Review all the insights carefully. - 2. Group related insights together under appropriate subheadings. - 3. Summarize each group of insights into 1-2 concise paragraphs. - 4. Ensure the memo flows logically from one point to the next. - 5. Use professional language and maintain a formal tone throughout the memo. - - Format the memo using these guidelines: - - Single-space the content, with a blank line between paragraphs - - Use bullet points or numbered lists where appropriate - - Keep the entire memo to one page if possible, two pages maximum - - Write your final memo within tags. Ensure that all components of the memo are included and properly formatted. - """.format(insights=insights) - message = self.anthropic_client.messages.create( - max_tokens=4096, - messages=[ - { - "role": "user", - "content": prompt - }, - { - "role": "assistant", - "content": "" - } - ], - model="claude-3-sonnet-20240229", - stop_sequences=[""], ->>>>>>> 67b071f (new SQLite server for demo and Getting started guide. Added contributing.md and pull_request_template.md) - ) - logger.debug("Successfully received memo from Anthropic") - return message.content[0].text.strip() - except Exception as e: - logger.error(f"Error generating memo with Anthropic: {e}") - return insights - -<<<<<<< HEAD - def __init__(self): - super().__init__("sqlite") - -======= def _execute_query(self, query: str, params=None) -> list[dict]: """Execute a SQL query and return results as a list of dictionaries""" logger.debug(f"Executing query: {query}") @@ -153,22 +70,16 @@ class McpServer(Server): logger.error(f"Database error executing query: {e}") raise - def __init__(self, db_path: str = "~/sqlite_mcp_server.db", anthropic_api_key: str | None = None): + def __init__(self, db_path: str = "~/sqlite_mcp_server.db"): logger.info("Initializing McpServer") super().__init__("sqlite-manager") ->>>>>>> 67b071f (new SQLite server for demo and Getting started guide. Added contributing.md and pull_request_template.md) # Initialize SQLite database self.db_path = str(Path(db_path).expanduser()) Path(self.db_path).parent.mkdir(parents=True, exist_ok=True) self._init_database() logger.debug(f"Initialized database at {self.db_path}") - # Initialize Anthropic API key - self.anthropic_api_key = anthropic_api_key - if anthropic_api_key: - self.anthropic_client = Anthropic(api_key=anthropic_api_key) - logger.debug("Initialized Anthropic client") # Initialize insights list self.insights = [] @@ -181,7 +92,7 @@ class McpServer(Server): logger.debug("Handling list_resources request") return [ types.Resource( - uri=AnyUrl("memo://insights"), # Changed from memo:///insights + uri=AnyUrl("memo://insights"), name="Business Insights Memo", description="A living document of discovered business insights", mimeType="text/plain", @@ -195,7 +106,7 @@ class McpServer(Server): logger.error(f"Unsupported URI scheme: {uri.scheme}") raise ValueError(f"Unsupported URI scheme: {uri.scheme}") - path = str(uri).replace("memo://", "") # Changed to match new URI format + path = str(uri).replace("memo://", "") if not path or path != "insights": logger.error(f"Unknown resource path: {path}") raise ValueError(f"Unknown resource path: {path}") @@ -225,22 +136,6 @@ class McpServer(Server): if name != "mcp-demo": logger.error(f"Unknown prompt: {name}") raise ValueError(f"Unknown prompt: {name}") -<<<<<<< HEAD - notes = ( - "\n" - + "\n".join( - f"\n{content}\n" - for name, content in self._get_notes().items() - ) - + "\n" - ) - style = (arguments or {}).get("style", "simple") - prompt = """ - Your task is to provide a summary of the notes provided below. - {notes} - Ensure that the summary is in {style} style. - """.format(notes=notes, style=style) -======= if not arguments or "topic" not in arguments: logger.error("Missing required argument: topic") @@ -329,7 +224,6 @@ class McpServer(Server): """.format(topic=topic) logger.debug(f"Generated prompt template for topic: {topic}") ->>>>>>> 67b071f (new SQLite server for demo and Getting started guide. Added contributing.md and pull_request_template.md) return types.GetPromptResult( description=f"Demo template for {topic}", messages=[ @@ -438,7 +332,7 @@ class McpServer(Server): memo = self._synthesize_memo() # Notify clients that the memo resource has changed - await self.request_context.session.send_resource_updated("memo://insights") # Changed from memo:///insights + await self.request_context.session.send_resource_updated("memo://insights") return [types.TextContent(type="text", text="Insight added to memo")] if not arguments: @@ -470,9 +364,9 @@ class McpServer(Server): except Exception as e: return [types.TextContent(type="text", text=f"Error: {str(e)}")] -async def main(db_path: str, anthropic_api_key: str | None = None): +async def main(db_path: str): logger.info(f"Starting SQLite MCP Server with DB path: {db_path}") - server = McpServer(db_path, anthropic_api_key) + server = McpServer(db_path) async with mcp.server.stdio.stdio_server() as (read_stream, write_stream): logger.info("Server running with stdio transport") @@ -485,8 +379,7 @@ async def main(db_path: str, anthropic_api_key: str | None = None): capabilities=server.get_capabilities( notification_options=NotificationOptions(), experimental_capabilities={ - "anthropic_api_key": {"key": anthropic_api_key} - } if anthropic_api_key else {}, + }, ), ), ) diff --git a/src/sqlite/uv.lock b/src/sqlite/uv.lock index 0b738fa3..fc36f073 100644 --- a/src/sqlite/uv.lock +++ b/src/sqlite/uv.lock @@ -10,24 +10,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, ] -[[package]] -name = "anthropic" -version = "0.39.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "distro" }, - { name = "httpx" }, - { name = "jiter" }, - { name = "pydantic" }, - { name = "sniffio" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/79/02/2ea51930009d7537c4648f51d1bb3202ec76704cbb39a2a863ab38bee3dd/anthropic-0.39.0.tar.gz", hash = "sha256:94671cc80765f9ce693f76d63a97ee9bef4c2d6063c044e983d21a2e262f63ba", size = 189339 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/94/61/2580eaa171cab20708d59d39cadd15f78a6c617759e8d0a12e18fe3302d1/anthropic-0.39.0-py3-none-any.whl", hash = "sha256:ea17093ae0ce0e1768b0c46501d6086b5bcd74ff39d68cd2d6396374e9de7c09", size = 198392 }, -] - [[package]] name = "anyio" version = "4.6.2.post1" @@ -71,15 +53,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, ] -[[package]] -name = "distro" -version = "1.9.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3/distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed", size = 60722 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277 }, -] - [[package]] name = "h11" version = "0.14.0" @@ -136,50 +109,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, ] -[[package]] -name = "jiter" -version = "0.7.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/46/e5/50ff23c9bba2722d2f0f55ba51e57f7cbab9a4be758e6b9b263ef51e6024/jiter-0.7.1.tar.gz", hash = "sha256:448cf4f74f7363c34cdef26214da527e8eeffd88ba06d0b80b485ad0667baf5d", size = 162334 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/26/e5/18b30b3015ae1df916cadd42b428f9a47a7277a52b041e4caf939e6c3c21/jiter-0.7.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ad04a23a91f3d10d69d6c87a5f4471b61c2c5cd6e112e85136594a02043f462c", size = 291198 }, - { url = "https://files.pythonhosted.org/packages/7d/e3/a70e5b98602d24c617e829d6714b3e4f7f9912fdc2844682653dafb5eba0/jiter-0.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e47a554de88dff701226bb5722b7f1b6bccd0b98f1748459b7e56acac2707a5", size = 303513 }, - { url = "https://files.pythonhosted.org/packages/34/35/c44064c12e2d189dd3a6135e3b4f9f64167d81abada4eeb0dd75313ad9ad/jiter-0.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e44fff69c814a2e96a20b4ecee3e2365e9b15cf5fe4e00869d18396daa91dab", size = 328470 }, - { url = "https://files.pythonhosted.org/packages/de/88/55747df3d3472a08d25ab59752cc7a2682c9bfb38d8dbe00d5fadc35ae49/jiter-0.7.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df0a1d05081541b45743c965436f8b5a1048d6fd726e4a030113a2699a6046ea", size = 347484 }, - { url = "https://files.pythonhosted.org/packages/8e/f6/afa8d156b7c166dceae66e01d0aa9933f7c3afcc5af3901e717237e5b98c/jiter-0.7.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f22cf8f236a645cb6d8ffe2a64edb5d2b66fb148bf7c75eea0cb36d17014a7bc", size = 373483 }, - { url = "https://files.pythonhosted.org/packages/b7/ab/38c652c71bfd7a8e00fc0962a6985186e9741cfd9dde00a0d8c0138a9c07/jiter-0.7.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da8589f50b728ea4bf22e0632eefa125c8aa9c38ed202a5ee6ca371f05eeb3ff", size = 390563 }, - { url = "https://files.pythonhosted.org/packages/62/02/1dacf3b95d13f36298a261723c52b45701db485ee104f7677cb931697395/jiter-0.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f20de711224f2ca2dbb166a8d512f6ff48c9c38cc06b51f796520eb4722cc2ce", size = 325508 }, - { url = "https://files.pythonhosted.org/packages/b9/a8/ac3509099030304b28c226b432347f5420297e8bec4cb1f27f716a4f23cf/jiter-0.7.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8a9803396032117b85ec8cbf008a54590644a062fedd0425cbdb95e4b2b60479", size = 365355 }, - { url = "https://files.pythonhosted.org/packages/92/fe/85fc2dd31473bf71b1e78311d09bb1f90211b5b327b9b884684d45e9ae48/jiter-0.7.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3d8bae77c82741032e9d89a4026479061aba6e646de3bf5f2fc1ae2bbd9d06e0", size = 514802 }, - { url = "https://files.pythonhosted.org/packages/06/8c/fa1f8b98618b476c346ad57e9eb85293cd2acd7680926b2f27f884c7aebc/jiter-0.7.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3dc9939e576bbc68c813fc82f6620353ed68c194c7bcf3d58dc822591ec12490", size = 497983 }, - { url = "https://files.pythonhosted.org/packages/ee/13/0e726eaee6c5dcd14582d28e90a1381ff4ab1c6b583e597f4e0d4a0950bd/jiter-0.7.1-cp311-none-win32.whl", hash = "sha256:f7605d24cd6fab156ec89e7924578e21604feee9c4f1e9da34d8b67f63e54892", size = 198800 }, - { url = "https://files.pythonhosted.org/packages/2b/30/6a79fd25f36660cec4fb46c5fd0d52375584fdc7a874889b24111cb666af/jiter-0.7.1-cp311-none-win_amd64.whl", hash = "sha256:f3ea649e7751a1a29ea5ecc03c4ada0a833846c59c6da75d747899f9b48b7282", size = 203785 }, - { url = "https://files.pythonhosted.org/packages/10/b3/de89eae8f57dc0ee5f6e3aa1ffcdee0364ef9ef85be81006fd17d7710ffa/jiter-0.7.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ad36a1155cbd92e7a084a568f7dc6023497df781adf2390c345dd77a120905ca", size = 291900 }, - { url = "https://files.pythonhosted.org/packages/c0/ff/0d804eff4751fceeabc6311d4b07e956daa06fa58f05931887dc7454466b/jiter-0.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7ba52e6aaed2dc5c81a3d9b5e4ab95b039c4592c66ac973879ba57c3506492bb", size = 304390 }, - { url = "https://files.pythonhosted.org/packages/e8/26/c258bef532d113a7ac26242893fc9760040a4846dec731098b7f5ac3fca7/jiter-0.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b7de0b6f6728b678540c7927587e23f715284596724be203af952418acb8a2d", size = 328710 }, - { url = "https://files.pythonhosted.org/packages/71/92/644dc215cbb9816112e28f3b43a8c8e769f083434a05fc3afd269c444f51/jiter-0.7.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9463b62bd53c2fb85529c700c6a3beb2ee54fde8bef714b150601616dcb184a6", size = 347569 }, - { url = "https://files.pythonhosted.org/packages/c6/02/795a3535262c54595bd97e375cc03b443717febb37723a7f9c077049825b/jiter-0.7.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:627164ec01d28af56e1f549da84caf0fe06da3880ebc7b7ee1ca15df106ae172", size = 373641 }, - { url = "https://files.pythonhosted.org/packages/7d/35/c7e9a06a49116e3618954f6c8a26816a7959c0f9e5617b0073e4145c5d6d/jiter-0.7.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:25d0e5bf64e368b0aa9e0a559c3ab2f9b67e35fe7269e8a0d81f48bbd10e8963", size = 388828 }, - { url = "https://files.pythonhosted.org/packages/fb/05/894144e4cbc1b9d46756db512268a90f84fc1d8bd28f1a17e0fef5aaf5c5/jiter-0.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c244261306f08f8008b3087059601997016549cb8bb23cf4317a4827f07b7d74", size = 325511 }, - { url = "https://files.pythonhosted.org/packages/19/d3/e6674ac34de53787504e4fb309084f824df321f24113121d94bf53808be3/jiter-0.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7ded4e4b75b68b843b7cea5cd7c55f738c20e1394c68c2cb10adb655526c5f1b", size = 365940 }, - { url = "https://files.pythonhosted.org/packages/e9/ca/c773f0ce186090cc69a2c97b8dab3dad14ae9988a657a20d879458a8407e/jiter-0.7.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:80dae4f1889b9d09e5f4de6b58c490d9c8ce7730e35e0b8643ab62b1538f095c", size = 515430 }, - { url = "https://files.pythonhosted.org/packages/16/5f/c98f6e6362fbc7c87ad384ba8506983fca9bb55ea0af7efcb23e7dd22817/jiter-0.7.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5970cf8ec943b51bce7f4b98d2e1ed3ada170c2a789e2db3cb484486591a176a", size = 497389 }, - { url = "https://files.pythonhosted.org/packages/30/60/f60e12469afc9096bac3df0fda53de707ed5105d84322a0d1bc4ad03ee3e/jiter-0.7.1-cp312-none-win32.whl", hash = "sha256:701d90220d6ecb3125d46853c8ca8a5bc158de8c49af60fd706475a49fee157e", size = 198546 }, - { url = "https://files.pythonhosted.org/packages/01/d2/d8ec257544f7991384a46fccee6abdc5065cfede26354bb2c86251858a92/jiter-0.7.1-cp312-none-win_amd64.whl", hash = "sha256:7824c3ecf9ecf3321c37f4e4d4411aad49c666ee5bc2a937071bdd80917e4533", size = 202792 }, - { url = "https://files.pythonhosted.org/packages/b5/cf/00a93a9968fc21b9ecfcabb130a8c822138594ac4a00b7bff9cbb38daa7f/jiter-0.7.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:097676a37778ba3c80cb53f34abd6943ceb0848263c21bf423ae98b090f6c6ba", size = 291039 }, - { url = "https://files.pythonhosted.org/packages/22/9a/0eb3eddffeca703f6adaaf117ba93ac3336fb323206259a86c2993cec9ad/jiter-0.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3298af506d4271257c0a8f48668b0f47048d69351675dd8500f22420d4eec378", size = 302468 }, - { url = "https://files.pythonhosted.org/packages/b1/95/b4da75e93752edfd6dd0df8f7723a6575e8a8bdce2e82f4458eb5564936a/jiter-0.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12fd88cfe6067e2199964839c19bd2b422ca3fd792949b8f44bb8a4e7d21946a", size = 328401 }, - { url = "https://files.pythonhosted.org/packages/28/af/7fa53804a2e7e309ce66822c9484fd7d4f8ef452be3937aab8a93a82c54b/jiter-0.7.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dacca921efcd21939123c8ea8883a54b9fa7f6545c8019ffcf4f762985b6d0c8", size = 347237 }, - { url = "https://files.pythonhosted.org/packages/30/0c/0b89bd3dce7d330d8ee878b0a95899b73e30cb55d2b2c41998276350d4a0/jiter-0.7.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de3674a5fe1f6713a746d25ad9c32cd32fadc824e64b9d6159b3b34fd9134143", size = 373558 }, - { url = "https://files.pythonhosted.org/packages/24/96/c75633b99d57dd8b8457f88f51201805c93b314e369fba69829d726bc2a5/jiter-0.7.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65df9dbae6d67e0788a05b4bad5706ad40f6f911e0137eb416b9eead6ba6f044", size = 388251 }, - { url = "https://files.pythonhosted.org/packages/64/39/369e6ff198003f55acfcdb58169c774473082d3303cddcd24334af534c4e/jiter-0.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ba9a358d59a0a55cccaa4957e6ae10b1a25ffdabda863c0343c51817610501d", size = 325020 }, - { url = "https://files.pythonhosted.org/packages/80/26/0c386fa233a78997db5fa7b362e6f35a37d2656d09e521b0600f29933992/jiter-0.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:576eb0f0c6207e9ede2b11ec01d9c2182973986514f9c60bc3b3b5d5798c8f50", size = 365211 }, - { url = "https://files.pythonhosted.org/packages/21/4e/bfebe799924a39f181874b5e9041b792ee67768a8b160814e016a7c9a40d/jiter-0.7.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:e550e29cdf3577d2c970a18f3959e6b8646fd60ef1b0507e5947dc73703b5627", size = 514904 }, - { url = "https://files.pythonhosted.org/packages/a7/81/b3c72c6691acd29cf707df1a0b300e6726385b3c1ced8dc20424c4452699/jiter-0.7.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:81d968dbf3ce0db2e0e4dec6b0a0d5d94f846ee84caf779b07cab49f5325ae43", size = 497102 }, - { url = "https://files.pythonhosted.org/packages/1e/c3/766f9ec97df0441597878c7949da2b241a12a381c3affa7ca761734c8c74/jiter-0.7.1-cp313-none-win32.whl", hash = "sha256:f892e547e6e79a1506eb571a676cf2f480a4533675f834e9ae98de84f9b941ac", size = 198119 }, - { url = "https://files.pythonhosted.org/packages/76/01/cbc0136784a3ffefb5ca5326f8167780c5c3de0c81b6b81b773a973c571e/jiter-0.7.1-cp313-none-win_amd64.whl", hash = "sha256:0302f0940b1455b2a7fb0409b8d5b31183db70d2b07fd177906d83bf941385d1", size = 199236 }, -] - [[package]] name = "mcp" version = "0.9.1" @@ -278,15 +207,11 @@ name = "sqlite" version = "0.1.0" source = { editable = "." } dependencies = [ - { name = "anthropic" }, { name = "mcp" }, ] [package.metadata] -requires-dist = [ - { name = "anthropic", specifier = ">=0.39.0" }, - { name = "mcp", specifier = ">=0.9.1" }, -] +requires-dist = [{ name = "mcp", specifier = ">=0.9.1" }] [[package]] name = "sse-starlette"