Skip to main content

solvemcp

It provides:

  • stdio transport for local subprocess servers.
  • Streamable HTTP transport for modern MCP servers.
  • Legacy HTTP+SSE fallback for older servers.
  • Dynamic Python callables for tools returned by tools/list.

Installation

pip install solvemcp

Quick Start

Connect to a local stdio server

from solvemcp import MCPClient
with MCPClient.stdio([sys.executable, "-u", "../tests/echoserver.py"]) as mcp:
    print(list(mcp.tools))
    res = mcp.echo(text="hello")
    print(res)
['echo']
{'content': [{'type': 'text', 'text': 'hello'}]}

Connect to an HTTP MCP server

with MCPClient.http("https://mcp.grep.app") as mcp:
    print(list(mcp.tools))
    res = mcp.searchGitHub(query="class PtyProcess", language=["Python"])
['searchGitHub']
mcp = MCPClient.http("https://mcp.grep.app")
print(list(mcp.tools))
res = mcp.searchGitHub(query="class PtyProcess", language=["Python"])
['searchGitHub']
mcp.searchGitHub?
def searchGitHub(
    query:Any, matchCase:Any=False, matchWholeWords:Any=False, useRegexp:Any=False, repo:Any=None, path:Any=None,
    language:list=None
):
Find real-world code examples from over a million public GitHub repositories to help answer programming questions.

**IMPORTANT: This tool searches for literal code patterns (like grep), not keywords. Search for actual code that would appear in files:**
- ✅ Good: 'useState(', 'import React from', 'async function', '(?s)try {.*await'
- ❌ Bad: 'react tutorial', 'best practices', 'how to use'

**When to use this tool:**
- When implementing unfamiliar APIs or libraries and need to see real usage patterns
- When unsure about correct syntax, parameters, or configuration for a specific library
- When looking for production-ready examples and best practices for implementation
- When needing to understand how different libraries or frameworks work together

**Perfect for questions like:**
- "How do developers handle authentication in Next.js apps?" → Search: 'getServerSession' with language=['TypeScript', 'TSX']
- "What are common React error boundary patterns?" → Search: 'ErrorBoundary' with language=['TSX']
- "Show me real useEffect cleanup examples" → Search: '(?s)useEffect\(\(\) => {.*removeEventListener' with useRegexp=true
- "How do developers handle CORS in Flask applications?" → Search: 'CORS(' with matchCase=true and language=['Python']

Use regular expressions with useRegexp=true for flexible patterns like '(?s)useState\(.*loading' to find useState hooks with loading-related variables. Prefix the pattern with '(?s)' to match across multiple lines.

Filter by language, repository, or file path to narrow results.

File: ~/aai-ws/toolslm/toolslm/funccall.py

Type: function

mcp.close()
cts = res['content']
print(len(cts))
10
print(cts[0]['text'][:500])
Repository: sedwards2009/extraterm
Path: extensions/ProxySessionBackend/src/python/ptyprocess/ptyprocess.py
URL: https://github.com/sedwards2009/extraterm/blob/master/extensions/ProxySessionBackend/src/python/ptyprocess/ptyprocess.py
License: MIT

Snippets:
--- Snippet 1 (Line 79) ---
            (intr, eof) = (3, 4)
    
    _INTR = _byte(intr)
    _EOF = _byte(eof)

class PtyProcessError(Exception):
    """Generic error class for this package."""

# setecho and setwinsize are pulled out here b

How Tool Calls Work

For each server tool with a valid Python identifier name, MCPClient adds a method dynamically. Example: a server tool named echo becomes mcp.echo(...).

Equivalent forms:

mcp.echo(text="hi")
mcp.call_tool("echo", text="hi")

Streaming

For Streamable HTTP servers, use rpc_stream or call_tool_stream:

for msg in mcp.rpc_stream("tools/list", params={}): print(msg)

Development

Module Layout

  • solvemcp/client.py: MCPClient request lifecycle, initialization, tool binding, and RPC helpers.
  • solvemcp/transports.py: transport implementations plus SSE parsers and error types.

Run tests:

python tests/tests.py

Release files for solvemcp 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for solvemcp 0.0.2
File Size Uploaded
solvemcp-0.0.2.tar.gz 18.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for solvemcp 0.0.2
File Interpreter ABI Platform
solvemcp-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 34.7 kB

Release files / solvemcp-0.0.2.tar.gz

Download URL solvemcp-0.0.2.tar.gz
Size 18.7 kB
Tags Source
SHA-256 checksum
How to use checksums
9d578cdd211b071855bee46c53effc1dd9a5a955837a2ebd8a2a4cc7b1a21372
BLAKE2b-256 checksum
How to use checksums
d11a013513402cccb58f7c3d9ab7b8e85eea53b415f0601ee57b9fde13f27b70
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.2

Release files / solvemcp-0.0.2-py3-none-any.whl

Download URL solvemcp-0.0.2-py3-none-any.whl
Size 16.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
81686150718df99b89a4def5ef67f9123ed3b699a4658cfbffc53721124f790d
BLAKE2b-256 checksum
How to use checksums
d59568a860dee91a46f3833261b90950737bcb5b121d8abbd2f148a887f6a45d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.2

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page