Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

gopher-security-mcp Python SDK

Python SDK for gopher-security-mcp, providing AI agent orchestration with native C++ performance through ctypes FFI bindings.

Features

  • Python 3.8+ compatibility
  • pip/setuptools build system
  • ctypes FFI bindings to native library
  • GopherAgent class with builder pattern configuration
  • Context manager support for automatic resource cleanup
  • Typed errors (AgentError, ApiKeyError, ConnectionError, TimeoutError)
  • Comprehensive test suite with pytest

Requirements

  • Python 3.8 or higher
  • Native gopher-security-mcp library (built from source)

Installation

From Source

  1. Clone the repository:
git clone https://github.com/GopherSecurity/gopher-mcp-python.git
cd gopher-mcp-python
  1. Build the native library:
./build.sh
  1. Install the Python package:
pip install -e .

Quick Start

Using API Key

from gopher_security_mcp import GopherAgent, GopherAgentConfig

# Create configuration with API key
config = (GopherAgentConfig.builder()
    .provider("AnthropicProvider")
    .model("claude-3-haiku-20240307")
    .api_key("your-api-key")
    .build())

# Create and use agent with context manager
with GopherAgent.create(config) as agent:
    response = agent.run("What time is it in Tokyo?")
    print(response)

Using JSON Server Configuration

from gopher_security_mcp import GopherAgent, GopherAgentConfig

# Create configuration with server config
config = (GopherAgentConfig.builder()
    .provider("AnthropicProvider")
    .model("claude-3-haiku-20240307")
    .server_config('{"mcpServers": [...]}')
    .build())

# Create agent
agent = GopherAgent.create(config)
try:
    response = agent.run("What is the weather?")
    print(response)
finally:
    agent.dispose()

Using Convenience Methods

from gopher_security_mcp import GopherAgent

# Create with API key (shorthand)
agent = GopherAgent.create_with_api_key(
    provider="AnthropicProvider",
    model="claude-3-haiku-20240307",
    api_key="your-api-key"
)

# Or with server config
agent = GopherAgent.create_with_server_config(
    provider="AnthropicProvider",
    model="claude-3-haiku-20240307",
    server_config='{"mcpServers": [...]}'
)

Getting Detailed Results

from gopher_security_mcp import GopherAgent

with GopherAgent.create(config) as agent:
    result = agent.run_detailed("What time is it?")

    if result.is_success():
        print(f"Response: {result.response}")
        print(f"Iterations: {result.iteration_count}")
        print(f"Tokens used: {result.tokens_used}")
    elif result.is_timeout():
        print(f"Request timed out: {result.error_message}")
    else:
        print(f"Error: {result.error_message}")

API Reference

GopherAgent

Main class for interacting with the gopher-security-mcp native library.

Static Methods

  • GopherAgent.init() - Initialize the library (called automatically)
  • GopherAgent.shutdown() - Shutdown the library
  • GopherAgent.is_initialized() - Check if library is initialized
  • GopherAgent.create(config) - Create an agent with configuration
  • GopherAgent.create_with_api_key(provider, model, api_key) - Convenience method
  • GopherAgent.create_with_server_config(provider, model, server_config) - Convenience method

Instance Methods

  • agent.run(query, timeout_ms=60000) - Run a query and get response string
  • agent.run_detailed(query, timeout_ms=60000) - Run a query and get AgentResult
  • agent.dispose() - Release resources
  • agent.is_disposed() - Check if agent is disposed

GopherAgentConfig

Configuration class with builder pattern.

config = (GopherAgentConfig.builder()
    .provider("AnthropicProvider")  # Required
    .model("claude-3-haiku-20240307")  # Required
    .api_key("key")  # Either api_key or server_config required
    .server_config("{...}")  # Either api_key or server_config required
    .build())

AgentResult

Result class with status and metadata.

  • result.response - Response text
  • result.status - AgentResultStatus enum
  • result.iteration_count - Number of iterations
  • result.tokens_used - Tokens consumed
  • result.error_message - Error message (if applicable)
  • result.is_success() - Check if successful
  • result.is_error() - Check if error
  • result.is_timeout() - Check if timeout

Exceptions

  • AgentError - Base exception for agent errors
  • ApiKeyError - Invalid API key
  • ConnectionError - Connection failed
  • TimeoutError - Operation timed out

Development

Running Tests

pytest

Code Formatting

This project uses Black for code formatting and Ruff for linting.

Format code:

black .

Check formatting without modifying:

black --check .

Run linter:

ruff check .

Fix linting issues:

ruff check --fix .

Building the Native Library

./build.sh

Clean Build

./build.sh --clean

Environment Variables

  • GOPHER_SECURITY_MCP_LIBRARY_PATH - Custom path to native library
  • DEBUG - Enable debug output for library loading

License

See LICENSE file for details.

Metadata

Release files for gopher-security-mcp 0.1.0.dev20260227124047

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

Source distribution (sdist)

Source distribution for gopher-security-mcp 0.1.0.dev20260227124047
File Size Uploaded Provenance
gopher_security_mcp-0.1.0.dev20260227124047.tar.gz 19.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for gopher-security-mcp 0.1.0.dev20260227124047
File Interpreter ABI Platform
gopher_security_mcp-0.1.0.dev20260227124047-py3-none-any.whl Python 3 none any Details

Total release size: 37.4 kB

Release files / gopher_security_mcp-0.1.0.dev20260227124047.tar.gz

Download URL gopher_security_mcp-0.1.0.dev20260227124047.tar.gz
Size 19.5 kB
Tags Source
SHA-256 checksum
How to use checksums
d0e42f5ba60fa672ec26ac2c2a7f29a95dc48aa5ff996f8135f8d1b94784d1bb
BLAKE2b-256 checksum
How to use checksums
d1f093d8021ba76cf2aacad3e947fcd1877074da34cdf847add768cb66d7d609
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / gopher_security_mcp-0.1.0.dev20260227124047-py3-none-any.whl

Download URL gopher_security_mcp-0.1.0.dev20260227124047-py3-none-any.whl
Size 17.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
91cf5b2d0ff5f6d652f257e82206b95326f6ebf007dc67ddb323da253e10cd14
BLAKE2b-256 checksum
How to use checksums
ab9710d24a364d518d5db2dbaad1c132668e14de2b55f2fbc031daa081917c11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Security for gopher-security-mcp 0.1.0.dev20260227124047

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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